이전 글...
드론 만들기
하드웨어
[드론 만들기] Pixhawk의 텔레메트리(Telemetry)
[드론 만들기] Pixhawk 4의 Power Management Board
[드론 만들기] QGroundControl에서 Pixhawk 4 펌웨어 설치
[드론 만들기] QGroundControl에서 Pixhawk 4 설정하기 1/2
[드론 만들기] QGroundControl에서 Pixhawk 4 설정하기 2/2
[드론 만들기] 파워 분배기(PDB, Power Distribution Board)
소프트웨어
[드론 만들기] MissionPlanner와 QGroundControl
[드론 만들기] QGroundControl 사용방법 1/4
[드론 만들기] QGroundControl 사용방법 2/4
[드론 만들기] QGroundControl에서 Pixhawk 4 펌웨어 설치
[드론 만들기] QGroundControl에서 Pixhawk 4 설정하기 1/2
[드론 만들기] QGroundControl에서 Pixhawk 4 설정하기 2/2
[드론 만들기] QGroundControl에서 Pixhawk 파라미터 변경하기
[드론 만들기] VMware Workstation Pro 설치하기
[드론 만들기] VMware Workstation Player에 Virtaul Machine 만들기
[드론 만들기] VMware Workstation Player에 Ubuntu 설치하기
조립
[드론 만들기] Power Management Board에 커넥터 연결하기
[드론 만들기] 변속기(ESC)와 Power Management Board 연결하기
[드론 만들기] QGroundControl에서 변속기(ESC) 교정하기
[드론 만들기] GPS, Telemetry Pixhawk 4에 연결하기
통신
비행
[드론 만들기] 쿼드콥터(Quadcopter) 비행 원리
문제해결
[드론 만들기] Pixhawk와 Emax ESC(변속기) 호환문제 해결방법
기타
완전 초짜의 드론 만들기 도전! 도전! 도전~!입니다.
맨땅에 헤딩~
인터넷 검색, 관련 사이트를 참고하여 Pixhawk 4(PX4)를 이용한 중/소형 쿼드콥터 드론을 만들려고 하고 있습니다.
참고만 하세요~!
참고한 자료는 구글에서 linux command pdf, linux command 등의 검색어로 검색한 자료들을 참고했습니다.
이해한 수준으로 정리한 내용이므로 충분히 틀린 내용을 포함하고 있을 수 있습니다!
픽스호크 홈페이지를 따라가며 드론을 만들다보면 윈도우 운영체제에서는 여러모로 제한?, 한계?가 있다는 걸 자연스레 알게 된다.
일단 지원되는 프로그램 제한도 있지만, 그걸 모른 척하며 울며 겨자 먹기식으로 윈도우 하에서 만들다보면 문제가 생기는데 인터넷을 아무리 뒤져도 해결방법을 찾기가 쉽지가 않다.
이왕 하는 거 그럼 우분투 깔아보자~라고 설치를 하긴 했는데 문제는 리눅스 계열의 운영체제를 들어보기만 했지 사용해본 적이 한 번도 없다는 또 다른 문제에 봉착하게 된다.
그래도 픽스호크 홈페이지에 있는 정보에 따라 뭔지도 모르는 걸 '터미널'이라는 곳에 입력하며 꾸역꾸역 프로그램도 설치하고 실행도 해보고 하지만 모든 것이 생소하다 보니 답답하다. 가끔 '나 뭐 하고 있나?' 이런 생각도 든다.
어쩔 수 없이 우분투에 대해서 공부를 좀 해야겠다는 생각에 시작은 했는데 너무 초보이다 보니 어디서부터 시작해야 할지도 모르겠다.
우선 의미도 모르고 그냥 복사&붙이기만 했던 etc, bin, home 같은 우분투의 주요 디렉터리에 대해서 간단히 정리해본다.
대강 의미라도 파악하고 나면 우분투를 사용할 때 복사해서 붙여 넣기를 할 때 답답함은 조금 덜해지지 않을까 싶다.
1. 루트 디렉터리 (root directory)
윈도우 운영체제의 경우 파일 탐색기에서 '내 컴퓨터' 아래에 C, D 등의 드라이브가 있는데 우분투에는 그런 드라이브가 없다. 그러니까 우분투 같은 경우 모든 디렉터리가 드라이브에서 시작하는 것이 아니라 루트 디렉터리에서 시작한다.
ubuntu Desktop 18.04.LTS의 경우 루트 디렉터리 하위 디렉터리는 아래와 같다.
터미널 상에서 루트 디렉터리는 간단히 /로 표기된다.
2. /bin
모든 사용자가 사용 가능한 프로그램(binary)을 포함하고 있다.
예를 들자면 실행 파일, 단일 사용자 모드에서 사용하는 리눅스 명령어, 모든 사용자가 사용 가능한 공동 명령어, 시스템을 부팅, 작동, 복구 시 필요한 프로그램 등이다.
/bin 디렉터리에는 하위 디렉터리가 없고 파일뿐이다.
ubuntu Desktop 18.04.LTS의 경우 터미널 상에서 /bin 디렉터리에는 다음과 같은 파일들이 포함되어 있다.
파일이 너무 많아서 화면에 모두 표기가 되지 않는다. 그래도 대강 훑어보면 chmod, cp, su 등 익숙한 명령어들도 보인다.
이 디렉터리에는 기본적으로 cat, chgrp, chmod, chown, cp, date, dd, df, dmesg, echo, false, hostname, kill, ln, login, ls, mkdir, mknod, more, mount, mv, ps, pwd, rm, rmdir, sed, sh, stty, su, sync, true, umount, uname 명령어를 포함하고 있다.
(명령어에 대한 상세 내용은 [드론 만들기] Ubuntu(우분투) 터미널 명령어를 참조)
3. /boot
커널(Kernel), 초기 램 디스크 이미지(부팅 시 필요한 드라이버 용), 부트로더 등 부팅 시 필요한 파일을 포함하고 있다.
ubuntu Desktop 18.04.LTS의 경우 터미널 상에서 /boot 디렉터리에는 다음과 같은 파일들이 포함되어 있다.
vmlinuz는 리눅스의 커널, initrd.img는 커널을 로딩하기 이전에 사용한 임시 파일 시스템, System.map는 symbol lookup table 말한다.
grub 디렉터리에는 GRUB 파일이 저장되어있다.
4. dev
USB나 DVD 롬 같은 외부 장치의 장치 파일 또는 특수 파일이 저장되며 이런 파일들은 우분투 설치 과정에서 생성된다. 수동으로도 장치 파일을 생성할 수 있는데 이 때는 디렉터리 내에 MAKEDEV 명령어가 포함되어 있어야 한다.
ubuntu Desktop 18.04.LTS의 경우 터미널 상에서 /dev 디렉터리에는 다음과 같은 파일들이 포함되어 있다.
화면을 넘길 정도로 많은 파일들이 있는데 그중 몇 가지 파일의 기능은 다음과 같다.
fb0: 첫 번째 프레임 버퍼 장치.
loop0: 첫 번째 루프백(loopback) 장치.
null: 비트 버켓(bit bucket).
psaux: PS/2 마우스 포트.
sda: 첫 번째 SCSI버스의 첫 번째 SCSI 드라이브.
ttys0: 첫 번째 시리얼 포트.
*루프백 장치는 디스크 같은 블록 디바이스에 있지 않는 파일 시스템을 마운팅하는데 사용된다.
*비트 버켓에 데이터를 보내면 응답 없음.
5. /etc
etc 하면 무언가를 설명한 뒤, 또는 예시를 쭉 나열하다가 말 끝을 맺으려고 할 때 자주 사용하는 단어인데 설마 그런 의미로 쓰인 게 아니겠지 하고 찾아봤는데 etcetera의 약자인 etc, '등등'이 맞다.
'등등'이 이 어려운 우분투~ 시스템 폴더 중 하나를 차지하고 있는 게 재미있긴 한데 이유는 좀 단순했다.
초기 유닉스 운영체제를 개발할 때 장치 파일이나 실행 프로그램 등 각각의 데이터 형태에 맞는 bin, dev 디렉터리가 있지만 구성 파일, 소켓 파일 등의 다른 파일들을 저장해 놓을 곳이 마땅히 없어서 개발자들은 잡동사니 디렉터리인 etc를 만들어 기타 잡다한 파일들을 모아놓았다고 한다.
현재는 의미가 더 확장되어 사용자의 모든 설정 파일을 저장하는 중심 위치로 사용되고 있다.
ubuntu Desktop 18.04.LTS의 경우 터미널 상에서 /etc 디렉터리에는 다음과 같은 파일들이 포함되어 있다.
etc 디렉터리 아래에는 opt, X11, sgml, xml 같은 디렉터리나 심볼릭 링크가 있어야 하는데 대략적인 기능은 아래와 같다.
/etc/opt: 추가하는 응용 소프트웨어 패키지 용 호스트별 구성은 /etc/opt/<subdir> 디렉터리에 설치되어야 한다.
/etc/X11 (선택사항): 모든 X11 호스트별 설정이 저장되어 있다.
/etc/sgml (선택사항): SGML 시스템의 고급 파라미터를 정의하는 일반 설정 파일이 이곳에 설치되어있다.
/etc/xml: XML 시스템의 고급 파라미터를 정의하는 일반 설정 파일이 이곳에 설치되어있다.
더 자세한 내용은 여기 참조.
6. /home
사용자 홈 디렉터리이다.
우분투에 새 사용자가 추가될 때마다 홈 디렉터리 아래에 사용자 디렉터리가 생성된다. 이때 디렉터리 이름은 사용자의 이름이 되며 사용자의 디렉터리는 다른 사용자가 읽고 쓸 수 없다.
사용자 디렉터리에는 기본적으로 다운로드 바탕화면 사진 등의 디렉터리가 있으며 문서, 그림, 음악, 비디오, 응용 프로그램 설정 등의 다른 많은 파일들을 저장할 수 있다.
ubuntu Desktop 18.04.LTS의 경우 터미널 상에서 /home 디렉터리에는 다음과 같은 파일들이 포함되어 있다.
7. /lib
시스템을 부팅하고 루트 파일 시스템, 즉 bin과 sbin의 디렉터리에서 명령어를 실행하기 위해서 필요한 공유 라이브러리가 저장되어 있다.
라이브러리란 컴퓨터 프로그래밍에서 사용하는 자원 꾸러미로 설정 데이터, 문서, 도움말, 서브루틴, 클래스 특성 등이 포함되어 있다.
ubuntu Desktop 18.04.LTS의 경우 터미널 상에서 /lib 디렉터리에는 다음과 같은 파일들이 포함되어 있다.
윈도우의 경우 라이브러리 파일은 일반적으로 *.DLL이라는 확장자를 갖지만 우분투의 경우 *.so라는 확장자를 갖는다.
8. /media
DVD 롬, USB 등 제거 가능한 외부 장치가 마운팅되고 마운팅 된 장치의 파일에 접근할 수 있는 디렉터리이다.
ubuntu Desktop 18.04.LTS의 경우 터미널 상에서 /media 디렉터리에는 다음과 같은 파일들이 포함되어 있다.
현재 아무런 외부 장치가 연결되어있지 않기 때문에 디렉터리는 비어있으며 외부 저장장치가 연결되어 마운팅 될 경우 해당하는 장치의 서브 폴더가 media 디렉터리 아래 사용자 디렉터리 내에 생성된다.
9. /mnt
시스템 관리자가 파일 시스템 또는 장치를 일시적으로 마운트하기 위해서 제공되는 디렉터리이다.
ubuntu Desktop 18.04.LTS의 경우 터미널 상에서 /mnt 디렉터리에는 다음과 같은 파일들이 포함되어 있다.
현재 마운팅 된 파일 시스템 또는 장치가 없기 때문에 디렉터리는 비어 있다.
10. /opt
기본으로 설치된 소프트웨어를 제외한 소프트웨어와 추가 패키지를 설치를 위해서 지정된 디렉터리이다.
ubuntu Desktop 18.04.LTS의 경우 터미널 상에서 /opt 디렉터리에는 다음과 같은 파일들이 포함되어 있다.
현재까지 추가 프로그램을 설치하지 않아 opt 디렉터리는 비어 있다.
11. /proc
하드 드라이버에 저장되어 있는 파일이 아니라 리눅스 커널에서 작동하는 가상 파일 시스템이다. 이 디렉터리에 있는 파일들은 읽을 수 있으며 커널 상에서는 현재 프로세서에 대한 더 많은 정보를 볼 수도 있다.
ubuntu Desktop 18.04.LTS의 경우 터미널 상에서 /proc 디렉터리에는 다음과 같은 파일들이 포함되어 있다.
여기에서 숫자로 적힌 디렉터리는 프로세서를 나타내며 PID라고 부른다. 이 디렉터리는 메모리 정보, CPU 정보, 사용 가능한 파일 시스템 등과 같은 시스템 정보를 포함하고 있다.
12. /root
루트 사용자를 위한 홈 디렉터리로 일반 사용자 권한으로는 접근이 불가능하다.
13. /sbin
시스템 부팅 시 필요한 실행 가능 프로그램을 포함하고 있는 bin과 유사하다. 차이점은 sbin 프로그램의 경우 일반적으로 루트 사용자만이 실행할 수 있다는 것이다.
이 디렉터리에는 /bin 디렉터리 내 프로그램 이외에 시스템을 부팅, 복구, 복원, 수리를 위해서 필수적인 프로그램을 포함하고 있다.
ubuntu Desktop 18.04.LTS의 경우 터미널 상에서 /sbin 디렉터리에는 다음과 같은 파일들이 포함되어 있다.
리눅스의 /sbin 디렉터리에 있는 수백 개의 프로그램 중에서 공통적으로 많이 사용하고 있는 프로그램은 아래와 같다.
fdisk: 파티션 테이블 관리.
fsck: 파일 시스템 체크 및 유틸리티 수리.
halt: 시스템 정지.
mkfs: 파일 시스템 빌드.
modinfo: 커널 모듈에 대한 정보 표기.
reboot: 시스템 재시작.
runlevel: 런 레벨 보고.
14. /tmp
다양한 프로그램에서 생성된 임시파일을 저장한다. 설정에 따라 디렉터리가 주기적으로 비워진다.
15. /usr
리눅스 시스템에서 가장 큰 디렉터리로 사용자가 사용하는 모든 프로그램과 지원 파일을 포함하고 있다.
ubuntu Desktop 18.04.LTS의 경우 터미널 상에서 /usr 디렉터리에는 다음과 같은 파일들이 포함되어 있다.
usr 디렉터리의 하위 디렉터리의 역할은 아래와 같다.
/usr/bin: 리눅스 배포판에서 설치된 실행 가능 프로그램을 포함하고 있음.
/usr/game: 현재는 잘 사용되지 않으며 이전에는 네트워크 게임을 포함하고 있음.
/usr/include: C 프로그램 컴파일 용 헤더 파일을 포함하고 있음
/usr/lib: /usr/bin에 있는 프로그램의 공유 라이브러리를 포함하고 있음.
/usr/libexec: 다른 프로그램에서 실행되는 시스템 데몬과 유틸리티를 포함하고 있음.
/usr/local: 리눅스 배포판에 포함되어있지 않는 다른 프로그램을 위한 디렉터리.
/usr/sbin: 시스템 관리자 프로그램을 포함하고 있음.
/usr/share: 프로그램에서 사용하는 모든 공유 데이터를 포함하고 있음, 예를 들면 기본 설정 파일, 아이콘, 스크린 백그라운드, 사운드 파일.
/usr/src: 리눅스 커널 소스, 헤더 파일, 문서를 포함하고 있음.
16. /var
변경 가능한 데이터 파일, 그러니까 스풀 디렉터리와 파일, 메일 디렉터리, 관리자와 로깅 데이터, 일시적인 임시파일 등을 포함하고 있다.
* 스폴
컴퓨터의 중앙 처리 장치(CPU)와 저속의 주변 장치가 데이터를 주고받을 때에 속도가 늦은 주변장치가 계속 중앙처리장치를 점유하고 있지 않도록 하기 위해서 하드디스크나 다른 보조기억장치에 주변장치가 처리해야 할 데이터를 임시로 저장하는 기술.
ubuntu Desktop 18.04.LTS의 경우 터미널 상에서 /var 디렉터리에는 다음과 같은 파일들이 포함되어 있다.
/var 디렉터리의 하위 디렉터리의 역할은 아래와 같다.
/var/backups: /etc/shadow, /etc/shadow, /etc/group, /etc/inetd 등과 같은 다양항 키 시스템 파일을 포함하고 있음.
/var/crash: 응용 프로그램에서 캐쉬된 데이터를 위한 디렉터리.
/var/local: 로컬 프로그램 용 가변 데이터 포함하고 있음.
/var/log: 시스템과 다양한 프로그램/디바이스의 활동기록 파일을 포함하고 있음.
/var/metrics: 다양한 수치 데이터 포함하고 있음.
/var/run: 재부팅 후 변경된 다양한 임시 시스템 정보를 포함하고 있음.
/var/spool: 대기하고 있는 작업관 관련이 있는 파일을 저장하고 있음.
var/cache: 응용프로그램별 캐쉬를 저장하고 있음.
/var/lib: 동적 데이터 라이브러리/파일을 포함하고 있음.
/var/lock: 다른 사용자/프로그램이 장치 또는 파일을 사용하지 못하도록 설정해 놓은 잠금 파일을 저장.
/var/mail: 사용자 메일박스를 저장하고 있음.
/var/opt: /opt에 설치된 프로그램에서 생성된 임시 파일을 포함하고 있음.
/var/snap: 시스템 작동 중 응용 프로그램에서 생산되거나 소비되는 다양한 형태의 사용자 데이터와 로그 파일을 포함하고 있음.
/var/tmp: /tmp 디렉터리에 저장하기 너무 크거나 또는 재부팅 후 필요한 파일을 포함하고 있음.
[드론 만들기] 툴 체인(Toolchain) 설치하기 (1) | 2021.03.24 |
---|---|
[드론 만들기] 드론 비행 시뮬레이터(Simulator) (1) | 2021.03.23 |
[드론 만들기] Pixhawk와 Emax ESC(변속기) 호환문제 해결방법 (0) | 2021.02.21 |
[드론 만들기] QGroundControl에서 변속기(ESC) 교정하기 (0) | 2020.08.01 |
[드론 만들기] 모터와 변속기(ESC) 연결하기 (2) | 2020.08.01 |
댓글 영역