LS-XHLにDebianをインストールする話

はじめに

玄箱Proに比べて高速なCPUを積んだNASである LS-XHLのシリーズが出ていたため、 遅ればせながらいじってみることにした。

ただし、ここで述べているのは玄箱PROを使った インストールの方法なので、 PCを使う場合は 別のページを見ると良い。

用意するもの

手順

LS-XHLの箱を開けHDDを取り出す

図に示すように、底面のシールをはがした内側に 長方形の爪の穴がある。 また、背面にはネットワークやUSBの口の下に非常に小さな穴が開いている。 また、ファンの部分にも爪で引っかけてある部分がある。 さらに上面は模様のなかで3個所穴が開いている。

これら8箇所を折れない程度に押しながら、 正面側を蝶番のようにして、少しずつ慎重にケースをこじ開ける。

こじ開けることに変わりはないため、 くれぐれも壊してよい覚悟の上で、分解すること。

後は普通に、ファンのケーブルや各種のネジを外せば、 HDDを取り出すことができる。

玄箱Proでカーネル等の取り出し

先ほど取り出した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

玄箱ProでHDDの設定

次に壊してもよい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

LS-XHLの起動

適当な何かに祈った後、 設定した新しいHDDをLS-XHLに接続し起動する。 うまく行けば動く。 動いた場合でも電源LEDの点滅は止まらないが、 DHCPサーバのログを見ていれば、 どのIPアドレスになったか分かるため、 少し待ってからそこにsshでユーザとして接続する。 ログインできればsu等でrootになって後は設定し放題である。

LS-XHLのシリアルコンソールについて

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からインストールする話

参考

(2009/5/19 作成)