最近のLinuxディストリビューションでは、NFSでversion 2が利用できなくなっています。しかし、古いUnixenはネットワークブートにNFS version 2を使用していることがあるので、この目的のために最近のLinuxディストリビューションをNFSサーバーとする場合、対応が必要です。
Ubuntu Desktop 24.04.3 LTSでNFSサーバーでNFS version 2を使用するには、独自kernelのビルドとNFSサーバーの追加設定が必要でした。
手順としてはUbuntuのドキュメントにしたがいます。ただし、LTSのためHWE kernelなので一部手順が異なります。
変更点および注意点は以下の通りです。
先頭行は下記のようになっています。
linux-hwe-6.14 (6.14.0-34.34~24.04.1) noble; urgency=medium
この行のABI番号を変更します。(アップロード回数などその他は変更しません。)
linux-hwe-6.14 (6.14.0-999.34~24.04.1) noble; urgency=medium
下記を実行すると、内部的にmenuconfigが起動します。
$ fakeroot debian/rules editconfigs
NFS version 2の設定を有効にします。
[*] Network File Systems ---> NFS server supportの項目が
[ ] NFS server support for NFS version 2 (DEPRECATED)
となっているので、以下のように変更します。
[*] NFS server support for NFS version 2 (DEPRECATED)
[*] NFS server support for the NFSv2 ACL protocol extension
設定確定後、amd64以外のアーキテクチャーのconfig-checkがエラーになったり、Import configs for arm64-generic ...で異常終了しますが、下記の注があるので、気にしないことにしました。
If you do not have the compiler toolchain installed for each architecture supported by the kernel being configured, you’ll see errors that the configs for these uninstalled architectures are missing. These can be ignored as long as you don’t intend to build binaries for those architectures.
$ sudo apt install nvidia-dkms-535
$ sudo dpkg -i linux-hwe-6.14-headers-6.14.0-999_6.14.0-999.34~24.04.1_all.deb
$ sudo dpkg -i linux-headers-6.14.0-999-generic_6.14.0-999.34~24.04.1_amd64.deb
$ sudo dpkg -i linux-modules-6.14.0-999-generic_6.14.0-999.34~24.04.1_amd64.deb
$ sudo dpkg -i linux-image-unsigned-6.14.0-999-generic_6.14.0-999.34~24.04.1_amd64.deb
$ sudo dpkg -i linux-modules-extra-6.14.0-999-generic_6.14.0-999.34~24.04.1_amd64.deb
$ sudo dpkg -i linux-hwe-6.14-tools-6.14.0-999_6.14.0-999.34~24.04.1_amd64.deb
$ sudo dpkg -i linux-tools-6.14.0-999-generic_6.14.0-999.34~24.04.1_amd64.deb
0番目のmenuentryが期待するバージョンではない場合、/etc/default/grubを/boot/grub/grub.cfgを参照して起動したいバージョンのmenuentryの順番を確認し、(たとえばGRUB_DEFAULT="1>4"のように)変更後、sudo update-grubを実行します。
$ sudo cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2
ちなみに、22.04.5 LTSではバージョン5系kernelのパッケージを利用することでkernelをビルドすることなくNFS version 2が使用可能です。
nfs-utilsのnfsdのNFS version 2を無効にしたcommit 2c2c36c59fa1de2ff7fd28917e54700ecb39b730の内容は、nfsd.confのコメントアウトされている設定の削除とnfsdの-Nおよび-VオプションでのNFS version 2サポートの削除です。このため、オプションによらずにNFSのバージョンを指定することにより、このcommitが適用されていたとしてもNFS version 2が使用できます。
この記事にしたがい、/etc/nfs.conf.d/local.confを作成します。
[nfsd]
udp=y
vers2=y
その後、nfs~kernel-serverをrestartします。下記のように(-2ではなく)+2になればNFSサーバーがNFS version 2を使用できます。
$ sudo cat /proc/fs/nfsd/versions
+2 +3 +4 +4.1 +4.2