sheevaplugの中身をDebianに置き換える
初期状態ではubuntuが入っているがいい加減古い。
せっかくバージョンアップするなら使い慣れてるDebianにしようと思いやってみた。
さらにこの際なのでフラッシュメモリに特化したファイルシステムUBIFSに変更してみた。
多分DreamPlugでもほぼ同じ手順でできると思う。
参考URL
http://www.plugcomputer.org/plugwiki/index.php/SheevaPlug_Installer
http://www.plugcomputer.org/plugwiki/index.php/Installing_Debian_To_Flash
準備するもの
* sheevaplug 本体
* 作業領域として利用する512M以上のUSBメモリ(SDカードで代用可)
* ローカルネットワークのどこかで稼動しているDHCPサーバとTFTPサーバ
* sheevaplug-installer
以下からダウンロードする。
http://www.plugcomputer.org/index.php/us/resources/downloads?func=select&id=5
* kernel uImage
http://sheeva.with-linux.com/sheeva/ から好きなバージョンのものをダウンロード
ここでは 2.6.38/2.6.38.6/sheeva-2.6.38.6-uImage を選択した。
ついでに sheeva-2.6.38.6-Modules.tar.gz もダウンロードしておくとよい。
* Debian インストーラ
以下から uImage と uInitrd をダウンロードする。
http://d-i.debian.org/daily-images/armel/daily/kirkwood/netboot/marvell/sheevaplug/
TFTPサーバの準備
Debian なら atftpd をインストールして /etc/init.d/atftpd start すればいい。
その場合のルートディレクトリは /srv/tftp/ になる。
TFTPサーバのルートディレクトリに以下を配置
uboot.bin # sheevaplug-installer に付属している uboot/uboot.bin sheeva-2.6.38.6-uImage # ダウンロードした kernel uImage uImage # ダウンロードした Debian インストーラ uInitrd # ダウンロードした Debian インストーラ
U-BOOT入れ替え
Marvell>> setenv ipaddr (sheevaplugのIP) Marvell>> setenv serverip (TFTPサーバのIP) Marvell>> tftpboot 0x0800000 uboot.bin Marvell>> nand erase 0x0 0xa0000 Marvell>> nand write 0x0800000 0x0 0xa0000 Marvell>> reset
ここに限らず tftpboot を実行したとき "Retry count exceeded; staring again"というエラーがでることがあるが、成功するまで何度でも頑張ること。
NANDに書き込まれているカーネルを入れ替える。
Marvell>> setenv ipaddr (sheevaplugのIP) Marvell>> setenv serverip (TFTPサーバのIP) Marvell>> tftpboot 0x2000000 sheeva-2.6.38.6-uImage Marvell>> iminfo Marvell>> nand erase 0x100000 0x400000 Marvell>> nand write 0x2000000 0x100000 0x400000 Marvell>> setenv mainlineLinux yes Marvell>> setenv arcNumber 2097 Marvell>> saveenv
Debianインストーラを実行し、USBメモリにインストール。
USBメモリをsheevaplugに挿入 Marvell>> tftpboot 0x0400000 uImage Marvell>> tftpboot 0x0800000 uInitrd Marvell>> setenv bootargs console=ttyS0,115200 base-installer/initramfs-tools/driver-policy=most Marvell>> bootm 0x0400000 0x0800000
Debianのインストールが始まる。途中でUSBメモリのパーティションの区切り方を聞いてくるが、default のままで行う(LVMは利用しない)。
USBメモリから起動
Marvell>> setenv bootargs console=ttyS0,115200 mtdparts=nand_mtd:0xa0000@0x0(uboot),0x400000@0x100000(uImage),0x1fb00000@0x500000(rootfs) root=/dev/sda2 rootwait rw Marvell>> boot
SDカードで行っている場合は /dev/sda2 でなく /dev/mmcblk0p2 になる。
root でログインし NAND のファイルシステムを UBIFS に変更
sheeva login: root root@sheeva:~# dhclient root@sheeva:~# apt-get install mtd-utils root@sheeva:~# ln -fs /proc/mounts /etc/mtab root@sheeva:~# ubiformat /dev/mtd2 -s 512 root@sheeva:~# ubiattach /dev/ubi_ctrl -m 2 root@sheeva:~# ubimkvol /dev/ubi0 -N rootfs -m
USBメモリにインストールした Debian を NAND にコピー
root@sheeva:~# mount -t ubifs ubi0:rootfs /mnt root@sheeva:~# mkdir /tmp/rootfs root@sheeva:~# mount -o bind / /tmp/rootfs/ root@sheeva:~# cd /tmp/rootfs root@sheeva:~# sync root@sheeva:~# cp -a . /mnt/
/mnt/etc/fstab を以下の内容に差し替え
/dev/root / ubifs defaults,noatime,rw 0 0 tmpfs /var/run tmpfs size=1M,rw,nosuid,mode=0755 0 0 tmpfs /var/lock tmpfs size=1M,rw,noexec,nosuid,nodev,mode=1777 0 0 tmpfs /tmp tmpfs defaults,nosuid,nodev 0 0
再起動し、sheevaplug の起動オプションを修正
root@sheeva:~# shutdown -r now 再起動して Marvell>> のプロンプトを表示させたらUSBメモリを抜く Marvell>> setenv bootargs 'console=ttyS0,115200 ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs' Marvell>> saveenv Marvell>> reset
めでたくDebianが起動したら、後はお好きに〜
2011/06/22追記
openvpnでtunが必要になったので、別マシンにて sheeva-2.6.38.6-Modules.tar.gz から tun.ko を取り出して以下を実行した。
# cp tun.ko /lib/modules/2.6.38.6/kernel/drivers/net/tun.ko # depmod -a # echo tun >> /etc/modules # modprobe tun
他にも必要なモジュールがでてきたら同様にすればいいと思う。