여러분들은 코드를 어떻게 공유하시나요?
가장 많이하는 방법으로 git이 있습니다.
그런데,만약 git을 사용하지 못하는 환경에서는 어떻게 해야할까요?
노트북으로 크로스컴파일을 한 후에
라즈베리파이에서 코드를 동작시키고 있습니다.
현재 라즈베리파이에 설치된 OS는 무선 net카드가 없습니다.
그래서 git으로 코드를 다운받아 쓸 수 없습니다.
처음에는 scp를 활용해서 작업을 했습니다.
컴파일한 결과물만 보낸다면 된다 생각했기 때문입니다.
하지만 프로그램 크기가 커지면서
scp전송방법이 불편하게 느껴졌습니다.
현재 커널프로그래밍으로 각각을 동작할 모듈을 만들었는데
기본 main인 toy_system과 각각의 모듈도 함께 전송해야했습니다.
프로그램에 엔진,센서,상태머신 등등
볼륨이 커지면 커질수록 일일이 하나하나 전송해서 사용하는 것에 한계를 느꼈습니다.
https://www.ibm.com/docs/ko/aix/7.2?topic=management-network-file-system
nfs(network file system)는 이런 부분을 쉽게 해결할 수 있는 도구입니다.
원격 컴퓨터에 있는 파일,디렉토리에 접근하여
마치 내 컴퓨터에 있는 것처럼 사용할 수 있게 만들어주는 분산파일시스템입니다.
개념이 어렵다면 쉽게
"원격으로 다른 컴퓨터의 파일을 쓸 수 있는 것"이라고 이해하셔도 됩니다.
저의 경우처럼 시스템프로그래밍 작업을 할 때 유용하게 쓰인다고합니다.
리눅스를 기준으로 설명을 하겠습니다.
먼저, 가장중요한 nfs를 설치합니다.
외부에 접속할 수 있는 파일시스템을 등록하기 위한 작업입니다.
(/etc디렉토리에 속한 파일이기 때문에
관리자권한으로 vi를 실행해야 파일이 수정가능합니다.)
해당 파일에 다음과 같은 문구를 추가합니다.
제가 외부에 접속할 디렉토리는
/home/li/nfs
외부 접속을 허용할 ip는 제 라즈베리파이 주소인
192.168.123.101을 했습니다.
뒤에는 (rw,no_root_squash,no_subtree_check)를 추가합니다.
저같은 경우에는 라즈베리파이에 mount했습니다.
mkdir /m
mount -t nfs -o nolock 노트북ip:/home/kesl/nfs /m
(만약 연결이 잘 안 될 경우,
/etc/exports를 작업한 컴퓨터쪽을 reboot시켜보면 됩니다)
제 노트북에 저장된 nfs디렉토리 내부입니다.
라즈베리파이에서 마운드 디렉토리인 /m 내부입니다.
똑같죠?
테스트삼아, test.txt라는 문서를 만들었습니다.
라즈베리파이에서도 해당 파일을 볼 수 있었습니다.
라즈베리파이에서 해당 문서를 수정했습니다.
노트북에서 아까 cat test.txt한 후에 다시 해봤습니다.
일부로 결과를 보기위해 clear를 시키지 않았습니다.
라즈베리에서 수정한 내용을 볼 수 있었습니다.
mount명령어를 직업 입력하기 귀찮으실겁니다.
그럴때는 지금처럼 shell script파일을 만드는 방법이 있습니다.
저는 해당 파일을 만들어놔서
./mou.sh 명령어만 입력해서 라즈베리파이를 킨 후에 바로 마운트를 합니다.
(shell script는 유용하게 써먹을 수 있는 부분이 많기 때문에,
가볍게 사용하는 방법 익혀두면 좋습니다)
프로세스는 무엇일까?+Trace32로 ps명령어 제작 (0) | 2024.03.11 |
---|---|
커널빌드할때 뭐 설정할건지 뭉탱이로 떠요(커널 deconfig설정 불일치로 인한 오류) (0) | 2024.03.10 |
SW개발에서 가상화가 가지는 힘 (0) | 2024.01.18 |
[프로그래머스 데브코스 리눅스&커널 전문가 과정] 데브코스 3개월차 회고록 (2) | 2024.01.14 |
OSI 7Layer,어떤 식으로 구성이 된 걸까?(계층화된 이유,실제사례,인터넷의 정의) (1) | 2023.11.28 |
댓글 영역