SSブログ

Raspberry Pi : セットアップ nfs [基板]

たぶんiscsiの方が効率良いんでしょうが、使い方がよくわからない。
RPi Guidesの「iSCSI support and boot」あたりが参考になりそうですが、targetの設定がいまいち…カーネル作ってしまえば、後は普通に動くのかな?

ということで、軟弱者の私は何となく楽そうな方に転ぶのでした。

今後も使うであろう、RaspberryPiのカーネル構築環境を作ってしまいます。
クロスコンパイル環境として、VMwareにUbuntuをインストールしました。セルフコンパイルも可能みたいですが、完了まで6時間とか12時間とかいう数字が検索されます(笑)

まずUbuntu上での作業。クロス環境とカーネル構築周りをインストール。所々sudoが必要です。
$ apt-get install gcc-arm-linux-gnueabi
$ apt-get install make
$ apt-get install git-core
$ apt-get install ncurses-dev

Linuxのソースを展開。
$ mkdir raspi
$ cd raspi
$ git clone https://github.com/raspberrypi/linux.git
$ cd linux

カーネルコンフィグ。
$ cp arch/arm/configs/bcmrpi_cutdown_defconfig .config
$ make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- menuconfig

File Systems→Network File Systems→NFS server support周りをチェック。
よくわからないので一通り全部w
raspi_kernel_config.png

make開始。
$ make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- -k

以前にRaspberryPiのLinuxを入れたSDカードをUbuntuにマウントします。bootとrootのパーティションに分かれてるので注意。
$ mv <SD_boot>/kernel.img <SD_boot>/kernel.org  バックアップ
$ cp arch/arm/boot/Image <SD_boot>/kernel.img  カーネルをコピー
$ make ARCH=arm modules_install INSTALL_MOD_PATH=<SD_root>  モジュール


だいぶはしょりましたが、とりあえずこれでOK?
SDカードをRaspberryPiに挿して起動。

NFSサーバーをインストール。
# apt-get install nfs-kernel-server

ついでに固定IPアドレスにします。
# vi /etc/network/interfaces

auto lo

iface lo inet loopback
iface eth0 inet static
  address   192.168.0.9
  network   192.168.0.0
  netmask   255.255.255.0
  broadcast 192.168.0.255
  gateway   192.168.0.1
  dns-nameservers 192.168.0.1


リブート後、サービスを確認。
# service --status-all
 [ - ]  nfs-common
 [ - ]  nfs-kernel-server
 [ - ]  rpcbind

「rpcbind」というのがportmapの代わりらしいです。最初はサービスは立ち上がってない状態です。
exportsの編集。うーむ、いい加減(笑)
# mkdir /srv/esxi
# chmod 777 /srv/esxi
# vi /etc/exports

/srv/esxi  *(rw)

サービス立ち上げ。
# service rpcbind restart
[ ok ] Stopping rpcbind daemon....
[ ok ] Starting rpcbind daemon....
# service nfs-kernel-server start
[....] Exporting directories for NFS kernel daemon...exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/srv/esxi".
  Assuming default behaviour ('no_subtree_check').
  NOTE: this default has changed since nfs-utils version 1.0.x

. ok
[....] Starting NFS kernel daemon: nfsdrpc.nfsd: address family inet6 not supported by protocol TCP
 mountdrpc.mountd: svc_tli_create: could not open connection for udp6
rpc.mountd: svc_tli_create: could not open connection for tcp6
rpc.mountd: svc_tli_create: could not open connection for udp6
rpc.mountd: svc_tli_create: could not open connection for tcp6
rpc.mountd: svc_tli_create: could not open connection for udp6
rpc.mountd: svc_tli_create: could not open connection for tcp6
. ok

ワーニング出てますが大丈夫そうです。ダメだとエラーが出ます。serviceコマンドで確認します。
これで立ち上がってるようなのですが、リブートすると止まってます。サービスの自動起動方法はまた次回ということで。

ESXiからマウントしてみます。
esxi_raspi_mount.png
一応無事マウント出来たようです。

SSHでESXiに入り、仮想マシンをコピーしてみます。vmkfstoolsでthinを指定しないと(普通のcpコマンドとかだと)容量が増えるので注意です。
vmkfstools -i <local>/OpenIndiana.vmdk -d thin <pi>/OpenIndiana.vmdk

Clone: 20% done.

…半端なく遅い…目測(笑)100KB/s。未完了。

WEBにあった「RaspberryPiのnfsは遅いぞ~特に書き込みはな~覚悟しろ」的な発言のとおりでした。読み出しはまだましなようですが。仮想マシンのブートに耐えられるか、とりあえず試してみようかと。

やっぱりiscsiの方が良いのでしょう。どこかに簡単な方法ないかな~

<追記>
あまりに遅いので、USBに挿したメモリをexportしました。すると1.5MB/sほど(目測)。速くはないですが、だいぶ高速化されてます。これなら使える?
タグ:Raspberry Pi

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。