포스트

임베디드 스터디 - NFS

임베디드 스터디 - NFS

NFS (Network File System)

  • NFS는 네트워크를 통해 원격 서버의 파일시스템을 로컬처럼 마운트하는 기술이다.
    • 사용자 입장에서는 로컬 디스크와 동일하게 ls, cd, cat 등으로 접근 가능
    • 서버에서 파일을 수정하면 타겟 보드에 즉시 반영됨 (재부팅·Flash 굽기 불필요)
1
2
3
4
5
로컬 마운트
  /mnt/data → 로컬 디스크 블록 읽기

NFS 마운트
  /mnt/data → 네트워크 → 서버의 디스크 블록 읽기

NFS 서버 설정 (/etc/exports)

  • NFS 서버는 /etc/exports에서 공유할 디렉터리, 클라이언트 IP, 권한을 선언한다.
1
/srv/nfs/rootfs    192.168.1.100(rw,sync,no_root_squash)
항목의미
공유 디렉터리/srv/nfs/rootfs이 디렉터리를 공유
클라이언트192.168.1.100이 IP에게만 허용
rw읽기/쓰기 권한read-write
sync동기 쓰기데이터 안전성 보장
no_root_squashroot 권한 유지클라이언트 root를 서버에서도 root로 인정
  • no_root_squash는 개발 환경 전용 옵션
    • 기본값(root squash)은 타겟 보드의 root를 서버에서 nobody로 격하 → rootfs 접근 실패
    • no_root_squash 설정 시 타겟 보드 root 권한 유지 → /dev, /proc 등 정상 마운트
    • 보안상 위험하므로 운영 환경에서는 사용하지 않음

타겟 보드 NFS 마운트 (U-Boot bootargs)

  • 타겟 보드는 U-Boot의 bootargs 환경변수로 NFS 루트 파일시스템을 설정한다.
파라미터의미
root=/dev/nfs루트 파일시스템을 NFS에서 가져오겠다는 선언
nfsroot=192.168.1.1:/srv/nfs/rootfsNFS 서버 IP + 서버의 공유 디렉터리 경로
ip=192.168.1.100타겟 보드의 IP 주소

tftp + NFS 개발 환경 전체 흐름

1
2
3
4
5
6
7
[서버 측] /etc/exports 설정
  /srv/nfs/rootfs 192.168.1.100(rw,sync,no_root_squash)

[클라이언트 측] U-Boot bootargs 설정
  root=/dev/nfs
  nfsroot=192.168.1.1:/srv/nfs/rootfs
  ip=192.168.1.100
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.