ROS STUDY #1: Linux 기초 사용법
1. Ubuntu 설치
이번 스터디에서는 ROS melodic 버전을 사용한다.
- LTS 버전 중 가장 오랫동안 지원됨(2023년까지)
- 호환되는 OS인 Ubuntu 18.04 또한 LTS이므로 오랫동안 지원됨(개발환경 변동이 없음)
- 비교적 오랫동안 사용되어서 안정적
- Jetson Nano, Raspberry Pi 등 SBC에서 기본 제공하는 이미지 대부분이 Ubuntu 18.04를 사용중
2. Linux 톺아보기
2.1. Linux 특징
장점 | 단점 |
---|---|
매우 가볍다. | Windows만큼 하드웨어 드라이버 지원이 안정적이지 않아, 고사양 컴퓨터는 그 성능을 100% 끌어내지 못할 수 있다. |
매우 자유롭다. 바탕화면 구성부터 보이지 않게 구동되는 서비스까지, 시스템 깊숙한 곳까지 내 입맛에 맞게 설정할 수 있다. | 깊숙한 곳이 아예 건들 수 없거나 잘못된 설정을 거부하는 Windows와 달리, 잘못 설정하면 사전 경고 없이 시스템이 망가질 수 있어 주의가 필요하다. |
소프트웨어 설치가 매우 편리하다. apt 패캐지 관리 툴을 이용하면 원하는 프로그램의 대부분을 명령어 한 줄로 설치/업데이트/삭제할 수 있다. | apt 툴을 통해 시스템 필수 패키지를 삭제할 경우 패키지 재설치만으로는 문제가 해결되지 않을 수 있으니, 패키지 삭제 시 주의가 필요하다. |
개발 친화적이다. 개발에 필요한 도우(컴파일러 등) 설치가 매우 자유롭고, 시스템에 통합이 잘 되어있다. Windows에서는 일일이 설치파일을 찾고 설정해주어야 하는 것들이, Linux에서는 설치 없이도 사용할 수 있는 경우가 있다. | 명령어 기반인 툴이 많으므로 Linux 명령에 익숙해질 필요가 있다. |
공짜다. 소스코드까지 모두 공개되어 있어 누구나 확인하고 수정하고, 전 세계가 공유하는 이 소스코드에 기여할 수도 있다. | |
안전하다. 사용자/그룹 권한 등 어떤 파일에 대한 모든 권한을 통제할 수 있어 원치 않는 프로그램이 실행될 우려가 없고, Windows에 차고 넘치는 악성코드들은 Linux에서 열리지조차 않아 청정구역이다. | 프로그램 설치 시 사용하는 sudo 명령은 이러한 권한 시스템을 무력화시킬 수 있는데, 이 경우 Windows에서 사용하는 악성코드보다 치명적일 수 있다. 내가 실행하려는 파일이 실행해도 안전한지 확인하는 습관 필요. |
2.2. 완전히 다른 파일 시스템
Linux와 Windows의 파일 관리 방식을 비교하면 다음과 같다.
구분 | Windows | Linux |
---|---|---|
드라이브 구분 | C: , D: , … | / 1) |
권한 | 있음: 사용자별 읽기,쓰기,실행 | 있음: 사용자별 읽기,쓰기,실행 |
대소문자 | 구분하지 않음 | 엄격히 구분 |
2.3. 명령어를 알아야 하는 이유
- Linux는 저사양 컴퓨터에서도 작동하는데, 이 때에는 화면(GUI) 없이 사용(
CLI 환경
)하는 경우가 있으며, 이 때 Linux 이용을 위해서는 명령어를 통해서만 가능 - 원격 접속하여 실행하는 경우, 대부분 CLI 환경이므로 명령어를 통한 이용만 가능
- 개발 환경에서 GUI로 모든 기능을 사용하기 어려운 경우가 많고, 그래픽 환경을 통한 명령보다 명령어를 한 줄 사용해 실행하는 것이 더 빠르고 효율적인 경우가 많음
- 반복적인 명령을 자동화시켜 수행할 수 있음(예:
for
문을 이용한 반복적인 명령처리 등) - 그래픽 드라이버가 설치되지 않거나 충돌로 인해 재설치할 경우, 그래픽 환경을 로드할 수 없게 되므로 명령어 이용하여 복구할 수 있음
- 컨테이너 등 Linux의 가상화 환경의
Linux 유저라면 한 번 쯤 해봐야 “아, Linux 좀 치네” 소리를 들음
3. Ubuntu
3.1. Linux도 아니고, Ubuntu는 갑자기 왜?
Ubuntu는 Linux를 이용한 종합세트 패키지 중 하나다. 컴퓨터 소프트웨어를 이루는 요소를 대강 나누어보면, 다음과 같이 나타낼 수 있다(정확하지는 않다).
응용 프로그램 | 프로그램1 | 프로그램2 | 프로그램3 | 프로그램4 | 프로그램5 | … |
OS | 라이브러리1 | 라이브러리2 | … | |||
커널 | ||||||
하드웨어 | 하드웨어(BIOS) |
Windows의 경우, 대체로 우리가 사용하는 “응용 프로그램”은 위 표의 “응용 프로그램” 줄에 해당하고, 나머지는 Windows 시스템이 맡는 구조이다. 이와 달리, Linux는 커널이며, 그 이상의 기능은 없다. Linux가 OS의 형태를 갖추기 위해서는 커널에 연결된 필수적인 라이브러리(ex. 하드웨어 드라이버)가 함께 필요하며, 이런 것을 모두 모아 한 번에 설치할 수 있도록 한 것을 Linux 배포판이라고 부른다. Ubuntu는 바로 이 Linux 배포판 중 한 종류이다. Ubuntu는 마치 Windows처럼 설치하자마자 바로 실사용하는 데 무리가 없도록 하는 것을 목표로 하고 있다. 웬만한 하드웨어의 경우 이미 드라이버가 모두 잡혀 있거나, 쉽게 다운받아 설치할 수 있도록 해 두었다. 필요하다면 본인이 필요한 드라이버를 골라서 수동으로 설치할 수도 있다.
3.2. Ubuntu 같이 둘러보기!
1)
/home
, /usr
와 같은 것들은 별도 파티션을 마운트한 것일수도, 일반 폴더일 수도 있다.