호스트 PC(Ubuntu)가 작업 서버가 되고, 타겟보드(MA35D1)가 클라이언트가 되어 네트워크로 파일을 읽어오는 구조
# NFS 서버 설치
$ sudo apt-get install nfs-kernel-server
$ sudo apt install nfs-kernel-server
# RootFs을 놓을 폴더 생성
$ sudo mkdir -p /opt/nfsroot
# 폴더 권한을 모든 사용자가 접근 가능하게 변경 (보드 접속)
$ sudo chmod 777 /opt/nfsroot
# Yocto 빌드 결과물(RootFs.tar.bz2)을 해당폴더에 풀어놓는다
$ sudo tar -xvf nvt-image-qt5-numaker-som-ma35d16a81.tar.bz2 -C /opt/nfsroot
$ sudo nano /etc/exports
# 파일 맨 아래에 다음 내용 추가 (보드 IP)
/opt/nfsroot 192.168.0.*(rw,sync,no_root_squash,no_subtree_check,insecure)
# 설정 파일 갱신
$ sudo exportfs -ra
$ sudo systemctl restart nfs-kernel-server
# 실제로 공유된 목록 확인
$ sudo showmount -e
setenv ipaddr 192.168.0.* # 보드 IP
setenv serverip 192.168.0.** # Ubuntu
setenv gatewayip 192.168.0.1 # 공유기(게이트웨이) IP
setenv netmask 255.255.255.0 # 서브넷 마스크
setenv nfsroot /opt/nfsroot # PC의 RootFs 경로
U-Boot> setenv bootargs "noinitrd root=/dev/nfs rw nfsroot=${serverip}:${nfsroot},v3,tcp ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:ma35d1:eth0:off console=ttyS0,115200n8 rdinit=/sbin/init mem=248M rootwait=1"
U-Boot> setenv bootargs "noinitrd root=/dev/nfs rw nfsroot=192.168.0.140:/opt/nfsroot,v3,tcp ip=192.168.0.43:192.168.0.140:192.168.0.1:255.255.255.0:ma35d1:eth0:off console=ttyS0,115200n8 rdinit=/sbin/init mem=248M rootwait=1"
# 설정 저장
U-Boot> saveenv
nand read <Memory_Address> <offset> <Size>
# 1. 커널로드
$ nand read 0x80080000 0x400000 0x1800
000
# 2. DTB로드
$ nand read 0x85000000 0x3c0000 0x40000
# 3.실행
$ booti 0x80080000 - 0x85000000

NAND read: device 0 offset 0x400000, size 0x1800000NAND read: device 0 offset 0x3c0000, size 0x40000위의 복잡한 과정을 nfs라는 명령어 하나로 합쳐버릴 수 있습니다.
# nfs라는 이름의 실행 스크립트 등록
setenv nfs "nand read 0x80080000 0x400000 0x1800000; nand read 0x85000000 0x3c0000 0x40000; booti 0x80080000 - 0x85000000"
saveenv
# 이후에는 이것만 치면 됩니다.
run nfs

/usr 디렉토리 밑에 hello.txt를 만들고 임베디드 보드에도 똑같이 있는지 확인smjeon@smjeon-VirtualBox:/opt/nfsroot/usr$ echo "hello!" > hello.txt
smjeon@smjeon-VirtualBox:/opt/nfsroot/usr$ ls
bin games hello.txt include lib libexec sbin share src

