2. 2⃣ OS와 CLI, CLI 명령어, Vim 공부
1⃣ 장비 소개 및 카메라 연결 3⃣ SSH로 장비 상호 연결
강의 개요
2
Ubuntu CLI, Vim
Raspberry Pi NUC
Raspberry Pi Camera
SSH
3. 강의 목표
•실험 동안 사용할 장비를 소개하고 세팅합니다
•운영체제와 CLI란 무엇인지 배웁니다
•Linux CLI 사용 방법을 익힙니다
•네트워크 개념과 원격 접속 (SSH) 방식을 공부하고 적용합니다
•장비 사이 연결 및 기본 세팅을 마칩니다
3
4. 01. 장비 소개 & 카메
라 세팅
- Raspberry Pi & NUC
- 실험실 기본 세팅
- 라즈베리 파이 카메라 연결
4
5. 라즈베리파이 (Raspberry Pi) 는 영국의 라즈베리 파이 재단에서 교육용
으로 만든 초소형, 초저가의 컴퓨터입니다. 싱글 보드 컴퓨터 (SBC)로, 기
능 구현을 위해 인쇄 회로 기판, PCB 위에 내장한 컴퓨터 시스템입니다.
메모리, 입출력 기능을 위한 최소 컴퓨터 요구 사항을 포함하고 있습니다
Raspberry Pi & NUC
5
Raspberry Pi
Pi Camera
라즈베리파이 전용 카메라입니다
인텔에서 출시한 미니 PC 플랫폼입니다. 작은 크기로, Raspberry Pi 보
다 더 좋은 성능을 지녔으며, 일반 PC로 사용되기도 합니다.
NUC
6. 🖥 실험실의 인터넷 회선,
스위치와 Raspberry Pi, NUC이 연결되어 있습니다
*스위치는 자신에게 연결된 디바이스들의 맥 주소(기기 주소)와
포트가 기록된 표를 갖고 있고, 이 표를 사용해 데이터의 목적지를
파악해 해당하는 장치에 데이터를 보내줍니다.
*스위치를 사용해 RaspberryPi와 NUC이
네트워크에 연결될 수 있습니다
🖥 Raspberry Pi, NUC과 연결할
모니터, 키보드, 마우스 등이 준비되어 있습니다
실험실 기본 세팅
6
7. Raspberry Pi에 카메라 연결
7
라즈베리 파이의 전원을 끄고, 카메라 모듈을 연결합니다!!
영상으로 연결 방법 확인: https://projects.raspberrypi.org/en/projects/getting-started-with-picamera/2
1⃣
Pi에 모니터, 키보
드, 마우스를 연결해
주세요
8. - Raspberry PI 설정 확인
- Reboot Raspberry PI
8
라즈베리 파이에 모니터를 연결하고 GUI로 카메라 설정을 완료합니다
2⃣
Pi에 모니터, 키보
드, 마우스를 연결해
주세요
Raspberry Pi에 카메라 연결 (2)
9. Raspberry Pi에 카메라 연결 (3)
- 터미널 창을 열어 아래와 같은 명령어를 입력합니다
9
Pi에 모니터, 키보
드, 마우스를 연결해
주세요
카메라 연결 테스트 - Raspberry Pi 카메라로 사진 찍기
3⃣
10. 📽 파이썬으로 라즈베리 파이 카메라의 영상 녹화하기
10
필요한 패키지를 설치합니다 - 편집기 vim, python 패키지 관리자
Vim 편집기를 엽니다
apt-get은 Advanced Packaging Tool의
약자입니다. Linux 시스템에서 필요한 패키
지를 설치하고 제거하는 데 사용됩니다.
apt-get update는 설치되어 있는 패키지들
의 새로운 버전이 있는지 확인할 때 쓰입니다
apt-get upgrade는 확인한 패키지들의 최
신 버전에 따라, 최신 버전으로 패키지를 업그
레이드 해주는 명령어입니다
Pi에 모니터, 키보
드, 마우스를 연결해
주세요
Raspberry Pi에 카메라 연결 (4)
11. 📽 파이썬으로 라즈베리 파이 카메라의 영상 녹화하기
11
아래와 같이 코드를 작성합니다
Pi에 모니터, 키보
드, 마우스를 연결해
주세요
Raspberry Pi에 카메라 연결 (5)
필요한 모듈을 불러옵니다. PiCamera 라이브러리는 파이썬에
서 Raspberry Pi에 연결된 카메라에 접근하고, 다룰 수 있게 해
줍니다.
카메라에 접근할 수 있는 camera 변수를 생성합니다
5초 동안 다른 동작을 멈춥니다 (sleep)
이 부분을 수정해 비디오를 몇초 동안 녹화할지 정할 수 있습니다
sleep에서 정의된 시각이 흐른 뒤, 카메라 영상 녹화와
미리보기를 멈춥니다
현재 카메라에서 들어고 있는 영상 입력을 확인합니다
비디오 녹화를 시작하고, 비디오 코덱을 'rgba' 로 저장합니다
record_video.py
12. 📽 파이썬으로 라즈베리 파이 카메라의 영상 녹화하기
12
파이썬 코드를 실행한 뒤, 녹화된 영상을 확인합니다
Pi에 모니터, 키보
드, 마우스를 연결해
주세요
Raspberry Pi에 카메라 연결 (6)
14. 운영 체제 (OS)
14
운영체제란, 컴퓨터 시스템의 하드웨어 자원과 소프트웨어 자원을 효율적으로 관리하여 사용자
에게 편리함을 제공하는 프로그램입니다.
대표적으로 컴퓨터에는 Windows, Linux, UNIX 등의 운영체제가 있고, 모바일 (핸드폰) 에는 대
표적으로 iOS와 안드로이드 OS 가 있습니다
Windows iOS Android Linux
15. 운영 체제 (OS)
15
운영체제는 프로그래머가 컴
퓨터 하드웨어를 모르더라
도, 소프트웨어를 쉽게 만들
수 있도록 해줍니다.
운영체제의 발전 목적은 아래
와 같습니다:
- 컴퓨터 처리 능력 증대
- 컴퓨터 응답 시간 단축
- 사용 가능도 증대
- 신뢰도 향상
운영체제는 여러 자원들을 제
어하고, 상태를 감시합니다
16. 운영 체제 (OS)
16
Raspberry Pi OS. Raspberry Pi에는 자체적 운영체제가 있습니다. 라
즈베리 파이의 저성능 CPU에 최적화가 잘 되어 있는 운영체제입니다.
Ubuntu 운영체제는 Linux를 기반으로 만들어졌으며, 개인용 데스크
탑 환경에 최적화 되어 있습니다. 누구나 무료로 사용할 수 있습니다.
실습에서 사용할 Raspberry Pi에는 Raspberry Pi OS (구 Raspbian OS)와 Ubuntu 입니다. 모두
Linux라는 운영체제에 기반을 두어 만들어졌습니다.
Ubuntu
17. Bash 명령어
Raspberry Pi OS와 Ubuntu OS 터미널
은 모두 Linux에 기반을 두고 만들어졌고,
Bash CLI 셸을 사용합니다. CLI 환경이 무
엇인지 배우고 실험에서 사용될 기본적인
Linux CLI 명령어들을 배우도록 하겠습니
다
17
18. Raspberry Pi OS와 Ubuntu OS 는 모두 Linux 에 기반을 두고 만들어졌고, Bash CLI
셸을 사용합니다.
Bash 란?
이번 실험에서 사용할 Bash는 UNIX 운영체제의 셸 (Shell)에서 사용하는 CLI
(Command Line Interface) 이자, 컴퓨터 명령 언어를 가리킵니다
18
실험동안 Bash에서 사용할 명령어를 알아보
기 전에, 셸과 CLI에 대해 알아봅시다
19. 셸(Shell)과 사용자 인터페이스
사용자가 컴퓨터로 어떤 작업을 수행할 때, 컴퓨터는 사용자가 입력한 명령어를 이해하고 알맞게 하
드웨어를 제어해 실제 동작해야 합니다. 이 때, 사용자의 입력을 이해해 주는 역할을 하는 부분이 셸
(Shell), 해석된 사용자 명령을 가지고 하드웨어를 동작 시키는 부분이 커널 (Kernel) 입니다
19
참고 자료: https://mjmjmj98.tistory.com/34
참고: Shell Script
텍스트 형식으로 저장되는 프로그램으로, 컴
퓨터는 shell script 파일에 저장되어 있는 명
령어를 한 줄씩 차례로 읽어서 실행합니다.
셸과 커널은 운영체제의 한 부분으로, 셸에서 상호자와 사용하는 부분을 사용자 인터페이스 (User
interface) 라고 합니다. 사용자 인터페이스는 크게 GUI (Graphic User Interface)와 CLI (Command
Line Interface)로 나눌 수 있습니다
20. CLI (Command Line Interface) 란?
명령 줄 인터페이스는 텍스트로, 터미널(Terminal)
을 통해 사용자와 컴퓨터가 상호작용하는 방식입니
다. 사용자는 컴퓨터 키보드 등을 통해 텍스트를 입
력하고, 컴퓨터 또한 문자열 형태로 결과를 보여줍
니다
20
현재는 거의 모든 운영체제에서 GUI
(Graphic User Interface)를 지원하고,
모니터에서 윈도우 창 등을 보며 대부분
의 컴퓨터 작업을 진행할 수 있습니다
CLI (Command Line Interface) GUI (Graphic User Interface)
CLI에서 폴더 내용을 확인하는 법과 다른 폴더로 이동하는 방법
ls: 현재 폴더의 내용을 확인하고 cd: 새로운 폴더 위치로 이동
GUI에서 폴더 내용을 확인하는 법과 다른 폴더로 이동하는 방법
클릭을 통해 폴더를 열어 내용을 확인하며 해당 폴더의 창으로 이동함
21. 리눅스 명령어 - 파일시스템, 디렉토리
21
파일시스템(File System)은 운영체제가 저장되어 있는 파일과 폴더들을 효율적으로 관리하고 읽고 쓰기 위
한 체계입니다.
파일이란, 프로그램 또는 데이터 등과 같은 정보들의 집합입니다. 바이트의 연속적인 연결로, 디스크 등 기
억 장소에 저장되어 있습니다. 디스크의 여러 파일들은 각자의 고유한 이름을 가짐으로써 구별됩니다
디렉토리란 파일들을 보다 효율적으로 관리하는 방법으로, 서로 연관된 파일들을 한곳에 저장할 수 있도록
합니다. 서류함처럼 관련된 파일들이 저장되는 장소를 제공합니다. 디렉토리도 파일의 일종입니다
22. 리눅스 명령어 - ls: 디렉토리 내 파일 목록 나열
22
숨김 파일 포함 파일 목록 조회
/etc/sysconfig 아래 디렉토리 조회
현재 디렉토리의 파일 목록
자세히 보기
확장자가 exe인 파일 목록 나열
디렉토리 안에 a로 시작하는 파일, 디렉토리 목록 조회
23. 리눅스 명령어 - cd: 디렉토리 이동, 순회
23
/etc/sysconfig 디렉토리로 이동
상위 디렉토리로 이동
사용자의 홈 디렉토리로 이동. cd 뒤 "~" 를 적어도 동일
상대 경로로, 상위 디렉토리로 간 뒤, 상위 디렉토리 아래의
/etc/config로 이동. ".." 은 현재 디렉토리 바로 위를 가리킴
지금 있는 디렉토리(위치)를 출력함
24. 리눅스 명령어 - mkdir, rmdir: 디렉토리 생성, 삭제
24
ab 디렉토리 아래 cde 디렉토리 생성,
ab가 없으면 ab도 생성
비어 있는 디렉토리 abc삭제
abc 라는 디렉토리 생성
디렉토리(폴더)를 생성하고, 삭제한 뒤의 모습입니다.
rmdir로 ab를 삭제하는 명령을 입력해도,
rmdir: failed to remove 'ab': Directory not empty
오류가 납니다. ab 아래에 cde라는 디렉토리가 있어 비어있지 않기 때문입니다
25. Vim(Vi improved)은 Unix CLI 환경에서 사용할 수 있는 메모장, 텍스트 편집기 입니다. 새로운
파일을 생성하고, 보고, 편집할 때 이용하기 때문에, 사용법을 필수적으로 알고 있어야 합니다
Vim에는 일반(Normal) 모드, 입력(Insert) 모드, 비주얼(Visual) 모드 세 가지 주요 모드가 있습
니다. Vim의 맨 아래에서 모드를 확인할 수 있습니다
파일 편집기: Vim 소개
25
•Normal Mode: Vim을 실행하면 기본적으로 들어가는 모드입니다. 다른 모드에서 "esc" 키를 누르면 돌아옵니다
•Insert Mode: 대표적으로 "i" 키를 누르면 입력 모드로 들어가, 일반적인 메모장처럼 글을 쓸 수 있게 됩니다
•Visual Mode: "v" 키를 누르면 들어갈 수 있습니다.
test.txt 파일이 없다면 생성하고, 있다면 편집합니다
26. 파일 편집기: Vim의 단축키
26
$ sudo vim test.txt make a txt file named ‘test’ or edit a
txt file if it exists
<Inside VIM>
a add text
dd delete line
:w save file
:wq save file and quit
/{string} search for string
$ sudo vim test.py
print(“hello world”)
$ sudo python test.py
27. 파일 편집기: Vim의 단축키, 노말모드에서의 명령어
27
이동 관련
파일 저장, 찾기
입력 관련
28. 리눅스 명령어 - touch: 파일이 없다면 새로 생성
28
빈 test.txt 파일 생성, 이미 있을 시,
수정시간만 변경
29. 리눅스 명령어 - cp,mv: 파일, 디렉토리 복사 및 이동
29
test.txt를 ab 디렉토리로 이동
ab 디렉토리를 ab2로 복사, 하위 파일 포함
test.txt 파일을 test2.txt로 복사
test.txt와 test2.txt를 ab로 이동
test3.txt를 practice.txt로 변경해
30. 리눅스 명령어 - rm: 파일, 디렉토리 삭제
30
삭제여부를 묻지 않고 파일 삭제
파일을 삭제할 때 삭제할지 여부를 한 번 더 확인
test.txt 파일 삭제 == 기본적으로 rm -i
디렉토리 abc 삭제
디렉토리 abc와 하위 파일들 모두 삭제
31. 리눅스 명령어 - cat,head,tail: 파일 미리보기
31
파일의 위부터 10줄을 보여줍니다. head -5 등
몇줄을 보일지 추가할 수 있습니다
test.txt 파일 미리보기
파일의 끝부터 10줄을 보여줍니다.
32. 리눅스 명령어를 찾는 방법
32
리눅스에는 많은 명령어들이 있습니다
또다른 리눅스 명령어를 찾고 싶다면:
1. Linux command line cheat sheet
다양한 명령어들을 간략하게 모아두고, 기
능을 설명합니다
https://phoenixnap.com/kb/linux-
commands-cheat-sheet
2. "Linux 프로그램 설치 위치 확인명령어" 등
기능을 요약해 명령어를 검색합니다
34. •두 개의 장비의 IP 주소를 확인합니다
•서로의 IP 주소를 알고 있기 때문에, 이를 사용해
서 서로의 기기 CLI 환경에 접속할 수 있습니다
•SSH 연결로, 다른 기기의 CLI 환경에 원격으로
접속하여 다른 기기를 다뤄 봅시다
SSH를 통한 장비 연결
34
35. •Secure: 보안된 Shell: 셸 Protocol: 프로토콜
=> 컴퓨터 장비들이 인터넷을 통해 데이터를 전송하고, 원격에서 다른 컴퓨터를 제어하기 위해
만들어진 프로토콜
•프로토콜이란, 컴퓨터 등의 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙을 포함한 체계
입니다. 사람과 사람 사이 이야기를 주고 받을 때에도 서로 이해 가능한 언어가 있듯이 컴퓨터
또한 미리 약속되어 서로가 이해할 수 있는 형식으로 메시지를 주고 받아야 합니다
•즉, SSH는 보안적으로 안전하게, 다른 컴퓨터의 셸에 로그인할 수 있게 해주기 위한 통신 프로
토콜입니다. 일반적으로 원격 장비의 CLI에 접속하고, 로그인하고, 원격 장비에서 명령어를 실행
할 때 사용합니다
•SSH와 연결된 SFTP, SCP 프로토콜 등으로 파일을 송수신 할 때, X11 연결 (GUI) 등에도 사용
됩니다
SSH(Secure Shell Protocol)란?
35
참고 자료: X11 연결로 원격 장비의 GUI 사용하기
리눅스-리눅스: https://harryp.tistory.com/684
리눅스-윈도우: https://m.blog.naver.com/sunchan683/221465317759
36. 36
Pi에 모니터, 키보
드, 마우스를 연결해
주세요
ip 주소 netmask
고정 IP 할당을 위해 확인해야 하는 정보
•기기가 할당 받은 IP 주소
•netmask
•gateway
gateway
Raspberry Pi IP 주소 확인
37. Raspberry Pi 고정 IP 주소 설정 (참고)
37
Pi에 모니터, 키보
드, 마우스를 연결해
주세요
•이번 실험에서는 라즈베리 파이에 고정 IP가 미리 세팅되어 있지만,
Raspberry Pi에 초기 IP를 고정하기 위해서는 따로 설정해 주어야 합니다
•기본적으로 DHCP라는 방식으로 할당을 받기 때문인데, 기기가 껐다 켜지는 등 인터넷과의 연
결이 끊겼다가 다시 연결되는 등의 상황에서 IP 주소를 새로 할당받고 바뀔 수 있습니다. 따라서
외부에서 Pi에 접근하려면 매번 변경된 주소를 파악하고 그에 맞추어 연결해야 한다는 어려움이
있습니다.
•DHCP란, Dynamic Host Configuration Protocol의 약자로, 인터넷을 사용할 때 받을 인터넷
주소, IP 주소를 기기가 인터넷에 접속할 때 동적(Dynamic)으로 할당해주는 프로토콜입니다. IP
주소를 임대해주는 식으로 기간 동안만 기기가 그 IP 주소를 사용하도록 합니다.
•dhcpcd 설정을 변경해, 고정된 ip를 할당 받을 수 있습니다
38. 38
Pi에 모니터, 키보
드, 마우스를 연결해
주세요
Vim으로 파일을 편집합니다
Raspberry Pi 고정 IP 주소 설정 (참고)
39. Pi에 모니터, 키보
드, 마우스를 연결해
주세요
•Ping을 사용해 Pi가 인터넷과 잘 연결되었는지
확인합니다
•PING이란, Packet Internet Groper의 약자이
며, 컴퓨터 네트워크 상태를 점검하고 진단할
때 사용하는 명령어입니다
•"ping + 대상 컴퓨터의 IP 주소" 로 사용하며,
대상 컴퓨터를 향해 일정 크기의 패킷(packet,
네트워크 최소 전송 단위)을 보낸 후 대상 컴퓨
터가 이에 응답하는 메시지, ICMP를 보내면 이
를 수신하고 분석해 대상 컴퓨터가 작동중인지,
대상 컴퓨터에 도달하기 까지 네트워크 상태는
어떤 지 알 수 있습니다
Raspberry Pi 인터넷 연결 확인 - Ping
40. Raspberry Pi SSH 설정
Pi에 모니터, 키보
드, 마우스를 연결해
주세요
외부 기기에서 Raspberry Pi로 SSH 접속이 가능하도록 설정해 줍니다
이후 Pi에 모니터와 키보드, 마우스를 연결하지 않아도 Pi를 통제할 수 있게 됩니다
ssh 서비스를 사용할 수 있게 합니다
ssh 서비스를 시작합니다
설정이 적용되도록 Raspberry Pi를 재부팅합니다
41. - Pi로 ping을 보내 네트워크 상에서 Pi와 연결되어 있는지 확인합니다
- 아래와 같은 응답을 받는다면, Pi와 NUC이 잘 연결되어 있음을 알 수 있습니다
41
NUC에 모니터, 키
보드, 마우스를 연결
해주세요
NUC - Pi 연결 확인
입력한 Pi IP 주소
Pi IP 주소
Pi IP 주소
Pi IP 주소
42. Hostname 편집
- 새 터미널을 엽니다
$ sudo vim /etc/hosts
- 마지막 줄에, 아래와 같이 추가합니다
{라즈베리파이 ip 주소} {라즈베리파이 hostname}
NUC에 모니터, 키
보드, 마우스를 연결
해주세요
NUC - Pi 등록
44. NUC의 hostname과 IP 주소를 확인합니다
- hostname 확인
$ sudo hostname
- IP 주소 확인
$ sudo ifconfig
NUC에 모니터, 키
보드, 마우스를 연결
해주세요
NUC SSH 설정
45. - Raspberry Pi 에 SSH로 접근합니다
$ ssh {raspberry PI user name}@{raspberry PI IP address}
- 접속하기 위해, Raspberry Pi의 비밀번호를 입력합니다
45
NUC에 모니터, 키
보드, 마우스를 연결
해주세요
NUC -> Pi SSH 접속
46. Raspberry Pi - NUC IP 등록
SSH로 Pi 터미널
에 접속해 동일하게
설치해 주세요
Hostname 편집
- 새 터미널을 엽니다
$ sudo vim /etc/hosts
- 마지막 줄에, 아래와 같이 추가합니다
{NUC ip 주소} {NUC hostname}
47. 47
SSH로 Pi 터미널
에 접속해 동일하게
설치해 주세요
Pi -> NUC SSH 접속
- NUC 에 SSH로 접근합니다
$ ssh {NUC user name}@{NUC IP address}
- 접속하기 위해, NUC의 비밀번호를 입력합니다
- 이제 Pi -> NUC, NUC -> Pi 양방향으로 SSH 접속이 가능합니다!