목차

ROS STUDY #1: Linux 기초 사용법

1. Ubuntu 설치

이번 스터디에서는 ROS melodic 버전을 사용한다.

  1. LTS 버전 중 가장 오랫동안 지원됨(2023년까지)
  2. 호환되는 OS인 Ubuntu 18.04 또한 LTS이므로 오랫동안 지원됨(개발환경 변동이 없음)
  3. 비교적 오랫동안 사용되어서 안정적
  4. 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. 명령어를 알아야 하는 이유

  1. Linux는 저사양 컴퓨터에서도 작동하는데, 이 때에는 화면(GUI) 없이 사용(CLI 환경)하는 경우가 있으며, 이 때 Linux 이용을 위해서는 명령어를 통해서만 가능
  2. 원격 접속하여 실행하는 경우, 대부분 CLI 환경이므로 명령어를 통한 이용만 가능
  3. 개발 환경에서 GUI로 모든 기능을 사용하기 어려운 경우가 많고, 그래픽 환경을 통한 명령보다 명령어를 한 줄 사용해 실행하는 것이 더 빠르고 효율적인 경우가 많음
  4. 반복적인 명령을 자동화시켜 수행할 수 있음(예: for문을 이용한 반복적인 명령처리 등)
  5. 그래픽 드라이버가 설치되지 않거나 충돌로 인해 재설치할 경우, 그래픽 환경을 로드할 수 없게 되므로 명령어 이용하여 복구할 수 있음
  6. 컨테이너 등 Linux의 가상화 환경의
  7. 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와 같은 것들은 별도 파티션을 마운트한 것일수도, 일반 폴더일 수도 있다.