玄箱Proに比べて高速なCPUを積んだNASである LS-XHLのシリーズが出ていたため、 遅ればせながらいじってみることにした。
ただし、ここで述べているのは玄箱PROを使った インストールの方法なので、 PCを使う場合は 別のページを見ると良い。
図に示すように、底面のシールをはがした内側に 長方形の爪の穴がある。 また、背面にはネットワークやUSBの口の下に非常に小さな穴が開いている。 また、ファンの部分にも爪で引っかけてある部分がある。 さらに上面は模様のなかで3個所穴が開いている。
これら8箇所を折れない程度に押しながら、 正面側を蝶番のようにして、少しずつ慎重にケースをこじ開ける。
こじ開けることに変わりはないため、 くれぐれも壊してよい覚悟の上で、分解すること。
後は普通に、ファンのケーブルや各種のネジを外せば、 HDDを取り出すことができる。
先ほど取り出したHDDをUSB-SATAケーブルで Debian入り玄箱Proに接続する。
接続後しばらくして完全に認識されたのち、 "cat /proc/partitions"などとして、パーティション構成を 表示させるとsdb1からsdb6までが出現するはずである。
この中で、sdb1およびsdb2をマウントし、 tarなどを用いて中のファイルを吸出しておく。
# mount /dev/sdb1 /mnt # cd /mnt # tar zcf /root/sdb1.tgz . # cd / # umount /mnt # mount /dev/sdb2 /mnt # cd /mnt # tar zcf /root/sdb2.tgz . # cd / # umount /mnt
次に壊してもよいHDDをUSB-SATAケーブルで玄箱Proに接続し、 パーティションとファイルシステムの設定を行う。
"/boot"を担当する最初のパーティションは、 inodeのサイズが128でなければならないらしいので注意すること。
# parted /dev/sdb mklabel gpt # parted /dev/sdb mkpart primary 0 100 # parted /dev/sdb mkpart primary 100 10000 # mke2fs -I 128 -j /dev/sdb1 # mke2fs -j /dev/sdb2
(partedは、玄箱Proで"apt-get install parted"で取れるはず。)
次に、デフォルトのu-bootに義理を立てるための 空のinitrdの作成をする。
# dd if=/dev/zero of=/tmp/initrd bs=1024 count=1024 # losetup /dev/loop0 /tmp/initrd # mke2fs /dev/loop0 # losetup -d /dev/loop0 # gzip -9 /tmp/initrd # mkimage -A ARM -O Linux -T RAMDisk -C gzip -a 0x00000000 -e 0x00000000 -n initrd -d /tmp/initrd.gz /tmp/initrd.buffalo
(mkimageは、玄箱Proで"apt-get install uboot-mkimage"で取れるはず。)
壊してよいHDDの"/boot"の設定を行う。
カーネル本体は元から付いて来たものを利用する。
# mount /dev/sdb1 /mnt # cd /mnt # tar zxpf /root/sdb1.tgz ./uImage.buffalo # mv /tmp/initrd.buffalo . # cd / # umount /mnt
壊してよいHDDの"/"の設定を行う。
# mount /dev/sdb2 /mnt # debootstrap lenny /mnt
(debootstrapは、玄箱Proで"apt-get install debootstrap"で取れるはず。)
debootstrapの設定では、 外から使えないのでもうすこし細かく設定する。
まず、/mnt/etc/network/interfacesに以下の記述を加え、 ネットワークを起動するようにする。
iface lo inet loopback auto lo iface eth1 inet dhcp auto eth1
次に外部からログインできるようにするための設定を行う。 (rootのパスワードの設定、ログイン用の一般ユーザの作成、 sshサーバの導入)
玄箱Proのアーキテクチャをarmelにしてあるため、 chroot後コマンドがそのまま使え、他の設定をするとき楽である。
# chroot /mnt # passwd # apt-get update # apt-get install ssh # exit
元のカーネル用カーネルモジュールの展開も行う。
# cd /mnt # tar zxf /root/sdb1.tgz ./lib/modules/ # cd / # umount /mnt
適当な何かに祈った後、 設定した新しいHDDをLS-XHLに接続し起動する。 うまく行けば動く。 動いた場合でも電源LEDの点滅は止まらないが、 DHCPサーバのログを見ていれば、 どのIPアドレスになったか分かるため、 少し待ってからそこにsshでユーザとして接続する。 ログインできればsu等でrootになって後は設定し放題である。
LS-XHLのCPUにはシリアルポートが内蔵されており、 これを使うことができればより簡単に設定が可能と思われるが、 それは今のところとても難しい。
u-bootおよびカーネルのソースコードを読む限り、 シリアルコンソールが使える条件は、 MPP[49]がlowに落ちている状態で起動することである。 その状態でMPP[4]にRxDを、MPP[5]にTxDを繋げば、 u-bootおよびカーネルでシリアルコンソールが使える様である。
しかし、基板を見ても、多少電極で突っついてみても、 どの端子にMPP[49]がでているのか分からない。 MPP[4], MPP[5]も同様である。
よって取りあえずシリアルコンソールはあきらめた。
while true; do date; cat /proc/buffalo/regs/gpp/high_data_in; sleep 1; done
とかやって、監視しながら適当な抵抗経由でプルダウンするのを 端子に対して総当たりすれば、 もしかしたらMPP[49]を見つけられるのかも知れないが、 ちょっと面倒すぎる。
debianの環境の中で、 カーネルをコンパイルする手順を書いてみた。
LS-XHLにDebianをLinux PCからインストールする話