0. 리눅스 기초공부
교재 : 이것이 우분투 리눅스다, 개정판, 우재남지음, 한빛미디어, 2020
공부할부분 -> 아래부분을 공부하면서 실습은 Jetson nano보드로 진행
2장. 리눅스소개(2장공부후 Jetson보드에 리눅스(Jetpack)설치)
4장. 기본명령어(4.1절~4.8절까지만 공부 -> Jetson보드에서 명령어 실습)
5장. X윈도우(5.2절까지만, 개념만 공부, 생략가능)
8장. 원격지 시스템관리(8.1절, 8.2절만 공부 -> Jetson보드에서 명령어 실습 )
15장. 삼바서버설치(15.2절만 공부) -> 공부만하고 실제로는 visual studio code를 이용할것 -> Jetson보드에서 명령어 실습
* 자주쓰는 기능은 기술자료게시판 게시글 [Linux] Linux 명령어를 참고할것
1. Jetpack 설치
준비 : 보드, 5V/4A Jetson nano 전용 파워어댑터, 64GB SD카드, 모니터, 키보드, 마우스
초기화 작업시는 모니터와 마우스, 키보드를 연결하고 작업할것
아래 사이트 지시대로 설치하면 됨
https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit
부팅후 초기화 작업시 컴퓨터이름: jetsonnano, id : airlab, passwd : airlab 으로 설정할것
* 교재에서는 root계정으로 로그인해서 작업하는데 그렇게 하지 말고 airlab 계정으로 로그인하고 루트(root)권한이 필요할때는 sudo 명령어를 사용할것
2. 무선랜카드 설치
초기화작업을 완료하면 먼저 인터넷에 연결해야함
2.1 iptime N100mini(2.4GHz만 지원)
드라이버 설치 필요없이 정상동작함
2.2 ZIO 1570NU(2.4GHz만 지원)
드라이버 설치 필요없이 정상 동작함
2.3 NEXT-1201ac mini(2.4G/5G 듀얼밴드 최신사양지원)
드라이버 설치 필요없이 정상 동작함
3. 한글패치 설치
아래 사이트를 참고하여 한글패치를 설치할것
https://makingrobot.tistory.com/96
그리고 Jetpack을 최신상태로 업데이트해준다.
$ sudo apt-get update
$ sudo apt-get upgrade
$ reboot
4. 쿨링팬 자동실행방법
Jetson nano는 쿨링팬을 자동으로 관리해주지 않는다.
사용자가 직접 제어해야한다. 아래 3가지중 방법중 첫번째 방법을 사용하고 나머지는 참고만 하라.
4.1 쉘초기화시 실행
bash쉘 초기화 파일인 /home/ncslab/.bashrc파일의 마지막줄에 sudo sh -c 'echo 100 > /sys/devices/pwm-fan/target_pwm' 를 추가해준다. -> .bashrc에서 .는 리눅스에서 숨김파일을 나타낸다. 숨김파일을 보려면 ls -a를 실행해야한다.
$ cd ~ -> 사용자 디렉토리로 이동
$ vi .bashrc 또는 gedit .bashrc -> vi에디터나 gedit에디터에서 편집
~~~~
sudo sh -c 'echo 100 > /sys/devices/pwm-fan/target_pwm' -> 마지막줄에 추가함
$ reboot -> 재부팅후 쿨링팬이 동작해야함
4.2 새로운 서비스로 작성
/sys/devices/pwm-fan/target_pwm 파일에 속도값(0~255)를 저장해주면 팬이 동작함
시스템을 시작할때마다 자동실행하려면 서비스(서버) 파일 생성해야함
$ sudo gedit /etc/systemd/system/fan.service
또는
$ sudo vi /etc/systemd/system/fan.service
[Unit]
Description=fan server
[Service]
ExecStart=/bin/sh -c '/bin/echo 100 > /sys/devices/pwm-fan/target_pwm'
[Install]
WantedBy=multi-user.target
$ sudo systemctl daemon-reload -> 데몬 리로드
$ sudo systemctl enable fan.service -> 서비스 등록
$ sudo systemctl start fan.service -> 서비스 시작
4.3 rc.local 서비스 이용
/etc/rc.local서비스는 리눅스에서 제공하는 부팅시 자동으로 실행되는 쉘스크립트임
/etc/rc.local 파일 안에 자동으로 실행할 명령어를 작성해주면 됨
/etc/rc.local 파일이 없는경우 새로 만들어주면 됨
$ sudo vi /etc/rc.local
#!/bin/bash
sudo sh -c 'echo 100 > /sys/devices/pwm-fan/target_pwm'
저장후 파일의 퍼미션을 user가 실행가능으로 변경해줘야함
$ sudo chmod u+x /etc/rc.local
시스템을 reboot하면 팬이 동작해야함
/sys/devices/pwm-fan/target_pwm 파일은 부팅할때마다 자동으로 생성되는 가상 파일이므로 부팅할때마다 팬속도값(0~255)을 설정해야함
5. 원격제어환경구축
교재 8.1절, 8.2절만 공부
교재8.1절 텔넷서버
교재8.2절 OPENSSH 서버
PC에서 젯슨보드에 원격접속하려면 PC와 젯슨보드가 동일한 공유기에 연결되어야 함
PC에 무선랜카드를 연결하여 작업하거나 PC는 유선랜(LAN)에 연결한채로 포트포워딩을 이용하여 젯슨보드에 접속하는 방법이 있음
포트포워딩 방법은 기술자료->[개발환경구축]1.포트포워딩 , [개발환경구축]2. vscode와 ssh를 이용한 원격개발 참고할것
PC는 유선랜에 접속하고 젯슨보드는 공유기에 무선으로 접속하여 실험할것-> 통신속도 개선하고 비용을 절약할수 있음
6. 윈도우즈에서 리눅스파일 공유하기
6.1 삼바서버 설치 -> 읽어만 보고 실습은 6.2절 방법을 사용할것
교재15장 내용 중 윈도우즈에서 리눅스 디렉토리를 공유하는 부분만 공부할것
리눅스에서 vi 에디터를 이용하여 소스파일을 편집하는것은 매우 힘들다 따라서 윈도우즈에서 리눅스파일을 열어서 편집할수 있도록해주는 것이 삼바서버이다.
* 주의사항
- 교재의 내용중 윈도우즈 Home버전에서는 안되는 기능있음 Pro버전으로 재설치바람
- 삼바서버를 실습할때는 PC와 젯슨보드 모두 공유기에 연결된 상태로 진행할것
- 포트포워딩을 사용하면 삼바서버에 접속안됨
- 삼바설정시 공유디렉토리는 사용자의 home 디렉토리로 설정한다.
- 나중에 home 디렉토리에서 모든 작업을 하기 때문이다.
- 윈도우즈에서 삼바서버에 연결된 상태로 리눅스에서 shutdown하면 안됨, 반드시 윈도우즈에서 삼바서버연결을 해제한 후에 shutdown할것
6.2 vscode를 이용하여 리눅스파일 공유하기
[개발환경구축]2. vscode와 ssh를 이용한 원격개발 참고할것
다음부터는 모니터,키보드,마우스를 버리고 PC에서 ssh를 이용하여 원격접속하여 모든 작업을 처리하라
Jetson nano에 대한 자세한 내용은 다음 사이트를 참고할것
https://docs.nvidia.com/jetson/l4t/
7. Jetson 보드 전용 명령어
메모리사용량 보기
$ sudo tegrastats
파워모드 설정
$ sudo nvpmodel -q -> 모드확인
$ sudo nvpmodel -m 0 -> MAXN 모드로 설정
$ sudo jetson_clocks -> 현재 파워모드에서 클럭주파수를 최대로 설정
jetson-stats 설치 : 실시간 시스템정보 모니터링
$ sudo apt-get install python3 -> 파이썬3 먼저설치
$ sudo apt-get install python3-pip -> pip3 먼저설치
$ sudo -H pip3 install -U jetson-stats
$ reboot -> 설치후 리부팅해야함
$ jtop -> jetson 보드정보 실시간 모니터링, 윈도우즈의 작업관리자랑 같음
-> jetson-stats 설치하면 위에서 설치한 쿨링 fan을 정지시킨다. jtop 메뉴에서 5 ctrl -> fan mode -> system으로 설정하면 운영체제에서 설정한대로 동작 -> 재부팅하여(reboot) 팬이 자동으로 동작하는지 반드시 확인할 것
$ jetson_release -> Jetpack 정보 보기
참고사이트 : https://rbonghi.github.io/jetson_stats/index.html
8. 과제
1. 리눅스와 윈도우즈의 차이점을 설명하라.
2. 리눅스 모든 디렉토리(폴더)( /(root 디렉토리), home, usr, etc, dev 등)의 용도를 설명하시오.
3. 다음 기능을 수행하는 리눅스 명령어와 실행결과를 첨부하시오.
- vi 에디터의 중요 단축키, 편집모드,명령모드,저장,종료 등
- 중요 와일드카드문자의 의미
- 디렉토리 변경
- 파일목록 출력, 중요옵션
- 파일 생성, 복사, 이름변경, 이동, 삭제, 중요옵션
- 디렉토리 생성, 복사, 이름변경, 이동, 삭제, 중요옵션
- 화면 삭제
- grep 명령어 의미와 사용예
- 패키지 설치
- 작업관리자(cpu,메모리,GPU 등 하드웨어정보, 프로세스정보 관련 명령어)
4. 아래 그림은 ls명령어로 파일 및 디렉토리 목록을 출력한 결과이다. 각 라인에 표시된 모든 속성값들을 자세히 설명하시오.
5. 리눅스에서 /home 디렉토리 안에서 파일명에 bash라는 단어가 포함된 파일을 모두 찾으시오. 실행결과를 첨부할 것.
6. 서버, 클라이언트의 의미를 설명하라.
7. GUI, CLI, TUI 프로그램의 의미를 설명하라.
8. 통신 프로토콜과 TCPIP 프로토콜을 설명하라.
9. IP주소와 포트의 의미를 설명하라.
10. 리눅스에서 ip주소를 확인하는 명령어는?
11. 리눅스에서 사용중인 네트워크 포트를 확인하는 방법은
12. 공유기는 2개의 IP주소를 갖고 있다. 각각의 의미를 설명하라.
13. 리눅스 프로그램들은 왜 CLI 방식인가?
14. Jetson nano보드의 회로도와 유저가이드(user guide)를 찾아서 첨부하고 보드의 전원규격을 설명하라.
15. Jetson nano 보드의 특징을 설명하라. PC와 차이점은 무엇인가?
16. Jetson nano 보드의 사양을 조사하라. CPU, RAM, Storage(보조기억장치), GPU 등
17. 리눅스에서 부팅할때마다 원하는 명령을 자동으로 실행하는 방법에 대하여 설명하시오.
18. 텔넷, ssh, 삼바서버의 설치방법을 정리해서 제출하시오.
19. 리눅스에서 개발할때 ssh(telnet)서버가 왜 필요한지 자세히 설명하시오.
20. 리눅스에서 개발할때 삼바서버가 왜 필요한지 자세히 설명하시오.
9. Jetson nano 보드에 모니터,키보드를 연결하지 않고 와이파이를 설정하는방법
PC에서 Jetson 보드의 micro USB 커넥터를 통하여(시리얼통신) 리눅스에 로그인 가능함
이기능을 이용하면 모니터 연결없이 cli 환경에서 와이파이 설정이 가능함
1. 준비물
PC, micro USB 케이블(1m), Jetson nano 보드, 5V/4A DC 어댑터
2. 연결방법
- 전원은 5V/4A DC 어댑터를 이용하여 배럴잭에 연결, micro USB 커넥터로 전원공급하면 안됨
- micro USB 케이블을 이용하여 PC와 Jetson nano보드의 micro USB 커넥터를 연결
3. PC에서 작업
- Putty 설치
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
- 장치관리자에서 COM포트 번호 확인
Jetson 보드를 PC에 연결하면 장치관리자에서 USB직렬장치(comx)로 인식됨
- Putty 실행
Connection type 은 serial 체크, Serial line: 장치관리자에서 확인한 COM포트 설정, Speed : 115200
-> open 클릭
아래 화면에서 스페이스키를 누르면 로그인 화면 나옴
아이디, 패스워드 입력하여 로그인
4. 와이파이 설정
네트워크 설정프로그램 관리자권한으로 nmtui 실행
$ sudo nmtui
Activate a connection 클릭하여 원하는 공유기 id선택하여 패스워드 입력후 접속하면됨
원하는 공유기 id선택
패스워드 입력
연결된 공유기에 * 표시됨
화살표키로 Back 버튼으로 이동후 엔터 Quit 이동후 엔터
5. 네트워크 정보 확인
ifconfig 명령으로 ip주소 확인 -> 이후에는 케이블을 분리하고 ssh를 이용하여 원격접속하여 사용함