販売終了のお知らせ

SUZAKU シリーズ販売終了のお知らせ > 詳細情報


Howto : SUZAKU-VでルートファイルシステムにNFSを使う

該当製品:
SZ310-SIL
SZ310-U00
SZ410-SIL
SZ410-U00

ルートファイルシステムをNFSでマウントできたら、開発効率があがりますよね。そこでNFSでマウントする手順について説明します。

おおまかな手順は下記のようになります。

  1. NFSサーバの設定
  2. ルートファイルシステムの準備
  3. カーネルの設定
  4. カーネル起動オプションの設定

これから説明する例では、以下のネットワーク環境を想定しています。ご利用の環境に合わせて適宜読みかえてください。

項目 IPアドレス
ゲートウェイ 192.168.10.1
ネットマスク 255.255.255.0
NFSサーバ 192.168.10.2
SUZAKU-V 192.168.10.3

1. NFSサーバの設定

SUZAKU-VがNFSでルートファイルシステムをマウントできるように、PCにNFSサーバ環境を構築します。Debian GNU/Linuxを使用している場合はnfs-user-serverやnfs-kernel-serverが使用できます。ここでは、NFSで外部に公開するディレクトリなどを以下のように設定します。

項目 設定
外部に公開するディレクトリ /home/public/nfs
接続許可をするIPアドレス 192.168.10.0 から 192.168.10.255の範囲内
アクセス権限 読み書き可能
スーパーユーザでの接続許可 許可

この設定行なうために、/etc/exportsに以下の行を追記します。


/home/public/nfs 192.168.10.0/255.255.255.0(rw,no_root_squash)

設定後、/etc/exportsの設定を反映させます。


[PC ~]# exportfs -a

2. ルートファイルシステムの準備

SUZAKU-Vが使うルートファイルシステムをNFSサーバ上に準備します。ここでは、とりあえずデフォルトのイメージと同じものを使うようにします。


[PC ~]# mount -o loop romfs.img /mnt
[PC ~]# cp /mnt/* /home/public/nfs/ -a

3. カーネルの設定

SUZAKU-Vのコンフィギュレーションを行なう必要があります。カーネルコンフィギュレーションで以下のように設定します。


Networking  --->
  Networking options  --->
    [*] TCP/IP networking
    [*]   IP: kernel level autoconfiguration
File systems  --->
  Network File Systems  --->
    <*> NFS file system support
    [*]   Provide NFSv3 client support
    [*] Root file system on NFS

4. カーネル起動オプションの設定

カーネルの起動オプションを設定します。以下の表は各オプションの概要です。詳しくは、Linuxカーネルのソースファイルに含まれるDocumentation/kernel-parameters.txtDocumentation/filesystems/nfsroot.txtなどを参照してください。日本語訳もあります。

項目 説明
root ルートファイルシステムの指定。NFSを使う場合は「/dev/nfs」とする
nfsroot NFSルートファイルシステムの指定。NFS サーバの IP アドレス:/公開されている/ディレクトリ名/とする
ip ネットワークの設定を指定。自分が使う IP アドレスや NFS サーバの IP アドレス、ネットマスクなどを設定する

Platform options  --->
  [*] Default bootloader kernel arguments
  (root=/dev/nfs nfsroot=192.168.10.2:/home/public/nfs,v3 ip=192.168.10.3:192.168.10.2:192.168.10.1:255.255.0.0::eth0:none) Init

カーネルイメージを作成し、ダウンロードして下さい。次回起動時からルートファイルシステムがNFSでマウントされます。ログイン後に”mount”コマンドを実行すると、ルートファイルシステムがNFSでマウントできたことを確認できます。

起動したままの状態では、ルートファイルシステムへの書き込み権限がありません。以下のコマンド例を参考にしてルートファイルシステムに書き込みができるように再マウントしてください。


BBoot v2.10 (powerpc) compiled at 13:18:07, Apr 16 2009
Press 'z' or 'Z' for BBoot Menu.
Hermit-At v1.1.18 (suzaku/powerpc) compiled at 11:51:37, Aug 18 2008
hermit>
hermit> b
Copying  kernel............................done.
Linux version 2.6.18-at11 (build@build) (gcc version 4.1.2 20061115 (prerelease)
(Debian 4.1.1-21)) #10 Mon May 11 15:29:32 JST 2009
Atmark Techno SUZAKU-V SZ410
On node 0 totalpages: 16384
  DMA zone: 16384 pages, LIFO batch:3
Built 1 zonelists.  Total pages: 16384
Kernel command line: root=/dev/nfs nfsroot=192.168.10.2:/home/public/nfs,v3 ip=192.168.10.3:192.168.10.2:192.168.10.1:255.255.255.0:levin:eth0:none
Xilinx INTC #0 at 0xF0FF3000 mapped to 0xFDFFD000
PID hash table entries: 512 (order: 9, 2048 bytes)
Console: Xilinx OPB UART Lite
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 60672k available (1624k kernel code, 2556k data, 80k init, 0k highmem)
Calibrating delay loop... 349.18 BogoMIPS (lpj=698368)
Mount-cache hash table entries: 512
NET: Registered protocol family 16
NET: Registered protocol family 2
IP route cache hash table entries: 512 (order: -1, 2048 bytes)
TCP established hash table entries: 2048 (order: 1, 8192 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 2048 bind 1024)
TCP reno registered
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered (default)
ttyS0 at MMIO 0xf0ff2000 (irq = 1) is a Xilinx OPB UART Lite
loop: loaded (max 8 devices)
XTemac: using FIFO direct interrupt driven mode.
XTemac: set MDIO divisor 17.
XTemac: PHY detected at address 31.
eth0: Xilinx TEMAC #0 at 0xF2000000 mapped to 0xF2000000, irq=0
Suzaku MTD mappings:
  Flash 0x800000 at 0xf0000000
flash: Found an alies 0x800000 for the chip at 0x0, ST M25P64 device detect.
Creating 7 MTD partitions on "flash":
0x00000000-0x00800000 : "Flash/All"
0x00000000-0x00100000 : "Flash/FPGA"
0x00100000-0x00120000 : "Flash/Bootloader"
0x007f0000-0x00800000 : "Flash/Config"
0x00120000-0x007f0000 : "Flash/Image"
0x00120000-0x00420000 : "Flash/Kernel"
0x00420000-0x007f0000 : "Flash/User"
FLASH partition type: spi
Attached ROMFS: RAM probe address=0xc021ce78 size=0x20c000
Attached ROMFS: set ROMfs to be root filesystem
TCP bic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
eth0: XTemac: Options: 0xb8f2
IP-Config: Complete:
      device=eth0, addr=192.168.10.3, mask=255.255.255.0, gw=192.168.10.1,
     host=levin, domain=, nis-domain=(none),
     bootserver=192.168.10.2, rootserver=192.168.10.2, rootpath=
Looking up port of RPC 100003/3 on 192.168.10.2
Looking up port of RPC 100005/3 on 192.168.10.2
eth0: XTemac: speed set to 100Mb/s
VFS: Mounted root (nfs filesystem) readonly.
Freeing unused kernel memory: 80k init
init started:  BusyBox v1.00 (2009.04.20-10:19+0000) multi-call binary
Mounting proc:
Mounting var:
Populating /var:
Running local start scripts.
Mounting /etc/config:
Populating /etc/config:
flatfsd: Created 8 configuration files (838 bytes)
Setting hostname:
Setting up interface lo:
Starting DHCP client:
Starting inetd:
Starting thttpd:
Running local start script (/etc/config/rc.local).

SUZAKU-V.SZ410 login: root
Password:


BusyBox v1.00 (2009.04.20-10:19+0000) Built-in shell (msh)
Enter 'help' for a list of built-in commands.

# mount
ルートファイルシステムがNFSでマウントされている。
/dev/root on / type nfs (ro,vers=3,rsize=4096,wsize=4096,hard,nolock,proto=udp,timeo=11,retrans=2,sec=sys,addr=192.168.10.2)
      :
ルートファイルシステムに書き込みができるように再マウントする。
# mount -n -o nolock,remount,rw -t nfs 192.16.10.2:/home/public/nfs /
# mount
ルートファイルシステムが書き込み可能でマウントされている。
/dev/root on / type nfs (rw,vers=3,rsize=4096,wsize=4096,hard,nolock,proto=udp,timeo=11,retrans=2,sec=sys,addr=192.168.10.2)
      :