Atmel Sama5d2 xplained 上的 NFS 引導失敗
我目前正在嘗試從 NFS 伺服器啟動 Atmel Sama5d2 Xplained 評估板。我正在執行具有 4.9.0 核心版本的 Debian 9,並且 nfs 伺服器是 nfs-kernel-server。
這是NFS伺服器配置
/srv/tftp/xplained/rootfs *(rw,nohide,no_subtree_check,async,no_root_squash)
我的 NFS 伺服器成功導出了我的文件夾,因為我能夠通過網路將它們掛載到另一個 linux 上。
我還能夠從我的 tftp 伺服器檢索核心映像和 dtb 文件。
但是,當核心啟動時,它無法從導出的 rootfs 啟動並返回以下錯誤
VFS: Unable to mount root fs via NFS, trying floppy. List of all partitions: 0100 8192 ram0 (driver?) 0101 8192 ram1 (driver?) 0102 8192 ram2 (driver?) 0103 8192 ram3 (driver?) b300 3833856 mmcblk0 driver: mmcblk b301 112172 mmcblk0p1 00000000-01 b302 3721550 mmcblk0p2 00000000-02 b318 128 mmcblk0rpmb (driver?) b310 1024 mmcblk0boot1 (driver?) b308 1024 mmcblk0boot0 (driver?) No filesystem could mount root, tried: nfs Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
這是我的核心參數
ip=dhcp console=ttyS0,115200 earlyprintk root=/dev/nfs rootfstype=nfs rw nfsroot=<server_ip>:/srv/tftp/xplained/rootfs
以及關於 nfs-moutd 服務的 dmesg
oct. 09 18:10:13 PC325 rpc.mountd[566]: authenticated mount request from 192.168.128.158:788 for /srv/tftp/xplained/rootfs (/srv/tftp/xplained/rootfs) oct. 09 18:10:18 PC325 rpc.mountd[566]: authenticated mount request from 192.168.128.158:704 for /srv/tftp/xplained/rootfs (/srv/tftp/xplained/rootfs) oct. 09 18:10:28 PC325 rpc.mountd[566]: authenticated mount request from 192.168.128.158:796 for /srv/tftp/xplained/rootfs (/srv/tftp/xplained/rootfs) oct. 09 18:10:48 PC325 rpc.mountd[566]: authenticated mount request from 192.168.128.158:762 for /srv/tftp/xplained/rootfs (/srv/tftp/xplained/rootfs)
我嘗試了很多我在網際網路上找到的東西,比如檢查防火牆規則、鎖定埠等……但它仍然不起作用。最奇怪的是,我在 Ubuntu 機器上嘗試過使用相同的數據包並且它工作正常。
我還嘗試了全新的 Debian 安裝,它也有效。
我想了解為什麼它不能在我的開發電腦上執行。可能如何解決它
感謝@alanSchmitz,經過一番調查,我終於找到了問題的根源。
顯然我必須通過在核心引導參數上指定它來強制在uboot中使用NFS v3,如下所示
root=/dev/nfs rootfstype=nfs rw nfsroot=<server_ip>:/srv/tftp/xplained/rootfs,vers=3
我試圖在伺服器端解決這個問題,但我找不到如何強制使用 NFS v3。
如果我發現如何在伺服器端強制使用 NFS v3 來安裝共享,我會更新我的答案。
我在執行 Manjaro Linux(基於 Arch)時遇到了同樣的問題。在 ubuntu 14.04 上它可以工作,但不能在 manjaro 上工作。執行wireshark捕穫後,問題就暴露了。nfs 伺服器響應“接受狀態:遠端不支持版本 # (2)”。我在我的 nfs 伺服器上的 /etc/nfs.conf 中啟用了版本 2,如下所示:
[nfsd] # debug=0 # threads=8 # host= # port=0 # grace-time=90 # lease-time=90 # udp=y # tcp=y vers2=y vers3=y vers4=y vers4.0=y vers4.1=y vers4.2=y # rdma=n #
這對我有用。