2020/05/31

raspberry piのrootディレクトリをNFSサーバに移動する。

手元のRaspberry Pi 2 Model BにさしてあるSDカードの容量が不足気味なので、SDカードのext4パーティションをNAS(NFSサーバ)に移動することで、空き容量を広げてみた。もう一度やりたいときに作り方を忘れていそうなので、ここにメモ。

  1.  NASにNFSサーバの設定をする。
  2. ポイントはrootがrw(読み書き)可能な権限でマウントができるようにすること。

  3. NFSサーバに、SDカードのext4パーティションをそのままきれいにコピーする。
  4. NASがlinux系のOSで動いておりUSBの口があるなら、そこに直接接続してコピーするのが一番簡単。Windowsでうまくコピーできる方法があると便利なんだけど。

  5. SDカードのFATパーティションにある、cmdline.txtを、以下の要領で書き換える。
  6. なお、raspberry pi本体からは、/boot/cmdline.txtとして見える。手元のシリアルコンソールなraspberry piの場合には以下の通り。
    console=serial0,115200 console=tty1 root=/dev/nfs nfsroot=/volume1/rpiroot rw ip=192.168.1.200:192.168.1.2:192.168.1.1:255.255.255.0:rpi:eth0:off elevator=deadline fsck.repair=yes rootwait
    まず、元のファイルのrootを/dev/nfsに変更する。次に、rootfstype=ext4を削除する。そのうえで、追加項目として、nfsrootとしてnfsサーバのマウントポイントを記載。ipに自身のIPアドレス・デフォルトゲートウェイ・サブネットマスクを記載する。なお、ip=dhcpと書くこともできるが、DHCPサーバによってはIPアドレスがころころ変わるので使いにくいかも。
    参考文献: Mounting the root filesystem via NFS (nfsroot)

  7. OSのIPアドレスを固定する
  8. /etc/dhcpcd.confを書き換えて、OSのIPアドレスの設定を、cmdline.txtに合わせて固定する。
    interface eth0
    static ip_address=192.168.1.200/24
    static routers=192.168.1.1
    static domain_name_servers=192.168.1.1

  9. (おまけ)SDカードのFATパーティションに、ssh.txtを置いておく。
  10. もしheadlessで動かしたいなら、ssh.txtを置いておくと、sshdが起動してくるのでお勧め。

  11. 起動してみる。
  12. とりあえず動くので問題を感じないけど、気持ち悪ければ、起動後ま/etc/fstabにあるrootのマウント設定を消してもいいかも。
DHCPサーバとしてNTT東西のHGW(PR-400KI)を使っているので、pxeの設定はできず残念。将来環境が整ったらやってみたい。