임베디드 리눅스 기반의 시스템을 개발하다 보니 빌드 후에 실행 파일을 일일히 옮기기가 귀찮아졌다.
처음 개발 환경을 인수인계 받았을 때에는 실행에 필요한 파일들을 직접 usb에 옮겨서 엎어치는 방법으로 디버깅을 해야하는 불편함이 있었는데, 이는 Samba로 윈도우에서 서버측과 클라이언트 측 폴더에 접근해서 복사하는 방법으로 개선하여 사용하고 있었다.
하지만 이보다 간편한 방법으로 파일 전송을 할 수 있는 수단이 필요했고, NFS로 파일 시스템을 연결하여 파일 공유를 하는 방법으로 구축하여 쾌적한 개발환경을 구축했다...!
프로젝트를 빌드하는 우분투 서버에 NFS 서버를 구축하기 위하여 패키지를 설치한다.
$ sudo apt-get install nfs-common nfs-kernel-server rpcbind
서버의 전체 디렉토리를 공유해버리면 공유에 필요한 파일 외에 다른 폴더의 파일들도 삭제 / 변경의 우려가 있기 때문에 공유할 파일만 넣어놓을 디렉토리를 생성한다.
$ mkdir ~/nfs
$ chmod 777 ~/nfs
$ sudo nano /etc/exports
/home/(계정이름)/(프로젝트이름)/nfs *(rw,no_root_squash,async)
공유 폴더 경로를 입력, 타겟 보드에서는 프로젝트 내의 nfs 폴더 외에 다른 폴더에는 접근 불가
:wq로 파일을 저장한다.
$ sudo service nfs-server restart
타겟보드인 임베디드 리눅스 기반의 시스템에서 마운트를 하기 위해 타겟 보드에서 네트워크 설정이 잘 되어 있는지 확인한다. ping 명령어를 통해 리눅스 서버와 연결이 잘 되어있는지 확인할 수 있다.
$ sudo mount -o nolock (NFS 서버의 IP 혹은 도메인 주소):/(공유 디렉토리[절대경로]) (NFS 클라이언트의 마운트 위치)
$ df -h
⚠ 아래와 같은 마운트 에러 발생시 nfs 관련 패키지를 설치해준다. ⚠
mount: /mnt/nfs: bad option; for several fylesystems (e.g. nfs, cifs) you might need a /sbin/mount. <type> helper program
.$ sudo apt-get install nfs-common