Sheeva Plug で NFS を root パーティションとする方法に関するページです。

NFS root

SDカードが使えない場合、自前カーネルのデバッグを行う時には、NFS で root パーティションをマウントすることにより、NAND Flash をまったくいじらずに作業ができる利点がある。

root イメージファイルの入手と展開

www.plugcomputer.orgより、

  • Resources
    • Downloads
      • SheevaPlug Software & Design Information - Revision 1.2
        • SheevaPlug_Host_SWsupportPackageLinuxHost1.2.zip

とたどり、SheevaPlug_Host_SWsupportPackageLinuxHost1.2.zip をダウンロードする。

SheevaPlug_Host_SWsupportPackageLinuxHost1.2.zip から Linux Host Filesystem - rootfs.tar.bz2 を取り出す。

$ unzip SheevaPlug_Host_SWsupportPackageLinuxHost1.2.zip
$ cd SheevaPlug_Host_SWsupportPackageLinuxHost/LinuxHost
$ mv "Linux Host Filesystem - rootfs.tar.bz2" rootfs.tar.bz2

rootfs.tar.bz2 を scp などで NFSサーバに転送し、解凍する。

$ cd exportdir
$ tar jxvfp rootfs.tar.bz2

NFS サーバの設定例 (Debian Lenny) の場合

$ sudo apt-get install nfs-kernel-server

/etc/exports の編集

$ sudo exportfs -ra

/etc/exports の例

/nfs/sheevaplug/rootfsv1.0	192.168.1.0/24(rw,no_root_squash,sync,no_subtree_check)

no_root_squash オプションを付けないと、read only でマウントされるので注意。

U-Boot 用カーネルイメージの用意

TFTP サーバに、U-Boot用カーネルイメージをコピーしておく。

例えば、sheeva.with-linux.comで配布されている 2.6.30.5 のカーネルならば、TFTPサーバで、

# cd tftpdir
# wget http://sheeva.with-linux.com/sheeva/2.6.30.5/sheeva-2.6.30.5-uImage
# ln -s sheeva-2.6.30.5-uImage uImage
# wget http://sheeva.with-linux.com/sheeva/2.6.30.5/sheeva-2.6.30.5-uImage.md5
# md5sum -c sheeva-2.6.30.5-uImage.md5

として、U-Boot 用のイメージファイルを用意する。

ついでに、カーネルモジュールも提供されている場合は、NFS root ディレクトリに展開しておくよい。

# cd workdir
# wget http://sheeva.with-linux.com/sheeva/2.6.30.5/sheeva-2.6.30.5-Modules.tar.gz
# wget http://sheeva.with-linux.com/sheeva/2.6.30.5/sheeva-2.6.30.5-Modules.tar.gz.md5
# md5sum -c sheeva-2.6.30.5-Modules.tar.gz.md5
# tar zxvf sheeva-2.6.30.5-Modules.tar.gz -C /nfsrootdir

U-Boot の環境変数の変更とブート実行

NFS boot のための設定:

Marvell>> setenv ipaddr aaa.bbb.ccc.ddd			Sheeva Plug のIPアドレス
Marvell>> setenv serverip aaa.bbb.ccc.eee			TFTPサーバのIPアドレス
Marvell>> setenv rootpath '/nfs/sheevaplug/rootfsv1.0'		rootfsイメージを展開したディレクトリ
Marvell>> setenv console_base console='ttyS0,115200 mtdparts=orion_nand:0x400000@0x100000(uImage),0x1fb00000@0x500000(rootfs) rw'
	←console変数はリブートすると勝手に初期化されるので、別変数を設定
Marvell>> setenv bootargs_nfs 'root=/dev/nfs rw'
Marvell>> setenv bootnfs 'tftpboot $(loadaddr) $(image_name)'
Marvell>> setenv bootcmd_nfs 'setenv bootargs $(console_base) $(bootargs_nfs) nfsroot=$(serverip):$(rootpath) ip=$(ipaddr):$(serverip)$(bootargs_end); run bootnfs; bootm $(loadaddr)'
Marvell>> saveenv
Marvell>> run bootcmd_nfs

おまけ

NAND Flash に格納されている rootfs イメージの取り出し

NFS root で起動した後に、ROMをマウントしてから tar で固める。

# mount -t jffs2 /dev/mtdblock2 /mnt
Empty flash at 0x0887d338 ends at 0x0887d800
# cd /mnt
# tar czvf /mnt2/rootfs.tar.gz .
# cd
# umount /mnt

情報


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-09-06 (日) 18:29:32 (3357d)