Atmel Sama5d2xplained에서 NFS 부팅이 실패합니다.

Atmel Sama5d2xplained에서 NFS 부팅이 실패합니다.

현재 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을 강제로 공유를 마운트하는 방법을 찾으면 답변을 업데이트하겠습니다.

관련 정보