Ubuntu日本語フォーラム
ログインしていません。
今まで Ubuntu 14.04 を使っていましたが、先日から 18.04 を再インストールして使用しています。
このマシンで以前から NFS/TFTPBOOT/DHCP を使用しボードの組み込み開発に使用しています。
1) ボードが TFTPBOOT 経由でカーネルをロードし起動する
2) ボードが DHCP に IP アドレスと NFS rootfs の位置を問い合わせる
3) rootfs を NFS 経由でマウントしブートする
それぞれのサーバー用設定は以前の ubuntu からずっと使用していて、
サーバー自体の設定が間違っている etc ということは起こってい無いと思います
Ubuntu 14.04 以前までは上記の手順で問題なく NFS root マウントができていましたが、
Ubuntu 18.04 にしてからマウントがタイムアウトしてしまうようになりました。
(16.04 でも問題なく使用できている事を確認済み)
18.04 のログには以下のようなものが出ていました
マウントができていた以前の Ubuntu でも同じものが出ていましたが 1 つだけでした
> tail -n xxx /var/log/syslog
...
xxx rpc.mountd[7779]: authenticated mount request from 192.168.10.100:952 for /xxx (/xxx)
xxx rpc.mountd[7779]: authenticated mount request from 192.168.10.100:857 for /xxx (/xxx)
xxx rpc.mountd[7779]: authenticated mount request from 192.168.10.100:936 for /xxx (/xxx)
xxx rpc.mountd[7779]: authenticated mount request from 192.168.10.100:879 for /xxx (/xxx)
...
同ネット上の別のマシンからは普通にマウントできますし、
同じボードでも NFS 以外の方法でブート後、普通のフォルダとしてマウントしてみると問題なくマウントできるので、
NFS サーバー自体はちゃんと動いていると思います
なぜ 18.04 からマウントできなくなったのか分かる方いるでしょうか?
Ubuntu : ubunut 18.04
NFS サーバー: nfs-kernel-server
-- /etc/exports ---
...
/xxx 192.168.10.0/255.255.255.0(rw,async,no_root_squash,no_subtree_check)
...
オフライン
外しているかもしれませんがnfs-commonがクライアントにインストールされていますか?
オフライン
ありがとうございます
クライアント側は基本的に busybox ですが(マウントできれば)、NFS rootfs を使用する際は kernel 内臓の NFS クライアント機能を使っています。
(= Linux kernel の .config で言うところの CONFIG_NFS_FS)
オフライン
ちょうど同じ問題に当たって、解決する方法を見つけました。
クライアント側のLinux Kernelのnfsrootは(おそらく)デフォルトでNFSv2を使う一方で、サーバ側のUbuntu 18.04ではNFSv2がデフォルトでは無効化されてますので、マウントできません。
$ sudo cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2
これを解決するには次の2つの方法があります。
A. サーバ側でv2を有効化する
B. クライアント側のnfsrootでv3を使う
Aの場合、/etc/default/nfs-kernel-serverに次の設定を追記してsystemctl restart nfs-kernel-serverすると有効化できました。
RPCNFSDOPTS="$RPCNFSDOPTS -V 2"
$ sudo cat /proc/fs/nfsd/versions
+2 +3 +4 +4.1 +4.2
参考: https://askubuntu.com/questions/1193536/how-to-enable-nfs-v2-on-ubuntu-18-04
Bの場合、nfsrootのoptionに v3 もしくは vers=3 を付けることでNFSv3でマウントできました。
オフライン
ありがとうございます
最新のカーネルでは NFS を UDP を使ったマウントも禁止されてしまった事も有り、
サーバー側で TCP と NFSv3 を指定するほうが良いようです
当方都合により Ubuntu18.04 を試すのは少し先になりそうですが、
以下の設定で解決するようです。
-- /etc/dhcp/dhcpd.conf ---
option root-path "/path/to/rootfs,tcp,v3";
オフライン