新しい「おもちゃ」としてLS-V500Lを手に入れたので、 そのLS-V500Lで「遊ぶ」ためのメモを書くことにする。
この「遊ぶ」というのは、いろいろ設定したり導入したり 改造したりしたりすることで、 このメモで書くのはそのための最初の一歩となる 標準的な?Debianを動かすための方法である。 そのため、ネットワークにつながったLinuxが動くということ以外には、 何もできないシステムができあがるので、 それ以上については各自でがんばって欲しい。
それから、ここで書く中身は LS-XHLの場合と だいたい同じである、と言えばそこで終わりである。
LS-XHLとほぼ変わらない。 上面に3箇所、背面に3箇所、下面のシールに下に2箇所、 突っつくところがあるので、これらを1.5mm程度押しながら、 二枚貝を開くように背面を開く。 (あるいは開くように背面の境目に力を加えながら、前記の突っつきポイントを突っつく。)
既に、SheevaPlugのようなDebian(Linux)の動いている ARMマシンを所有している場合、 debootstrapを使うのが簡単と思われる。
準備するものは以下の通りである。
手順は以下の通りである。
(あらかじめ"cat /proc/partitions"などとして、つないだHDDが /dev/sdbに割り当てられたことを確認しておくこと)
# mount /dev/sdb1 /mnt # cp -a /mnt/uImage.buffalo /tmp # umount /mnt # mount /dev/sdb2 /mnt # tar zcf /tmp/lsvl-modules.tgz -C /mnt/lib/modules . # umount /mnt
# cd /tmp # wget http://tyche.pu-toyama.ac.jp/~a-urasim/lsvl/data/initrd.buffalo
(あらかじめ"cat /proc/partitions"などとして、つないだHDDが
/dev/sdbに割り当てられたことを確認しておくこと)
(partedが無い場合は"apt-get install parted"などとして
インストールしておきましょう)
# parted /dev/sdb mklabel gpt # parted /dev/sdb mkpart primary 0 100 # parted /dev/sdb mkpart primary 100 10000
("parted /dev/sdb mklabel gpt"でエラーが出る場合は、 "parted /dev/sdb mklabel"と打ってエンターし、その後に出る "New disk label type?"みたいなのに対し、"gpt"と打つと良い。)
# mke2fs -I 128 -j /dev/sdb1 # mke2fs -j /dev/sdb2
# mount /dev/sdb1 /mnt # cp -a /tmp/uImage.buffalo /mnt # cp -a /tmp/initrd.buffalo /mnt # umount /mnt
(debootstrapは"apt-get install debootstrap"で<以下略>)
# mount /dev/sdb2 /mnt # debootstrap squeeze /mnt
# tar zxf /tmp/lsvl-modules.tgz -C /mnt/lib/modules
"/mnt/etc/network/interfaces"に以下の記述を加える。
iface lo inet loopback auto lo iface eth0 inet dhcp auto eth0(LS-XHLと異なり、eth1ではなく、普通にeth0であることに注意)
# chroot /mnt # passwd # apt-get update # apt-get install ssh # exit
# umount /mnt
しばらくしてから、DHCPサーバのログを見ると、 取得されたIPアドレスが分かるため、 そこにsshを使ってログインすればよい。
"apt-get install udev"とかしてudevを入れるとか、 別のユーザを作ってリモートログインできるようにしてから、 /etc/ssh/sshd_configの中のPermitRootLoginをnoにするとか、 好きなようにすると良い。
手持ちのLinux入りPCがある場合、 そこからインストールすることも可能である。
ただし、ここでの説明は私ビルドのカーネルを使うことになるので、 それ以外を希望するなら適当にがんばってください。
用意するものは以下の通り。
手順は以下の通り。
USB-HDDアダプタを介して、Linux-PCに壊して良い HDDをつなぎます。つないだ後、"cat /proc/partitions"などとして つないだHDDのデバイスが何であるかを確かめること。 ここでは、"sdb"であるとして記述しますが、 そのあたりは適当に調整してください。
注意: 最近の2TBクラスのHDDは4096バイト/セクタである。
しかし、ls-vlのブートローダは512バイト/セクタでの
アクセスを行うようである。
一方、昔のSATA-USB変換ケーブルは中身が4096バイト/セクタのHDDであっても
512バイト/セクタとPCに見せていたが、最近の変換ケーブルは、
HDDが4096バイト/セクタだと
PCにも4096バイト/セクタと見せるようである。
そのため、最近の2TクラスのHDDを最近のSATA-USB変換ケーブルでPCにつなぎ、
パーティションの設定を行うと、
ls-vlでブートできないHDDが出来上がってしまう。
# fdisk -l /dev/sdb
などと打って、セクタサイズが512バイト/セクタとなっていることを確かめてから、 次に進むとよいと思われる。
以下のようにして、HDDの設定をする。 パーティションサイズは適当なので好きに調整して構わない。
# 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 /dev/sdb printなどと打って、セクタサイズが512であることを確かめるとよいと思われる。
LS-VL用のカーネル(2.6.38)と 空のラムディスクファイルを ダウンロードして、最初のパーティションに配置する。
# mount /dev/sdb1 /mnt # cd /mnt # wget http://tyche.pu-toyama.ac.jp/~a-urasim/lsvl/data/uImage.buffalo # wget http://tyche.pu-toyama.ac.jp/~a-urasim/lsvl/data/initrd.buffalo # cd / # umount /mnt
先ほど取得したカーネル用のカーネルモジュールを含む、 各種のシステムファイルをまとめたもの を取得し、二つ目のパーティションに展開する。 これに含まれているファイルのソースはこのあたりに置いてある。
# cd /tmp # wget http://tyche.pu-toyama.ac.jp/~a-urasim/lsvl/data/base-squeeze-20110320.tar.bz2 # mount /dev/sdb2 /mnt # tar jxf ./base-squeeze-20110320.tar.bz2 -C /mnt # umount /mnt
2012年3月までうっかり/etc/udev/rules.d/70-persistent-net.ruleに 手元のls-vlのeth0の記述を入れたまま配布していたので、 以前のファイルを取っていった方はそのファイルを削除してしてください。 起動の際にちゃんとしたものが自動生成されるはずです。 (現在はその辺は修正済み)
PCより設定したHDDを取り外し、LS-VLに直接つなぎます。
後は、適当な何かに祈った後、電源を入れてください。しばらくするとDHCPより IPアドレスを取得し、SSHでリモートログインできるようになっているはずである。 今回のシステムファイルをまとめたものに関しては、 IDが"root"、パスワードが"lsvladmin"でログインできるはずである。
ログイン後はパスワードの変更とsshのホスト鍵の変更を行うべきだろう。 パッケージのアップグレードも忘れずに。
# passwd # rm /etc/ssh/ssh_host_* # /var/lib/dpkg/info/openssh-server.postinst configure # apt-get update # apt-get upgrade
またこのほかに、udevやその他欲しいパッケージの導入を行っても良いだろう。
LS-VLはLS-XHLとほとんど同じ作りであるが、 CPUも新しく、またポートの構成も異なるため、 カーネルはLS-VL用のものが必要となる。
(株)Buffalo社のサイトには、GPLに従って、 カーネルのソースが公開されており、 ".config"も付いているため、 それをコンパイルすればLS-VL用のカーネルが生成できる。
しかし、ここではlinux-2.6.38からLS-VL用の カーネルを作る方法について、記すことにする。
# apt-get install kernel-package # apt-get install libncurses5-dev # apt-get install uboot-mkimage
(既に導入してあるなら不要)
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.tar.bz2 # tar jxf linux-2.6.38.tar.bz2
(カーネルソースはミラーサイトから取ってきた方が良いかも)
# wget http://tyche.pu-toyama.ac.jp/~a-urasim/lsvl/data/kernel-2.6.38-lsvl.patch # cd linux-2.6.38 # patch -p1 < ../kernel-2.6.38-lsvl.patch
# make kirkwood_defconfig 略 # make menuconfig 略
menuconfigの時には以下の設定を行うこと。
後は好みでiptablesとかUSB soundとか設定すると良い。
# fakeroot make-kpkg clean # fakeroot make-kpkg --initrd --cross_compile - --revision=custom.0.1 kernel_image
これで、一つ上の階層に、 "linux-image-2.6.38_custom.0.1_armel.deb"と言うファイルができているはずである。 この中にカーネルモジュール等が入っている。
LS-VLではu-bootを使っているため、 カーネルのファイルもそれ用を用意する必要がある。
# make uImage
これで、"./arch/arm/boot/uImage"というファイルが生成されているはず。 これを起動用パーティションに、"uImage.buffalo"という名前で置けばよい。
u-bootの中身を変えたのか、ハードウェアに改良があるのか分からないが、 電源OFF状態での電力消費がほとんど無くなっている。 これが正常と言えば正常なのだけど、 LS-XHLの時は電源OFFのモードで数Wは消費していたので良いことだと思う。 もしかするとLS-XHLもfirmwareの更新とやらによって 改善するのかもしれないが、 分解されたLS-XHLはへんてこ用途のtransparent proxy serverとして 改造してしまったので、もう試すことはできない。
手持ちのキーが古いらしいので、 とりあえず、以下のようなコマンドでファイルを消せば、 次に進めるようになる。正解はよく知らない。
rm -f /var/lib/apt/lists/ftp.us.debian.org*
久しぶりに動かしてみると、 起動はするのだがDHCPでIPアドレスを取りにいかなくなったので、 そのあたりの話を LS-VL(LS-XHL)上のDebianでDHCPクライアントとして失敗する話 に書いた。