NFS를 통해 rootfs를 마운트하려고 합니다. 다음 커널 구성을 활성화했습니다.
CONFIG_NFS_FS=y (NFS support)
CONFIG_IP_PNP=y (configure IP at boot time)
CONFIG_ROOT_NFS=y (support for NFS as rootfs)
이것은 내 커널 명령줄입니다.
debug nfsrootdebug loglevel=8 console=ttymxc1,115200 imx-fbdev.legacyfb_depth=32 consoleblank=0 ip=10.42.102.244:10.42.102.5::255.255.255.0::eth0: root=/dev/nfs nfsroot=10.42.102.5:/srv/nfs/dc10,v3,tcp noinitrd
시작 메시지의 관련 부분은 다음과 같습니다.
libphy: 63fec000.etherne:01 - Link is Up - 100/Full
IP-Config: Complete:
device=eth0, hwaddr=00:d0:93:2a:6c:8e, ipaddr=10.42.102.244, mask=255.255.255.0, gw=255.255.255.255
host=10.42.102.244, domain=, nis-domain=(none)
bootserver=10.42.102.5, rootserver=10.42.102.5, rootpath=
ALSA device list:
#0: imx53-mba53-sgtl5000
Freeing init memory: 6332K
Welcome to Buildroot 2013.05!
RPC 통신 및 nfs를 통한 VFS 마운트에 대한 줄을 볼 것으로 예상했지만 "debug", "nfsrootdebug" 및 "loglevel=8"이 커널 매개 변수로 제공되므로 아무것도 없고 오류 메시지가 인쇄되지 않습니다.
nfs 서버 측에서 tcpdump를 사용하여 패킷이 전송되지 않는 것을 확인했습니다.
보드가 부팅된 후 ssh를 사용하여 nfs-server를 실행하는 컴퓨터에 연결할 수 있습니다.
무엇이 잘못되었는지 또는 이를 추가로 디버깅할 수 있는 방법에 대한 제안이 있는 사람이 있습니까?
답변1
특별히 ARM으로 작업한 적은 없지만 일반적으로 NFS 루트의 경우 명령줄은 다음과 같아야 하며 root=nfs:[Server IP]:/[Directory],[options]
(여러분에게는 그렇게 보입니다 root=nfs:10.42.102.5:/srv/nfs/dc10,v3,tcp
), initrd가 루트 정보를 구문 분석합니다. using은 root=/dev/nfs
일반적으로 더 이상 사용되지 않습니다. 파일은 /dev/nfs
설치 중에 실제로 사용되지 않으며 NFS를 사용해야 한다는 힌트일 뿐이지만 최신 initrd에 항상 존재하는 것은 아닙니다.
명령줄에서 를 사용하고 있는 것을 확인했습니다 noinitrd
. 이에 대한 이유가 있습니까? initrd의 역할은 루트 파티션 마운트의 유연성을 높이는 것이며 이 시나리오(내부 HD가 아닌 루트 장치 마운트)에 매우 적합합니다.
또한 커널 명령줄이 로컬 디스크의 파티션에서 나오나요? 아니면 디스크가 없는 시스템(NFS 루트로 PXE 부팅)입니까? 가능하다면 무슨 일이 일어나는지 확인하기 위해 디버깅할 때 로컬 디스크를 제거하는 것이 유용할 것입니다. 그러나 boot
커널 명령줄이 로컬 디스크의 파티션에서 나오는 경우에는 실현 가능성이 낮습니다.