리눅스 - 리눅스의 세계로

정현우·2021년 7월 5일
5

Linux Basic to Advanced

목록 보기
1/16
post-thumbnail

✅ 시리즈 들어가기전에 ✅

단순하게 리눅스을 알아보는 것이 아니라, 리눅스를 알아보면서 자연스럽게 여러가지 커멘드, 그리고 그 커멘드를 받치고 있는 환경과 OS layer 중심적으로 살펴보자. 처음엔 아주 넓게, 러프하게 다루고 다시 깊은 내용을 다루는 방식으로 시리즈를 진행할 예정이다.

Linux

1. 리눅스란 무엇인가

  • 리눅스는 리누스 토발즈에 의해 만들어진 컴퓨터 OS, 자유 소프트웨어오픈 소스 개발의 가장 유명한 표본이다.
  • GNU(Gnu is not Unix) 프로젝트의 일환, 유닉스 OS를 여러 회사에서 각자 개발하며 소스 코드를 공유하지 않는 문화에 대한 반발로 생김
  1. 다중처리, 다중 사용자 시스템이다
  2. 다양한 유형의 시스템에서 사용된다.
  3. 여러 파일 시스템을 동시에 지원한다.
  4. 안정적인 네트워크 기능을 제공한다.
  5. 공개 소프트웨어, 오픈소스이다.
  • 대표적인 특징은 위와 같으며 GNU 단체의 내용을 참조하면 아주 상세하게 알 수 있다.

2. 운영체제(OS, Operation System)

  • CS에서 많은 부분을 차지하는 운영체제의 depth있는 접근은 해당 시리즈와 목적이 많이 상이하다. 운영체제에 아주 간단한 정의만 살펴보자.

  • 운영체제는 하드웨어 자원을 관리하고, 응용 프로그램와 하드웨어 사이를 중재하는 인터페이스를 의미 한다. 기본적으로 프로그램이 실행되기 위해서는 주기억장치에 적재된 상태여야 한다.

  • 운영체제 역시 프로그램이기 때문에 메인 메모리에 적재가 되어야 하나, 운영체제의 크기가 너무 커서 전체를 다 메인 메모리에 올리게 된다면 비효율적이다. (메모리 공간의 낭비)

  • 따라서 커널(kernel)이라고 하는 항상 필요한 운영체제의 핵심 부분만을 메인 메모리에 적재하여 운영체제를 사용하게끔 한다. 커널은 메모리에 상주하는 운영체제의 핵심 부분이라고 할 수 있다.

  • 커널은 앞으로 더 살펴보자!

3. 리눅스의 구조

  • 우선 OS의 핵심적인 역할은 "운영체제는 시스템의 자원 관리자(Resource Manager)" 라는 것을 명심하자.

  • 운영체제는 사용자 프로세스의 요구에 따라 자원을 할당하고, 사용이 끝난 자원을 회수해서 관리한다. 시스템 콜을 통해 운영체제에게 서비스를 요구한다. 또한 사용의 편의성에도 있다. 사용자는 하드웨어나 운영체제의 내부의 복잡한 구조에 대한 지식 없이도 사용할 수 있어야 한다. 운영체제는 하드웨어를 추상화하여 가상기계 개념을 제공한다. 본 운영체제의 목표는 자원의 효율적인 활용에 있다. 하드웨어 자원이나 소프트웨어 자원을 효율적으로 관리하여 이용률을 최대로 높여야 한다.

  • 아래 사진은 os 의 기본 layer 형태는 아래와 같다. "HW <-> Application" call 에 집중한 그림이다.

  • 아래 두 사진은 일반적은 리눅스 시스템의 구조를 표현하고 있다.

  • 우선 아주 간단하게 먼저 살펴보자. "응용프로그램 > shell > kernel > H/W"

1) 특징 및 종류

  • 유닉스 기반, 멀티 유저와 멀티 태스킹 지원, 대부분의 리눅스는 CLI, GUI 모두 지원한다. 그리고 강력한 네트워킹(핵심 -> 서버 OS에 적합) 에 강력하다.

  • 사용 분야는 종류만큼이나 많다. 라우터, AP (N/W 서버 장빕), 라즈베리파이(IOT, 임베디드 시스템), TV 셋톱박스, 정밀 의료기기, 안드로이드, 블랙박스 등

2) 우분투

  • 데비안 GNU/Linux를 기반으로 제작된, 데스크탑 환경을 사용하는 리눅스 배포판

3) 왜 사용하나요?

  • 개인용 PC에 최적화, 사용자가 사용하기에 굉장히 간결하고 쉽다 (GUI 환경 bb)
  • 많은 사용자 -> 많은 커뮤니티 -> 이슈 핸들링 등 궁금한 점 빠르게 해결 가능
  • 약 6개월 단위로 업데이트를 지원한다.

    남아프리카 반투어 "우분투" 말에서 파생
    : "사람들간 관계와 헌신에 중점을 둔 윤리 사상 혹은 인본주의 사상으로 평화 운동의 사상적 뿌리"

  • GNOME 인터페이스를 이용한 GUI
  • 일년에 두 차례 새로운 버전 공개, 나온 연도와 달로 번호를 지정한다.
    • ex) 19.04 => 19년도 4월
  • LTS 버전? Long Term Support -> 장기간 지원 버전. 가장 안정적인 버전이다.
    • 기본적으로 18개월 지원 / LTS는 최대 5년

2. 리눅스 기초 명령어

1) shell

  • shell은 커널과 사용자 사이를 이어주는 역할을 한다. 사용자의 명령을 해석하여 커널에 명령을 요청한다.
  • bash는 GNU 프로젝트의 일환으로 개발되었으며 기본 shell이다.
  • 아래는 간단한 bash 명령어 리스트
    whoami # 로그인한 사용자 ID를 알려주는 명령어 = id -un
    passwd # 로그인한 사용자의 비밀번호를 변경하는 명령어
    pwd # 현재 내가 위치한 디렉토리 위치를 출력 

2) ls

  • 현재 디렉토리의 목록을 출력 -> 상당히 자주, 상당한 많은 옵션이 존재

  • ls -l

  • ls -a

  • ls -al

3) 명령어 뒤에 옵션이 궁금할때

  • --help 옵션으로 어떤 옵션이 존재하고, 간단한 설명을 볼 수 있다.
  • 그리고 man command 를 통해 상세 내용을 살펴볼 수 있다. man [모르는 커맨드] / man command in Linux with Examples

3. GUI vs CLI

1) GUI

  • Graphical User Interface 의 약자
  • 사용자가 편리하게 사용할 수 있도록 기능을 아이콘, 이미지 등 그래픽으로 나타낸 인터페이스
  • 대표적으로 windows, macOS는 GUI를 잘 이용해서 표현한다.

2) CLI

  • Command Line Interface 의 약자
  • 사용자와 컴퓨터가 상호작용하여 동작하는 인터페이스
  • 윈도우 CMD, 맥 Terminal을 이용해 사용 가능. 우분투에서 Terminal로 CLI 사용 가능

그 외에 TUI, AUI 등의 다양한 user interface 형태가 존재한다.


4. 패키지 관리자

1) apt

  • 우분투에서는 apt 사용한다. Advanced Packagin Tool의 약자
  • 데비안 리눅스(.dev) 또는 파생된 배포판(우분투)에서 S/W를 설치, 제거, 업데이트와 같은 관리를 위해 사용
  • 기존에 사용하던 키워드로 최신의 우분투 버전에서는 apt-get, apt-cache가 합쳐진 apt 키워드를 제공한다.
  • 설치할때 '권한' 관련 에러가 뜬다. apt는 높은 권한을 요구하기 때문이다. 이때 'sudo' 라는 명령어를 접두사 처럼 사용해서 핸들링한다. 권한과 sudo에 대해 뒤에서 더 자세히 알아보자
  • apt vs apt-get 사실 두 명령어는 '다르다'. 왼쪽 링크에서 자세하게 살펴보자!

2) root / su(sudo)

  • 리눅스에서 모든 권한을 가지고 있는 최고 관리자를 뜻한다.
  • OS에 모든 것을 제어할 권리를 가진다. "sudo 사용할 명령어"의 방식으로 권한 획득이 가능하다.
  • root의 비밀번호가 필요하다.
profile
도메인 중심의 개발, 깊이의 가치를 이해하고 “문제 해결” 에 몰두하는 개발자가 되고싶습니다. 그러기 위해 항상 새로운 것에 도전하고 노력하는 개발자가 되고 싶습니다!

3개의 댓글

comment-user-thumbnail
2022년 1월 22일

좋은 글 감사합니다!

1개의 답글
comment-user-thumbnail
2022년 8월 9일

깔끔한 정리 감사합니다!

답글 달기