기초

리눅스란 무엇인가: 커널, 배포판, 파일 시스템을 쉽게 설명합니다

업데이트: · Skillaria.Top

리눅스는 운영체제의 핵심인 커널로, 프로세서, 메모리, 디스크, 네트워크를 관리하는 소프트웨어입니다. 커널에 셸, 유틸리티, 패키지 관리자, 초기화 시스템을 더한 것이 Ubuntu, Debian, Fedora 같은 배포판입니다. 대부분의 서버, 컨테이너, 클라우드 장비가 리눅스에서 동작하므로 리눅스를 다루는 능력은 DevOps 엔지니어와 시스템 관리자의 기본 역량입니다.

리눅스는 오픈 소스 운영체제의 커널이며, 이를 중심으로 서버, 데스크톱, 임베디드 시스템이 만들어집니다. «리눅스 서버»라고 말할 때는 보통 프로그램 하나가 아니라 배포판을 뜻합니다. 커널에 유틸리티, 라이브러리, 패키지 관리자, 초기화 시스템이 함께 묶인 것이 배포판입니다. 이 글에서는 리눅스가 실제로 무엇이고 각 부분이 어떻게 맞물리는지, 그리고 모든 DevOps 엔지니어에게 왜 리눅스가 필요한지 설명합니다.

리눅스는 커널이며 시스템 전체가 아닙니다

엄밀히 말하면 리눅스는 커널(kernel)만을 가리킵니다. 커널은 부트로더 다음에 가장 먼저 실행되어 컴퓨터가 켜져 있는 동안 메모리에 상주하는 프로그램입니다. 커널은 프로세스들에게 CPU 시간을 나누어 주고, 메모리를 할당하며, 드라이버를 통해 디스크와 네트워크 카드를 다루고, 접근 권한을 확인합니다.

일반 프로그램은 하드웨어를 직접 건드리지 않습니다. 편집기가 파일을 저장할 때는 시스템 호출(open, write, close)을 하고, 데이터를 디스크의 어느 블록에 쓸지, 프로세스에게 그럴 권한이 있는지는 커널이 결정합니다. 이런 분리 덕분에 시스템이 안정적입니다. 실행 중 충돌한 프로그램이 컴퓨터 전체를 멈추지는 않습니다.

커널 버전은 명령 하나로 확인할 수 있습니다:

$ uname -r
6.8.0-45-generic

커널은 1991년 리누스 토르발스가 만들었고, 그때부터 공개적으로 개발되고 있습니다. 소스 코드는 GNU GPL 버전 2 라이선스로 배포되며, 누구나 읽고 수정하고 같은 조건으로 배포할 수 있습니다.

리눅스 배포판이란

커널만으로는 부족합니다. 명령을 입력할 셸, 파일을 다루는 유틸리티, 라이브러리, 프로그램을 설치하는 도구가 필요합니다. 기본 유틸리티(ls, cp, bash, grep)의 대부분은 GNU 프로젝트가 만들었기 때문에 이 시스템을 GNU/Linux라고 부르기도 합니다. 커널에 이 도구 모음을 더해 한꺼번에 빌드하고 테스트한 것을 배포판이라고 합니다.

배포판은 주로 패키지 관리자, 업데이트 정책, 대상 사용자에 따라 구분됩니다.

ead>
계열예시패키지주로 쓰이는 곳
DebianDebian, Ubuntu, Linux Mint.deb, apt서버, 클라우드, 워크스테이션
Red HatRHEL, Fedora, Rocky Linux, AlmaLinux.rpm, dnf기업용 서버
AlpineAlpine Linuxapk크기가 중요한 Docker 이미지
ArchArch Linux, Manjaropacman애호가, 최신 패키지 버전

지금 사용하는 배포판은 /etc/os-release 파일에서 확인할 수 있습니다:

$ cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
ID=ubuntu
ID_LIKE=debian

학습용과 서버에는 보통 Ubuntu LTS나 Debian을 선택합니다. 문서가 많고, 인터넷의 명령어 안내가 거의 수정 없이 그대로 동작하기 때문입니다.

시스템의 구조: 커널, 셸, 사용자 공간

리눅스는 계층으로 이해하면 쉽습니다. 맨 아래에는 하드웨어가 있고, 그 위에 커널이 있습니다. 더 위에는 사용자 공간이 있는데, 시스템 서비스, 라이브러리(예: glibc), 프로그램이 여기에 속합니다. 사람과 시스템 사이에는 셸이 있으며, 보통 bash가 사용됩니다. 셸은 명령을 받아 프로그램을 실행합니다.

  • 커널 — 프로세스, 메모리, 파일 시스템, 네트워크, 드라이버.
  • 초기화 시스템 — PID 1번인 첫 프로세스로, 대부분의 최신 배포판에서는 systemd입니다. 다른 서비스를 시작합니다.
  • 서비스(데몬) — 웹 서버, SSH 서버, cron, 로그 기록.
  • 셸과 유틸리티 — 터미널에서 직접 다루는 도구들.

서버에는 보통 그래픽 화면이 없습니다. 관리자는 SSH로 접속해 명령줄에서 작업합니다. 그래서 리눅스를 배운다는 것은 무엇보다 터미널을 익히는 일입니다.

리눅스 파일 시스템: 모든 것은 /에서 시작합니다

리눅스에는 C:나 D: 같은 드라이브 문자가 없습니다. 루트 /에서 시작하는 하나의 디렉터리 트리만 있습니다. 모든 디스크, USB 메모리, 네트워크 폴더는 이 트리의 어떤 디렉터리에 마운트됩니다. 또 한 가지 원칙: 리눅스에서는 거의 모든 것이 파일로 표현됩니다. 일반 파일, 디렉터리, 장치, 심지어 프로세스 정보도 그렇습니다.

$ ls /
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr

디렉터리의 위치는 FHS(Filesystem Hierarchy Standard) 표준이 정하므로, 어떤 배포판이든 설정 파일이 거의 같은 곳에 있습니다.

ead>
디렉터리내용
/etc시스템과 서비스의 설정: /etc/passwd, /etc/ssh/sshd_config, /etc/fstab
/home사용자 홈 디렉터리: /home/alice
/root슈퍼유저 root의 홈 디렉터리
/var변하는 데이터: /var/log의 로그, 패키지 캐시, 데이터베이스, 메일 큐
/usr설치된 프로그램과 라이브러리: /usr/bin, /usr/lib
/bin, /sbin기본 명령어; 최신 배포판에서는 /usr/bin, /usr/sbin으로 연결된 링크입니다
/boot커널(vmlinuz-*), initramfs, 부트로더 파일
/dev장치 파일: /dev/sda, /dev/null
/proc, /sys가상 파일 시스템: 커널이 프로세스와 설정을 이곳을 통해 보여 줍니다
/tmp임시 파일, 보통 재부팅하면 지워집니다
/opt통째로 배포되는 외부 프로그램
/mnt, /media디스크와 이동식 매체의 마운트 지점

절대 경로와 상대 경로

절대 경로는 /로 시작하며 현재 위치와 관계없습니다: /var/log/syslog. 상대 경로는 현재 디렉터리에서 계산됩니다: ../logs/app.log. 점 .은 현재 디렉터리, 두 점 ..은 상위 디렉터리, 물결표 ~는 홈 디렉터리입니다.

$ pwd
/home/alice
$ cd /var/log
$ cd ..
$ pwd
/var
$ cd ~
$ pwd
/home/alice

/proc: 파일로 보는 시스템

/proc은 디스크에 저장되지 않고 커널이 즉시 만들어 냅니다. 예를 들어 cat /proc/cpuinfo는 프로세서 정보를, cat /proc/meminfo는 메모리 정보를 보여 주며, 각 프로세스는 /proc/<PID> 디렉터리를 가지고 그 안에 명령줄과 열린 파일 정보가 있습니다. ps나 top 같은 도구도 이 파일들을 읽어 동작합니다.

마운트

df -h는 어떤 파일 시스템이 어디에 마운트되어 있고 남은 공간이 얼마인지 보여 줍니다:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        40G   12G   26G  32% /
/dev/sda1       1.1G  6.1M  1.1G   1% /boot/efi
tmpfs           393M  1.2M  392M   1% /run

영구적인 마운트 지점은 /etc/fstab에 적혀 있으며, 시스템은 부팅할 때 이 파일을 읽습니다.

리눅스 부팅 과정: 전원 버튼부터 로그인 화면까지

부팅 과정을 알면 재시작 후 서버가 «올라오지 않을 때» 도움이 됩니다. 단순화한 순서는 다음과 같습니다:

  1. 펌웨어(UEFI 또는 BIOS)가 하드웨어를 점검하고 부트로더를 찾습니다.
  2. GRUB 부트로더가 메뉴를 보여 주고 /boot의 커널과 initramfs 이미지를 메모리에 올립니다.
  3. 커널이 하드웨어를 초기화하고, initramfs의 도움으로 루트 파일 시스템을 찾아 마운트합니다.
  4. systemd가 PID 1로 실행되어 네트워크, 로그, SSH, cron 등 서비스를 올바른 순서로 시작합니다.
  5. 로그인 프롬프트가 콘솔이나 SSH에 나타납니다.

부팅 중 커널 메시지는 sudo dmesg 또는 journalctl -k로, 단계별 소요 시간은 systemd-analyze로 확인할 수 있습니다.

사용자와 권한: 내장된 보안

리눅스는 처음부터 여러 사용자가 함께 쓰는 시스템으로 설계되었습니다. 모든 파일에는 소유자, 그룹, 읽기·쓰기·실행 권한이 있습니다. 일반 사용자는 시스템 파일을 망가뜨릴 수 없고, 관리 작업은 sudo로 수행합니다. 슈퍼유저 root는 모든 것을 할 수 있으므로 계속 root로 작업하는 것은 권장되지 않습니다.

$ ls -l /etc/passwd
-rw-r--r-- 1 root root 2847 Oct  1 10:12 /etc/passwd

이 줄은 일반 파일이고, 소유자 root는 읽고 쓸 수 있으며, 나머지는 읽기만 할 수 있다는 뜻입니다.

DevOps 엔지니어에게 리눅스가 필요한 이유

DevOps 엔지니어에게 리눅스는 하나의 주제가 아니라 거의 모든 작업이 이루어지는 환경입니다. 매일 다음과 같은 곳에서 만납니다:

  • 서버. 웹 서버, 데이터베이스, 메시지 큐는 대부분 리눅스에서 동작합니다.
  • 컨테이너. Docker는 커널의 기능인 namespaces와 cgroups를 사용합니다. 컨테이너는 격리된 리눅스 프로세스이며, 이미지는 Debian이나 Alpine 같은 배포판을 기반으로 합니다.
  • 클라우드와 Kubernetes. 클라우드의 가상 머신과 클러스터 노드도 리눅스입니다.
  • CI/CD. 파이프라인의 빌드는 리눅스 러너에서 실행되고, 빌드 스크립트는 bash로 작성됩니다.
  • 장애 진단. 서비스가 죽으면 답은 journalctl, top, ss, df에서 찾습니다. 이 도구들을 모르면 장애 분석이 불가능합니다.

최소한 필요한 기술은 다음과 같습니다: 파일 시스템을 자유롭게 이동하기, 권한 이해하기, 패키지 설치하기, systemctl로 서비스 관리하기, 로그 읽기, 프로세스·네트워크·SSH 다루기, 간단한 bash 스크립트 작성하기.

리눅스를 배우는 방법

주력 운영체제를 리눅스로 바꿀 필요는 없습니다. 안전하게 시도할 수 있는 방법이 여럿 있습니다:

  • 가상 머신(VirtualBox, VMware)에 Ubuntu Server를 설치합니다. 망가뜨린 뒤 스냅숏으로 되돌릴 수 있습니다.
  • Windows의 WSL — Windows 터미널에서 완전한 Ubuntu 환경을 씁니다: wsl --install.
  • 클라우드 서버 — 실제 업무와 가장 가까운 방법입니다. SSH로 접속합니다.
  • Docker 컨테이너 — docker run -it --rm ubuntu bash 한 줄이면 몇 초 만에 셸을 얻습니다.

탐색 명령(pwd, ls, cd)부터 시작해서 파일과 권한, 패키지, 프로세스와 서비스 순서로 익히세요. 내장 도움말은 언제든 있습니다: man ls 또는 ls --help.

마무리

리눅스는 커널이고, 배포판은 커널에 유틸리티, 라이브러리, 패키지 관리자, systemd를 더한 것입니다. 전체 시스템은 루트 /에서 시작하는 하나의 디렉터리 트리이며, 설정은 /etc, 로그는 /var/log, 프로그램은 /usr에 있습니다. 리눅스가 무엇이며 어떻게 부팅되는지 이해하면 서버, 컨테이너, 클라우드의 기초를 갖추게 됩니다. 파일 시스템, 부팅, 시스템 관리는 강의에서 실습과 함께 다룹니다.

자주 묻는 질문

리눅스는 운영체제인가요, 아니면 커널인가요?

엄밀히 말하면 리눅스는 커널입니다. 운영체제는 커널에 GNU 유틸리티, 라이브러리, 패키지 관리자, 초기화 시스템을 더한 배포판이 됩니다. 일상적으로는 전체 시스템을 가리켜 «리눅스»라고 부릅니다.

리눅스는 무료인가요?

커널과 대부분의 배포판(Ubuntu, Debian, Fedora)은 자유 소프트웨어 라이선스로 무료 배포됩니다. Red Hat Enterprise Linux처럼 기술 지원을 위한 구독은 유료입니다.

초보자는 어떤 배포판을 고르면 좋나요?

서버 운영과 학습에는 Ubuntu LTS와 Debian이 적합합니다. 안정적인 버전과 많은 문서를 제공합니다. 지식은 다른 배포판으로도 쉽게 옮겨 가며, 주로 패키지 관리자가 다릅니다.

Docker를 다루려면 리눅스를 알아야 하나요?

네, 최소한 기초 수준은 필요합니다. 컨테이너는 리눅스 커널의 기능 위에서 동작하고, 이미지 안에는 배포판이 들어 있으며, 디버깅은 셸 명령으로 합니다.

리눅스와 유닉스는 어떻게 다른가요?

유닉스는 1970년대에 등장한 시스템 계열이고, 리눅스는 독자적으로 작성된 커널로서 유닉스의 개념과 인터페이스(POSIX 표준)를 따릅니다. 그래서 명령어와 동작 원리가 매우 비슷합니다.

영상으로 이 주제 배우기

이 주제는 “Linux: с нуля до уверенного администрирования” 강의에서 실습과 함께 자세히 다룹니다.

강의로 이동