현재 NFS 서버에서 Atmel Sama5d2 Xplained 평가 보드를 부팅하려고 합니다. 저는 Debian 9를 실행 중이고 커널 버전은 4.9.0이며 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 시스템에서 동일한 패킷을 시도했는데 작동했다는 것입니다.
나는 또한 새로운 데비안 설치를 시도했고 그것도 작동했습니다.
내 개발 컴퓨터에서 작동하지 않는 이유를 알고 싶습니다. 어떻게 고칠 수 있을까요?
답변1
Manjaro Linux(아치 기반)를 실행하는 중에도 동일한 문제가 발생했습니다. 우분투 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
#
이것은 나에게 효과적입니다.
답변2
@alanSchmitz 덕분에 몇 가지 조사 끝에 마침내 문제를 발견했습니다.
분명히 다음과 같이 커널 부팅 매개 변수에 NFS v3을 지정하여 uboot에서 NFS v3을 강제해야 합니다.root=/dev/nfs rootfstype=nfs rw nfsroot=<server_ip>:/srv/tftp/xplained/rootfs,vers=3
서버 측에서 이 문제를 해결하려고 시도했지만 NFS v3을 강제로 적용하는 방법을 찾을 수 없습니다.
서버 측에서 NFS v3을 강제로 공유를 마운트하는 방법을 찾으면 답변을 업데이트하겠습니다.