NFS 모듈을 사용하여 빌드된 Initrd는 NFS 루트를 마운트할 수 없습니다.

NFS 모듈을 사용하여 빌드된 Initrd는 NFS 루트를 마운트할 수 없습니다.

NFS 루트 대신 tmpfs 루트를 사용하여 디스크 없는 노드를 부팅할 수 있도록 사용자 정의 initrd를 구축 중입니다(initrd의 스크립트는 루트 장치의 내용을 tmpfs 파일 시스템에 복사한 다음 값을 변경합니다 NEWROOT). 내 테스트 환경에서는 모든 것이 괜찮아 보입니다. 사용자 정의 initrd를 생성하고 시작했습니다. /never는 tmpfs로 마운트되지 않았지만 NFS 루트에서 제공하는 모든 파일이 있습니다. 훌륭한 기능입니다.

그런 다음 실제 환경으로 이동하기 시작했고 initrd가 시작되었을 때 NFS 루트(이 시점에서는 여전히 일반적인 NFS 부팅이었습니다)를 마운트하려고 시도하는 동안 질식하고 불평했습니다 mount.nfs4: No such device.

다음 명령을 사용하여 initrd를 생성합니다.

dracut -v -m "nfs network base" --include rd.live.overlay/ / initrd-tmpfs.img

로드 중임을 확인했습니다 initrd-tmpfs.img(로드된 initrd를 나열하는 PXE 부팅의 초기 부분을 기반으로 함).

initrd가 실패하면 비상 쉘로 들어가 몇 가지 흥미로운 작업을 수행합니다.

ip addr showDHCP의 IP가 나열되고 NFS 서버에 ping을 보낼 수 있습니다.

echo $netrootNFS 시작 매개변수 나열nfs4:[Server IP]:[root location]:[nfs options]

mount -t nfs4 [Server IP]:[root location] /sysroot결과: ( mount.nfs4: No such device매우 친숙함)

modprobe nfs결과: modprobe:FATAL: Module nfs not found분명히 문제가 있습니다

grep nfs /usr/lib/dracut/modules.txt일치합니다

grep nfs /usr/lib/modules/[kernel version]/modules.order여러 번 일치한다고 언급되었지만 kernel/fs/nfs.ko | kernel/fs/nfsv3.ko | kernel/fs/nfsv4.ko이들 중 어느 것도 존재하지 않습니다.

환경: RHEL 7


내 질문에 대한 답변이 이미 작성을 마친 후에 답변이 있는 것 같습니다. 답변을 게시하겠습니다.

답변1

마지막 디버깅 단계에서 힌트를 얻었으므로 다른 사람들을 위해 답변을 게시해야겠다고 생각했습니다. grep nfs /usr/lib/modules/[kernel version]/modules.order일치 kernel/fs/nfs.ko | kernel/fs/nfsv3.ko | kernel/fs/nfsv4.ko하지만 존재하지 않습니다.

커널 드라이버를 잘 *.ko나타내며 initrd옵션이 있습니다 --add-drivers.

dracut -v -m "nfs network base" --include rd.live.overlay/ / initrd-tmpfs.img

이 되다:

dracut -v -m "nfs network base" --add-drivers "nfs nfsv4" \
--include rd.live.overlay/ / initrd-tmpfs.img

그런 다음 lsinitrd | grep nfslist nfs.ko, 루트 장치가 자체적으로 설치되고, 복사되고, 행복한 날이 되십시오. HA 디스크 없는 클러스터에 적합한 nfsv4.kotmpfs 디렉토리와 함께 NFS를 통해 부팅되는 디스크 없는 서버를 갖습니다 ./

내 테스트 환경과 대상 간의 드라이버 차이점은 포함할 드라이버를 지정할 수 있는 /etc/dracut.conf결과일 수 있지만 /etc/dracut.conf.d/너무 많이 조사하지는 않았습니다(명령을 실행할 때 드라이버를 지정하는 것이 좋습니다. 내 정신).

관련 정보