몇 시간 동안 읽고 시행착오를 거친 후 nfs 설치 문제와 해결 방법을 설명하고 싶습니다.
나는 수년 동안 가상 분야에서 일해 왔습니다.데비안 8.5호스트 시스템은 imx, raspi, beagle 보드 등을 기반으로 다양한 임베디드 장치용 소프트웨어를 개발합니다.
개발 중에는 호스트 시스템에서 nfs를 통해 내장된 루트 파티션을 마운트하는 것이 유용합니다. 구성은 일반적으로 간단합니다.
호스트 구성
# /etc/exports
/opt/tftpboot/rootfs *(rw,sync,insecure,no_subtree_check,no_root_squash)
- 와일드카드 대신 특정 IP 사용을 권장합니다.
- 또한 프로덕션 환경에서 안전하지 않은 옵션도 제거되었습니다.
클라이언트 구성
커널이 네트워크 파일 시스템을 지원하는 경우 루트 파일 시스템 설치는 내장/또는 원격 시스템에서 쉽게 구성될 수 있습니다.
# example part of the kernel command line
root=/dev/nfs nfsroot=10.0.102.247:/opt/tftpboot/rootfs,nolock
그건 그렇고, 새로운 버전의nfs 커널 서버, 와 함께 제공됨데비안 10.2또는9.x루트 파일 시스템을 마운트할 수 없습니다. 호스트 장치에 오류 로그가 없고 원격 시스템에 오류 로그가 없는 상태에서 부팅 프로세스가 중단되었습니다.
셸에서 테스트하기
플래시에서 원격 시스템을 부팅하고 비지박스 셸에서 원격 폴더를 마운트하려고 시도했지만 실패했습니다.
$ mount -t nfs 10.0.102.247:/opt/tftpboot/rootfs /mnt/nfs
no route to host
Ping은 잘 작동합니다 ;-) 호스트 측의 방화벽도 잘 구성되어 있습니다. 다른 문제(예: 네트워크 문제)를 배제한 후 NFS V4를 사용하도록 mount 명령을 변경했으며 mount 명령이 예상대로 작동합니다.
mount -t nfs -o nfsvers=4 10.0.102.247:/opt/tftpboot/rootfs /mnt/nfs
답변1
해결책
이제 커널 명령줄에서 루트 파일 시스템 마운트로 다시 전환하고 NFS V4를 전달해야 합니다.
# working example part of the kernel command line
root=/dev/nfs nfsroot=10.0.102.247:/opt/tftpboot/rootfs,v4,tcp