2015年4月30日木曜日

RaspBerry pi NFS 起動への道

いろいろな情報を参考にしてはいるのだが、どうもNFSからのBootがうまくいかない。

最終的に原因不明ながら成功したのでメモを残しておく。


1.前提条件
     NFS Client(今回 NFSから起動させたいraspberry pi)
  OS:Raspbian 2015-02-16
     Client name:greg
  IP:192.168.100.162

  NFS Server
  OS:Raspbian 2015-02-16
  Server name:base
  IP:192.168.100.161
  HDDからBootする様に設定済み
  (参考ページ http://wings2fly.jp/yaneura/raspberry-pi-on-hdd-no1/
  
   Gateway:192.168.100.1

2.Server設定
  
  NFS関連インストール  
sudo apt-get install -y nfs-common nfs-kernel-server
  
  
  /etc/exportsの編集  
sudo vi /etc/exports
  

  下記の設定を追加
/var/raspi_image/greg 192.168.100.0/24(rw,sync,no_root_squash,no_subtree_check)
  

  ディレクトリ作成
mkdir /var/raspi_image

mkdir /var/raspi_image/greg
  

  NFSサービスリロード
sudo /etc/init.d/nfs-kernel-server reload

これでNFSサーバ側の設定は一旦完了。


3.client設定
  
  NFSのインストールおよび設定
sudo apt-get install  rpcbind nfs-common
sudo update-rc.d rpcbind enable
sudo update-rc.d nfs-common enable
  
  NFSサーバにコピーするためにコピー先のディレクトリをマウント
sudo mount 192.168.100.161:/var/raspi_image/greg  /wrk
  
  
  /boot以外のファイルをコピーするためにmmcblk0p2を別途マウント
sudo mount /dev/mmcblk0p2 /media
  

  全てのファイルをコピー
sudo cp -rav /media/* /wrk/ 

  起動設定のバックアップ
sudo cp /boot/cmdline.txt /boot/cmdline.back
  

  起動設定の編集
sudo vi /boot/cmdline.txt 
以下の様に編集(1行で書くこと)
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/nfs nfsroot=192.168.100.161:/var/raspi_image/greg,udp,vers=3 ip=192.168.100.162:192.168.100.161:192.168.100.1:255.255.255.0:rpi:eth0:off rootfstype=nfs smsc95xx.turbo_mode=N
  
  NFS上にコピーしたfstabファイルの変更
sudo vi /wrk/etc/fstab
以下の様に3行目をコメントアウト
proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults          0       2
#/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1 ←ここをコメントアウト
# a swapfile is not a swap partition, so no using swapon|off from here on, use  dphys-swapfile swap[on|off]  for that


  ここでいったん、Clientをリブート (これでNSFから起動するはず。)
sudo reboot

  起動に成功したら今度はSWAPファイルの整理(以下は特に気にしなければ必要ないです。)
sudo apt-get remove --purge dphys-swapfile
sudo rm /var/swap
sudo update-rc.d dphys-swapfile remove
sudo dd if=/dev/zero of=/var/swapfile bs=1M count=1024
sudo losetup /dev/loop0 /var/swapfile
sudo mkswap /dev/loop0
sudo swapon /dev/loop0


  起動時にSwapを設定するように/etc/rc.localを編集
sudo vi /etc/rc.local
  以下の様に編集
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

#ここから追加

echo "Setting up loopy/var/swapfile.." 
sleep 2
losetup /dev/loop0 /var/swapfile
mkswap /dev/loop0
swapon /dev/loop0

#ここまで

exit 0

  
  その他のチューニング
sudo vi /etc/default/rcS
以下の様に編集
#
# /etc/default/rcS
#
# Default settings for the scripts in /etc/rcS.d/
#
# For information about these variables see the rcS(5) manual page.
#
# This file belongs to the "initscripts" package.
# delete files in /tmp during boot older than x days.
# '0' means always, -1 or 'infinite' disables the feature
#TMPTIME=0
# spawn sulogin during boot, continue normal boot if not used in 30 seconds
#SULOGIN=no
# do not allow users to log in until the boot has completed
#DELAYLOGIN=no
# be more verbose during the boot process
#VERBOSE=no
# automatically repair filesystems with inconsistencies during boot
FSCKFIX=yes
ASYNCMOUNTNFS=no #←追加

下記参考ページ
http://youresuchageek.blogspot.jp/2013/01/raspberrypi-root-over-nfs-share.html
  
  

0 件のコメント:

コメントを投稿