カテゴリー別アーカイブ: ガジェット

Gadget

Raspberry Pi用にPhantomJS 2.1.1をビルドしてみました

Raspberry Pi用にPhantomJS 2.1.1をビルドしてみました。その他のarmhfアーキテクチャのマシンでも動くと思います。

https://www.scaleway.com/ のARM VPSにDebianをインストールしてビルドしました。ビルド方法は ここ に忠実に従いました。

https://github.com/mecrazy/phantomjs-binaries からダウンロードしてください。
( Pull requestが通れば”https://github.com/avaynshtok/phantomjs-binaries”に書き換える予定です )

個人的にはRaspberry Piを各種サーバアプリのテストに使っていてWEBスクレイピングもその一つです。でもPhantomJSのarmhf用のバイナリがWEB上になかったのでビルドしてみました。欲しい方は使ってください。ただし、くれぐれも自己責任でお願いします。

< "PhantomJS"とは? >
PhantomJSとはJavaScript APIによるWEBスクレイピングツールです。PDFやPNGやその他いくつかの形式でWEB画面のキャプチャーが可能です。PhantomJSについてもっと詳しく知りたいという方は http://phantomjs.org/ をチェックしてみてください。

初期のPibow zeroはRaspberry Pi Zero V1.3とサイズが合わない件

Pibow zeroをRaspberry Pi Zero用に購入する方は、必ず両方のバージョンを確認してください!

Raspberry Pi Zero買ったんですよ。
rpi_zero
合わせてZero用のPibowケースも。
pibow_and_rpi_zero

でもサイズ合ってないよコレ!!
pibow_not_fit

Raspberry Pi Zeroのこの突起が邪魔してる。
rpi_zero_connector

Raspberry Pi Zeroをよく見るとね
rpi_zero_version
“V1.3″って何さ!

やっちまったよ。

“pibow zero 1.3″でググったら見つけたし …
pibow_1.3

買い直しましたわ…..

みなさん私と同じようにならないよう気をつけて下さい …..

nginxのリバースプロキシをRaspberry Piで使用

< インストール準備 >
このページの手順を進めるにはDebian wheezyのマシンが必要です。Raspberry Piに特化した内容ではありません。

< なぜRaspberry Piか >
リバースプロキシは単純な機能です。基本的には一般的なバソコンやサーバマシンにとっては軽すぎるタスクと思います。Raspberry Piはパワフルなマシンではありませんが、省エネかつ非常に安く、世界中の誰もが購入可能で、リバースプロキシには十分なマシンです。こういった理由から自分はRaspberry Piをリバースプロキシに使用しています。

< nginxのインストール >
以下のコマンドを実行してください。

apt-get install nginx

以上です。

< 設定ファイルの編集 >
標準設定ファイルを編集します。

nano /etc/nginx/sites-available/default

私の “/etc/nginx/sites-available/default” はこんな感じです。

server {
listen 80;
server_name mydomain.net;

location / {
proxy_pass http://127.0.0.1:8080;
}
}

この設定では “mydomain.net” へのアクセスを同Raspberry Pi内の8080番ポートへ転送しています。

< プロキシ設定ファイルの追加 >
プロキシ設定ファイルを追加します。

nano /etc/nginx/conf.d/proxy.conf

私の “/etc/nginx/conf.d/proxy.conf” はこんな感じです。

# Header
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

# Timeout
proxy_connect_timeout 60;
proxy_read_timeout 90;
proxy_send_timeout 60;

# Buffer
proxy_buffering on;
proxy_buffer_size 8k;
proxy_buffers 100 8k;

# Cache
proxy_cache_path /var/cache/nginx/mydomain.net levels=1:2 keys_zone=cache_$
proxy_temp_path /var/cache/nginx/temp;

proxy_cache_valid 200 2h;
proxy_cache_valid 302 2h;
proxy_cache_valid 301 4h;
proxy_cache_valid any 1m;

また、root権限でキャッシュディレクトリを作成します。

mkdir /var/cache/nginx

< nginxの開始 >

service nginx start

どうでしたでしょうか?簡単だったでしょうか?

Raspberry Piでbochsを動かしてみました

< x86 on ARM >
とりあえずDOSをRaspberry Pi上のDebian wheezyで動かしてみます。
( Windows95も動くとは思いますがかなり遅いと思うので )

< “bochs” のインストール >
チョー簡単です。
こんな感じです。

root@myhost:~# apt-get install bochs bochs-x bochs-sdl bochs-svga

< ハードディスクイメージの生成 >
Raspberry Pi上で “bximage” を実行します。
非rootユーザでの実行を推奨します。
bochsを使用する予定のユーザで実行することをお勧めします。
こちらが自分が2GBで作成したときのサンプルです。

$ bximage
========================================================================
                                bximage
                  Disk Image Creation Tool for Bochs
        $Id: bximage.c,v 1.34 2009/04/14 09:45:22 sshwarts Exp $
========================================================================
Do you want to create a floppy disk image or a hard disk image?
Please type hd or fd. [hd]
What kind of image should I create?
Please type flat, sparse or growing. [flat]
Enter the hard disk size in megabytes, between 1 and 129023
[10] 
2048
I will create a ‘flat’ hard disk image with
  cyl=4161
  heads=16
  sectors per track=63
  total sectors=4194288
  total size=2047.99 megabytes
What should I name the image?
[c.img] 
msdoshdd.img
Writing: [] Done.
I wrote 2147475456 bytes to msdoshdd.img.
The following line should appear in your bochsrc:
  
ata0-master: type=disk, path=”msdoshdd.img”, mode=flat, cylinders=4161, heads=16, spt=63

“bximage” によると 「 “
ata0-master: type=disk, path=”msdoshdd.img”, mode=flat, cylinders=4161, heads=16, spt=63” を “.bochsrc” に追加してね 」 とのことです。

< MS-DOS用の”.bochsrc”を作成 >
ホームディレクトリへ移動します。
私の場合テキストエディタにはnanoを使用しています。

$ cd /home/username
$ nano .bochsrc

私の”.bochsrc”はこんな感じです。

megs: 64
romimage: file=$BXSHARE/BIOS-bochs-latest
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
display_library: sdl
ata0-master: type=disk, path=/home/username/msdoshdd.img, mode=flat, cylinders=4161, heads=16, spt=63
ata0-slave: type=cdrom, path=/home/username/MS-DOS-6.22.iso, status=inserted
boot: cdrom, disk
#keyboard_mapping: enabled=1, map=/usr/share/bochs/keymaps/x11-pc-us.map
log: bochsout.txt
clock: sync=realtime, time0=local

“MS-DOS-6.22.iso”は私が使用したMS-DOSの起動イメージファイルです。これをあなたが持っている他のブータブルISOファイルに書き換えてください。私の場合”.bochsrc”ではマウスは未設定です。 マウスを使用したい場合はググるなりして”.bochsrc”を編集してください。

< VNCのインストール >
HDMIディスプレイを使用する場合はこのステップは関係ありません。
ディスプレイを使用しない場合はRaspberry Pi上のXへリモートログインするためにVNC serverをインストールする必要があります。
以下のコマンドをrootで実行してください。

root@myhost:~# apt-get install tightvncserver

以下のコマンドをbochsを使用するユーザで実行してください。

$ vncserver :1 -geometry 1024×768 -depth 24
You will require a password to access your desktops.
Password:
Verify:
Would you like to enter a view-only password (y/n)? 
n
New ‘X’ desktop is myhost:1

“:1″ はポート “5901″ を意味し、
“-geometry 1024×768″ は解像度を意味し、
“-depth 24″ は色数のビット指定を意味します。

< bochsの実装 >
Raspberry Pi上のVNC serverに接続します。 ( ディスプレイを使用の場合は “startx” を実行してください )
ターミナルを起動します。 ( 例. LXTerminal )
ターミナルでbochsを実行します。

$ bochs

bochsがときどきこんな感じで確認してくるかもしれません。

A PANIC has occurred.  Do you want to:
  cont       – continue execution
  alwayscont – continue execution, and don’t ask again.
               This affects only PANIC events from device [MEM0 ]
  die        – stop execution now
  abort      – dump core
  debug      – hand control to gdb

私はいつも “alwayscont” と答えています。

< 正直なところ >
Windows95をインストールしようとしましたが、DOSの起動ディスクやWindows3.1のディスクが必要でした。( 自分のWindows95がアップグレードバージョンだったため ) さすがに面倒だったためDOSインストールまででやめてしまったというわけです。

LS-XHLのwheezy化

LS-XHLをwheezy化したので手順を載せておこうかと思います。基本的には
http://www.zorac.org/wp/?p=447
を参考にさせて頂きました。

実施の際はくれぐれも自己責任でお願いします。
ここに記載した内容を実行したことによるいかなるトラブル/故障/データ消失にも当方は責任はもてませんのであしからず。

英語がイケるかたはこちらも参考にして頂くといいかもしれません。
Buffalo NAS-Central Forums • View topic – LS-CHLv2 – LS-XHL – Debian Wheezy Rootfs – Update 2013.05.15

< 必要なものなど >
1. LS-XHL本体 ( LS-VLシリーズだとネットワーク周りの設定が違うだけとの話です )
2. Debian Wheezy Rootfs
3. ARMアーキテクチャのDebianまたはUbuntuマシン ( 非ARM向けの手順も記載していますが自分は試していません )
4. USB-HDDケース ( インストール時に 3 に接続できればいいので内部SATA接続などであれば不要 )

手順はなるべくARMと非ARMで共通になるように書いていますが、私自身はARMでしか試していませんのでご注意ください。

< ハマりどころ >
●パーティション作成をGpartedでやるとなぜかうまく起動しなくなる。
●chrootを使用した手順はARMマシン(同じアーキテクチャ)でしか動作しない。
こんなとこですね。

< ステップ 1 – LS-XHLの分解 >
本体の分解はYoutubeにわかりやすい動画があるので参考にして下さい。

< ステップ 2 – HDDのパーティショニング&初期化 >
Linuxマシンを起動します。( 私の環境ではRaspberry Pi上のDebian wheezyです )
rootでログインします。
partedがインストールされていない場合は

apt-get install parted

としてインストールします。
LS-XHL用Debianのインストール先HDDをLinuxマシンにUSBなどで接続し、パーティションを確認します。HDDが /dev/sda とすると

parted /dev/sda print

とするとHDD情報が表示されます。自分の場合、

Model: ATA Hitachi HDS72202 (scsi)
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/512B

のような感じでした。
肝心なのは “Disk /dev/sda: 2000GB” です。
この “2000GB” がご自分の環境でどんな値になっているか覚えておいてください。
パーティションを切ります。

parted /dev/sda mklabel gpt
parted -a cylinder /dev/sda mkpart primary 0 511
parted -a cylinder /dev/sda mkpart primary 511 8191
parted -a cylinder /dev/sda mkpart primary 8191 9215
parted -a cylinder /dev/sda mkpart primary 9215 2000G
parted /dev/sda set 1 boot on

“/dev/sda1″ を “/boot” に
“/dev/sda2″ を “/” に
“/dev/sda3″ をスワップに
“/dev/sda4″ を “/home” に
設定するつもりの切り方です。

コマンド中の最後のパーティション設定の “parted -a cylinder /dev/sda mkpart primary 9215 2000G” のところの “2000G” は先ほど “parted /dev/sda print” で確認した値に置き換えてください。それぞれのパーティションのサイズもご自分の環境にあわせてお好みのサイズにしてください。ではパーティションをフォーマットします。

mke2fs -I 128 -j /dev/sda1
mke2fs -j -t ext4 /dev/sda2
mkswap /dev/sda3
mke2fs -j -t ext4 /dev/sda4

マウントします。

mount /dev/sda2 /mnt
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot

< ステップ 3 – Rootfs展開 >
作業用フォルダに移動します。 /tmp などがいいかと思います。
でもってhttp://neboola.de/fjen/lschlv2/debian/wheezy/ から
debian_wheezy_rootfs_lschlv2-lsxhl_20130515.tar.xz
をダウンロードします。

cd /tmp
wget http://neboola.de/fjen/lschlv2/debian/wheezy/debian_wheezy_rootfs_lschlv2-lsxhl_20130515.tar.xz

これを展開します。

tar Jxvf debian_wheezy_rootfs_lschlv2-lsxhl_20130515.tar.xz -C /mnt

“/mnt/boot” に移動して “uImage.buffalo.3.9.2-fjen-1.lsxhl” をダウンロードします。

cd /mnt/boot
wget http://neboola.de/fjen/lschlv2/debian/wheezy/lsxhl-kernel-for-20130515/uImage.buffalo.3.9.2-fjen-1.lsxhl

< ステップ 4 – 設定変更 >
/mnt/etc/fstab
/mnt/etc/network/interfaces
/mnt/etc/resolv.conf
/mnt/etc/hostname
/mnt/etc/hosts
をそれぞれ自分の環境にあわせて修正します。

私の環境では “/mnt/etc/fstab” はこんな感じに修正しました。

/dev/sda1       /boot         ext3     noauto,noatime         1 2
/dev/sda2       /             ext4     noatime                0 1
/dev/sda3       none          swap     sw                     0 0
/dev/sda4       /home         ext4     noatime                0 0
proc            /proc         proc     defaults               0 0
shm             /dev/shm      tmpfs    nodev,nosuid,noexec    0 0
devpts          /dev/pts      devpts   gid=4,mode=620         0 0
#tmpfs           /tmp          tmpfs    defaults               0 0
sysfs           /sys          sysfs    defaults               0 0

でもって “/mnt/etc/network/interfaces” はこんな風にしました。

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet static
  address 192.168.1.101
  netmask 255.255.255.0
  network 192.168.1.0
  broadcast 192.168.1.255
  gateway 192.168.1.1

これはLinkstationのIPを “192.168.1.101″ にして
ルータが “192.168.1.1″ の場合の設定です。
LS-VLは持っていませんが eth1 が無く eth0 を使用するとのことなので、

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
  address 192.168.1.101
  netmask 255.255.255.0
  network 192.168.1.0
  broadcast 192.168.1.255
  gateway 192.168.1.1

的な感じになるのではないでしょうか。
“/mnt/etc/resolv.conf” は

domain linkstation
search linkstation
nameserver 8.8.8.8
nameserver 8.8.4.4

としましたが、まぁお好みで修正しちゃってください。
あとは
“/mnt/etc/hostname” は “linkstation” とし、
“/mnt/etc/hosts” は特に修正しませんでしたが、
このへんもお好みでどうぞ。

< ステップ 5 – chroot作業 >
chrootで作業しますが、これはARMマシンのLinuxで作業している場合のみ可能です。

chroot /mnt

ARMマシンが無い場合やchrootがうまくいかない場合は未検証ですが ステップ 6 に進んでください。chrootがうまくいった場合は以下のコマンドを実施します。

cd /boot
mv uImage.buffalo uImage.buffalo.bk
ln -s uImage.buffalo.3.9.2-fjen-1.lsxhl uImage.buffalo

< ステップ 6 – chrootできない場合 >
動作確認はしていませんが、

cd /mnt/boot
mv uImage.buffalo uImage.buffalo.bk
mv uImage.buffalo.3.9.2-fjen-1.lsxhl uImage.buffalo

としてしまえば問題ないでしょう。
くれぐれも自己責任でお願いします。

< ステップ 7 – 基本設定 >
設定したHDDをLS-XHLにセットし起動します。
この際、うまく起動せず再設定する可能性を考慮して、ネジやフタは閉めないで初期設定することをお勧めします。
マシンはなんでもいいのでSSHで “192.168.1.101″ に接続します。Windowsからの場合はTeraTermなどを使用するといいでしょう。自分の場合はLinuxから

ssh root@192.168.1.101

としました。rootの初期パスワードは “toor” です。
ログインしたら

passwd
dpkg-reconfigure locales
dpkg-reconfigure tzdata
rm /etc/ssh/ssh_host_* && dpkg-reconfigure openssh-server

として、
1. rootパスワードの変更
2. ロケール設定
3. タイムゾーン
4. SSH暗号化キーの更新
を実施します。
( 尚、この工程は手順を共通化するためにここに書いていますが、chroot可能であればそのときに 4 をやっておけばSSHの再ログインは不要になります )

クライアント側の暗号化キーを更新するため一旦SSHをログアウトします。
ログアウトしたら、LinuxやUNIXの場合

ssh-keygen -R 192.168.1.101

な感じで更新をかけます。
でもって再度SSHでrootログインして以下のコマンドを実行します。

apt-get update
apt-get upgrade

以上で完了です。
LS-XHLのネジをしめてフタをしてください。

< 感謝 >
Rootfs作者様および
http://forum.buffalo.nas-central.org/viewtopic.php?f=71&t=26291 の面々および
http://www.zorac.org/wp/?p=447 を書いて下さった方に感謝感謝です。