NFS 지원으로 커널을 빌드했지만 /dev/nfs를 가져오지 못함

NFS 지원으로 커널을 빌드했지만 /dev/nfs를 가져오지 못함

apt-get source깨끗한 chroot를 얻고 빌드하는 방법을 사용하여 커널 3.13.9를 빌드하려고 합니다 debootstrap(호스트와 chroot는 모두 Ubuntu Trusty를 설치한 것입니다). 내 목표는 NFS를 통해 디스크 없는 머신을 콘솔로 부팅하는 것입니다.

64비트 커널을 실행 make menuconfig하고 활성화했으며 디버깅을 비활성화하고 64비트 빌드를 수행하고 있는지 확인했습니다. 또한 Filesystem->Network Filesystem으로 이동하여 다음을 활성화했습니다.

  • 네트워크 파일 시스템
  • NFS 클라이언트 지원

호스트가 nfs-kernel-server설치되고 네트워크 부팅 시스템의 루트로 사용하려는 디렉터리에 대한 내보내기가 설정됩니다.

PXE는 정상적으로 부팅되고 커널과 initrd가 로드되었지만 오랜 시간이 지난 후 루트 파일 시스템 누락으로 인해 busybox 프롬프트로 덤프되었습니다.

이유는 무엇입니까? (또는 더 많은 정보가 필요합니까?)

편집하다:나는 갔다 nfsroot:

LABEL linux
KERNEL vmlinuz-3.13.9
APPEND root=/dev/nfs initrd=initrd.img-3.13.9 nfsroot=192.168.1.39:/nfsroot,rw ip=dhcp rw

답변1

~처럼커널 문서상태는 /dev/nfs실제 장치가 아니라 NFS 를 rootfs. nfsroot후자가 작동하려면 네트워크 인터페이스를 자동으로 구성하도록 커널을 구성하거나 프로그램에서 initramfs이를 처리하도록 해야 합니다.

또한 커널 바이너리에 NFS 지원이 내장되어 있는지 확인하세요.아니요모듈로(또는 initramfs이를 담당하는 가 하나 있습니다). 네트워크 드라이버도 마찬가지입니다. 이더넷 네트워크 카드용 드라이버를 커널 이미지에 내장하고 싶을 가능성이 높으며, 그렇지 않으면 initramfs.

간단히 말해서 다음과 같은 몇 가지 가능성이 있습니다.

  1. 위의 링크에서 알 수 있듯이 이미 root=/dev/nfs설정되어 있고 올바른 nfsroot매개변수를 제공하고 매개변수를 통해 커널에 네트워크 구성을 알려줍니다 ip(이것이 제대로 작동하는지 확인하는 가장 좋은 방법입니다. 즉 잘못 구성된 DHCP 서버를 배제하는 것입니다).
  2. DHCP 데몬을 활성화 CONFIG_IP_PNP하고 CONFIG_IP_PNP_DHCP설정하여 클라이언트에게 사용할 IP 주소와 NFS 루트를 찾을 수 있는 위치를 알려줍니다.
  3. initramfs적절하게 구성되고 NFS 마운트된 파일 시스템을 구축합니다 .

편집하다:initrd편집에서 제안한 대로 /를 사용하는 경우 initramfsNFS 마운트를 수행해야 한다고 생각합니다 initrd( initrd이 작업을 수행해야 한다는 점을 깨달아야 함). 커널을 통한 자동 마운트(예: IP 자동 구성, IIRC)는 initrd.

답변2

FalcoGer, 나도 같은 질문을 하고 있어요. 부트로더에서 이미 root=/dev/nfs를 매개변수로 전달했기 때문에 이 줄에 주석을 달려고 했더니 systemd-remount-fs가 불평을 멈췄습니다! 이제 이것이 정말로 필요한지 궁금합니다.

관련 정보