/*
NFS(Network File System)이란
- Host computer의 저장공간을 빌려 쓰는 것.
- Target 보드의 File system을 host computer에 설치하고, Target 보드 부팅시에 이더넷으로 접속하는 방법
- Target 보드가 꺼져있거나 연결되어 있지 않더라도, target 보드의 파일을 편집 가능.
- Target 보드에 NFS 클라이언트 설치, host computer에는 NFS 서버 설치.
임베디드 응용 프로그램을 개발하고 테스트하기 위해서는 컴파일 한 실행 파일을 (Target 보드) 램 디스크에 Loading 해야 한다.
하지만, 응용 프로그램을 컴파일 할 때 마다 램 디스크를 host에 mount 하여 업데이트 하기는 힘든 일.
(실행 파일을 매번 받아와서 검사해 볼 수는 없는 일)
NFS는 네트워크를 통해 host의 파일 시스템에 target이 mount할 수 있게 해주는 시스템.
(host의 디렉토리 일부의 사용 권한을 target에게 부여하는 일)
NFS를 이용해 host의 작업 디렉토리를 target보드의 램 디스크에 mount하여 사용하면 개발이 훨씬 편리.
(그래서 내가 사용하는 target보드 $root@nvidia : 에서 samplecode 가 보였구나. 실제로 target보드에는 없는 것인데 마치 자기 것인양 사용했구나!)
(mount 할수 있게 한다는게 가져다가 볼 수 있게 한다는 의미로 생각하면 쉽구나.)
NFS를 이용하면 host의 공유 디렉토리를 마치 target 보드의 일부 디렉토리 처럼 사용할 수 있어서 편리. target보드는 host에서 제공하는 nfs 공유 디렉토리를 자신의 램 디스크에 mount하여 사용.
ex)samplecode
Host에서 작업이 완료되면 target 보드에서는 (host 상에서) 완료된 프로그램을 target의 권한으로 컴파일하고 실행할 수 있다.
나의 경우 우분투가 설치되어 있는 개발 PC에서 NFS 서버를 설치하여 target 보드의 파일 시스템을 개발 PC로 올려 코드를 컴파일 디버깅하고 실행, 최종적으로 eMMC 플래시 메모리로 올려 개발 PC와의 연결 없이 Standalone으로 동작 할 수 있게 하였다.
*/
개발 환경 설정----------------------------------------------------------
타켓 보드와 이더넷 통신 테스트
우분투에서
ifconfig eth0 192.168.0.2
타켓 보드에서
ping 192.168.0.2
우분투에서
$ cd /etc/xinetd.d/
tftp 파일을 복사
디렉토리 만들기
$ mkdir /tftpboot
슈퍼인터넷데몬 시작
$ /etc/init.d/xinetd restart
디렉토리 만들기
$ mkdir ~/work
linux_devicedriver.zip 파일 ~/work 복사
$ cd ~/work
압축파일 풀기
$ unzip linux_devicedriver.zip
$ cd G2450_bsp/
$ cd 02_image/
$ cp zImage /tftpboot
타켓보드에서 (u-boot에서)
tftp 32000000 zImage
이미지 다운로드후
bootm 32000000
부트로더 환경 설정
setenv bootcmd 'tftp 32000000 zImage; bootm 32000000'
save
호스트 PC에서
$ mkdir /nfsroot1
$cd ~/work/G2450_bsp/01_bsp#
$ tar zxvf rootfs_20140218.tar.gz
$ mv rootfs /nfsroot
$ /etc/init.d/nfs-kernel-server start
타겟보드에서
$ setenv bootargs 'root=/dev/nfs rw nfsroot=192.168.0.2:/nfsroot ip=192.168.0.102:192.168.0.2:192.168.0.1:255.255.255.0::eth0:off:netmask=255.255.255.0 console=ttySAC1 115200n81'
$ saveenv