임베디드 스터디 - 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_squash | root 권한 유지 | 클라이언트 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/rootfs | NFS 서버 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 라이센스를 따릅니다.