개념 자료

리눅스 핵심

서버의 대부분은 리눅스로 돌아갑니다. 이 자료는 리눅스를 처음 다루는 사람이 꼭 알아야 할 뼈대를 차례로 봅니다. 무엇으로 이뤄져 있고 어떻게 켜지는지, 디스크와 파일은 어떻게 다루는지, 누가 무엇을 할 수 있는지, 셸에서 어떻게 일하는지, 프로그램은 어떻게 돌고 설치되는지입니다. 네트워크 서비스, 보안, 시스템 관리 심화는 리눅스 시리즈의 다음 자료에서 이어 갑니다.

01

리눅스는 무엇으로 이뤄져 있나: 커널·셸·배포판·라이선스

리눅스를 양파처럼 생각하면 쉽습니다. 가운데에 CPU·메모리·디스크·네트워크 카드 같은 하드웨어가 있고, 그것을 직접 다루는 커널이 감싸고 있습니다. 그 바깥에 사람이 입력한 명령을 해석하는 셸(bash 등)이 있고, 맨 바깥에 우리가 쓰는 프로그램이 있습니다.

프로그램은 하드웨어를 직접 만지지 않습니다. 파일을 읽거나 네트워크로 보내야 할 때 커널에 시스템 콜로 부탁하고, 커널이 하드웨어를 다룬 뒤 결과를 돌려줍니다. 그래서 프로그램 하나가 잘못돼도 하드웨어와 다른 프로그램은 커널이 지킵니다. 아래 그림에서 명령을 바꿔 보세요.

명령
명령
ls /home

명령 하나가 층을 지나 하드웨어까지 내려갔다 돌아온다 · 연두 = 요청, 하늘 = 결과

셸은 "ls /home"를 해석해 프로그램을 실행하고, 프로그램은 디스크를 직접 만지지 않고 커널에 시스템 콜(openat · getdents64)로 부탁합니다. 커널이 하드웨어를 다루고 결과를 돌려주면 셸이 화면에 보여 줍니다. 그래서 프로그램이 잘못돼도 하드웨어와 다른 프로그램은 커널이 지킵니다.

배포판: 커널에 도구를 묶어 낸 것

"리눅스"는 엄밀히 커널의 이름입니다. 커널만으로는 쓸 수 없어서, 셸·명령어 도구·패키지 관리자·설치 프로그램을 함께 묶어 내놓은 것을 배포판이라고 부릅니다. 크게 두 계열이 있고, 이 자료도 명령이 다를 때 두 계열을 나란히 보여 줍니다.

RHEL 계열Debian 계열
대표 배포판Red Hat Enterprise Linux, Rocky Linux, AlmaLinux, FedoraDebian, Ubuntu
패키지 형식.rpm.deb
패키지 관리자rpm / dnf (예전 yum)dpkg / apt
관리자 그룹wheelsudo

커널 버전은 5.15.0처럼 "주.부.패치"로 읽습니다. 예전에는 부 번호가 짝수면 안정판이라는 규칙이 있었지만 지금은 쓰지 않고, kernel.org는 최신 개발판(mainline), 안정판(stable), 오래 지원하는 장기 지원판(longterm)으로 나눠 내놓습니다.

자유 소프트웨어와 GPL

리눅스 커널은 리누스 토르발스가 1991년에 공개했고, 그 위의 많은 도구는 리처드 스톨먼이 시작한 GNU 프로젝트에서 왔습니다. 스톨먼은 자유 소프트웨어 재단(FSF)을 세웠고, 그 대표 라이선스가 GPL입니다. GPL 프로그램은 누구나 쓰고 고치고 다시 배포할 수 있지만, 고친 것을 배포할 때는 소스 코드도 같은 GPL 조건으로 공개해야 합니다. 자유를 다음 사람에게도 물려주게 하는 이 방식을 카피레프트라고 합니다.

라이선스핵심예
GPL고쳐서 배포하면 소스도 GPL로 공개 (카피레프트)리눅스 커널(GPLv2), bash
LGPL라이브러리를 가져다 쓰기(링크)만 하는 프로그램은 GPL로 공개하지 않아도 됨glibc 등 라이브러리
BSD·MIT·Apache소스 공개 의무가 거의 없는 허용형 라이선스여러 도구·라이브러리
리눅스마스터 필기는 지금 커널 4.x 이상, RHEL·Rocky Linux 8, Ubuntu 18.04 이상을 기준으로 하고, 2027년 정기검정부터 커널 5.x 이상, RHEL·Rocky Linux 9, Ubuntu 22.04 이상으로 바뀝니다(KAIT 공지, 2026년 5월). 이 자료의 명령은 두 기준에서 모두 쓰이는 것으로 적었습니다.

문제에 이런 표현이 나오면 → 이렇게 고른다

  • “하드웨어를 직접 관리하고 프로그램에 자원을 나눠 주는 부분”커널
  • “사용자가 입력한 명령을 해석해 실행하는 프로그램”셸 (bash 등)
  • “고쳐서 배포하면 소스도 같은 조건으로 공개”GPL (카피레프트)
  • “라이브러리를 링크해 쓰는 프로그램은 공개 의무 없음”LGPL
  • “GNU 프로젝트와 FSF를 시작한 사람”리처드 스톨먼
  • “RHEL과 호환되는 무료 배포판”Rocky Linux, AlmaLinux

무엇으로 이뤄져 있는지 봤습니다. 이제 전원을 켜면 이 층들이 어떤 순서로 깨어나는지 봅니다.

02

켜질 때 일어나는 일: 부팅 순서

전원을 켜고 로그인 화면이 뜨기까지는 몇 단계가 이어집니다. 단계마다 다음 단계를 찾아 넘겨주는 릴레이라서, 어느 단계에서 멈췄는지 알면 무엇이 고장 났는지도 압니다.

순서단계하는 일
1펌웨어 (BIOS 또는 UEFI)하드웨어를 점검하고 부팅할 장치를 고른다
2부트 섹터 (MBR) 또는 EFI 시스템 파티션부트로더가 있는 곳
3부트로더 (GRUB2)메뉴를 보여 주고 커널과 initramfs를 메모리에 올린다
4커널 + initramfs하드웨어를 초기화하고, 임시 루트로 진짜 루트 파일시스템을 찾아 붙인다
5systemd (PID 1)첫 프로세스 — 서비스들을 순서에 맞춰 띄운다
6타깃multi-user(텍스트)나 graphical(그래픽)까지 올라가면 로그인
펌웨어
상황
방식
UEFI + GPT
결과
로그인 화면까지 도착

전원 버튼에서 로그인 화면까지 · 고장을 내면 그 단계에서 멈춘다

전원을 켜면 UEFI가 하드웨어를 점검하고 부팅할 장치를 찾아 EFI 시스템 파티션의 부트로더를 실행합니다. GRUB2가 커널과 initramfs(진짜 루트 파일시스템을 붙이기 전에 쓰는 임시 루트)를 메모리에 올리고, 커널은 첫 프로세스 systemd(PID 1)를 띄웁니다. systemd가 기본 타깃까지 서비스를 올리면 로그인할 수 있습니다.

BIOS·MBR과 UEFI·GPT: 옛 방식과 요즘 방식

이름이 넷이라 어려워 보이지만 두 쌍으로 묶으면 단순합니다. BIOS와 UEFI는 메인보드에 들어 있어 전원을 켜면 가장 먼저 도는 프로그램(펌웨어)입니다. MBR과 GPT는 디스크 맨 앞에 "이 디스크는 이렇게 나뉘어 있다"를 적어 두는 목차 형식입니다. 보통 옛날 짝은 BIOS + MBR, 요즘 짝은 UEFI + GPT입니다. 두 방식은 다음 단계인 부트로더를 찾는 방법이 다릅니다.

옛 방식요즘 방식
펌웨어BIOSUEFI
디스크 목차MBRGPT
부트로더를 찾는 법디스크 맨 앞 한 칸(512바이트)에 든 작은 코드를 그대로 실행부팅 전용 작은 파티션(EFI 시스템 파티션)을 열어 부트로더 파일을 골라 실행
비유책 표지 안쪽에 붙은 쪽지를 읽고 시키는 대로 한다"부팅" 폴더를 열어 실행할 파일을 고른다

EFI 시스템 파티션은 리눅스에서 보통 /boot/efi에 붙어 있습니다. 시험에는 "UEFI 부팅에서 부트로더가 있는 곳"으로 자주 나옵니다.

부트로더 GRUB2

이렇게 찾아 실행하는 부트로더가 GRUB2입니다. 예전에는 LILO도 썼지만 지금은 GRUB2가 표준입니다. 설정을 바꿀 때 주의할 점이 하나 있습니다. 부팅 때 실제로 읽히는 grub.cfg는 직접 고치지 않습니다. 원본인 /etc/default/grub을 고친 다음 grub2-mkconfig(Ubuntu는 update-grub)를 실행하면 grub.cfg가 새로 만들어집니다.

런레벨에서 타깃으로

예전 init은 "런레벨" 숫자로 시스템 상태를 나눴습니다. systemd는 이것을 타깃으로 바꿨고, 옛 이름도 그대로 알아듣도록 짝을 맞춰 두었습니다.

런레벨systemd 타깃상태
0poweroff.target전원 끄기
1rescue.target복구 모드 (관리자 혼자, 기본 서비스만)
3multi-user.target여러 사용자, 텍스트 모드 (서버의 흔한 기본값)
5graphical.target여러 사용자, 그래픽 화면
6reboot.target재부팅

기본 타깃은 systemctl get-default로 보고 systemctl set-default로 바꿉니다. 고장 났을 때 쓰는 모드는 둘입니다. rescue.target은 파일시스템을 붙이고 최소한의 서비스로 관리자 혼자 들어가는 복구 모드이고, emergency.target은 그보다 더 적게(루트를 읽기 전용으로만) 올리는 응급 모드입니다. /etc/fstab이 틀려 부팅이 멈추면 보통 응급 모드로 떨어집니다.

문제에 이런 표현이 나오면 → 이렇게 고른다

  • “UEFI 부팅에서 부트로더가 있는 곳”EFI 시스템 파티션 (/boot/efi)
  • “현재 리눅스의 표준 부트로더”GRUB2 (예전 LILO)
  • “커널이 맨 처음 실행하는 프로세스 (PID 1)”systemd
  • “런레벨 3에 해당하는 systemd 타깃”multi-user.target
  • “그래픽 로그인으로 부팅하는 타깃”graphical.target (런레벨 5)
  • “GRUB 설정을 바꾼 뒤 할 일”grub2-mkconfig(update-grub)로 grub.cfg 다시 생성

부팅 3~4단계에서 커널은 "루트 파일시스템"을 찾아 붙였습니다. 디스크를 어떻게 나누고 붙이는지 봅니다.

광고

03

디스크를 나누고 붙이기: 파티션·파일시스템·디렉터리 구조

새 디스크는 그냥 쓸 수 없습니다. 세 단계를 거칩니다. 먼저 디스크를 구역(파티션)으로 나누고, 각 파티션에 파일을 담을 형식(파일시스템)을 만들고(mkfs), 디렉터리 나무의 한 지점에 마운트(mount)합니다. 윈도처럼 C:, D: 드라이브가 따로 있는 게 아니라, 모든 디스크가 / 하나에서 시작하는 나무의 가지로 붙습니다.

파티션 표
디스크
파티션 표
MBR
쓸 수 있는 용량
2 / 4 TiB

디스크 원판(한 바퀴 = 디스크 전체)을 부채꼴 파티션으로 나누고, 각 파티션을 디렉터리 나무(폴더)의 한 지점에 붙인다

MBR은 파티션 정보를 디스크 첫 512바이트에 담아 주 파티션을 4개까지 만들고, 더 필요하면 그중 하나를 확장 파티션으로 만들어 그 안에 논리 파티션을 둡니다(논리는 5번부터). 512바이트 섹터에서 2 TiB를 넘는 부분은 쓸 수 없습니다. 각 파티션은 파일시스템을 만든(mkfs) 뒤 디렉터리 나무의 한 지점에 붙여야(mount) 쓸 수 있습니다.

MBRGPT
파티션 수주 파티션 4개까지 (하나를 확장으로 만들어 그 안에 논리 파티션, 5번부터)기본 128개
디스크 크기512바이트 섹터에서 2TiB까지그보다 훨씬 큰 디스크
부팅BIOSUEFI (EFI 시스템 파티션)

파일시스템과 swap

리눅스의 흔한 파일시스템은 ext4와 XFS입니다. 둘 다 저널링 파일시스템이라, 바꿀 내용을 먼저 저널에 적어 두었다가 반영합니다. 그래서 갑자기 전원이 꺼져도 파일시스템이 깨질 위험이 적고 검사도 빠릅니다. RHEL 계열은 XFS를 기본으로 쓰는데, XFS는 크기를 늘리기는 쉽지만 줄이는 것은 사실상 안 된다고 보면 됩니다(맨 끝 일부만 줄이는 기능이 있을 뿐입니다). swap은 메모리가 모자랄 때 잠시 쓰는 디스크 공간으로, 디렉터리에 붙이지 않고 swapon으로 켭니다.

/etc/fstab: 부팅 때마다 붙일 곳

mount 명령으로 붙인 것은 재부팅하면 사라집니다. 부팅 때마다 붙이려면 /etc/fstab에 한 줄씩 적습니다. 한 줄은 여섯 칸입니다.

# 장치(또는 UUID)                          마운트 지점  파일시스템  옵션      dump  검사 순서
UUID=4c2f…a91e                             /home        xfs         defaults  0     0
/dev/sdb1                                  /data        ext4        defaults,nofail  0  2

여기 적은 디스크가 없으면 부팅이 응급 모드에서 멈춥니다(2장). 꼭 필요하지 않은 디스크에는 nofail을 달아 둡니다. 장치 이름(/dev/sdb1)은 디스크를 꽂는 순서에 따라 바뀔 수 있어서, 바뀌지 않는 UUID로 적는 것이 안전합니다.

디렉터리 구조 (FHS)

어느 배포판이든 디렉터리마다 쓰임이 정해져 있습니다(파일시스템 계층 표준, FHS).

디렉터리쓰임
/etc시스템 설정 파일
/home일반 사용자의 홈 디렉터리 (/root는 관리자의 홈)
/var로그(/var/log), 메일, 캐시처럼 계속 바뀌는 데이터
/tmp누구나 쓰는 임시 파일 (Sticky Bit, 5장)
/usr설치된 프로그램과 라이브러리 (요즘 /bin·/sbin은 /usr/bin·/usr/sbin으로 합쳐진 경우가 많다)
/opt따로 설치하는 추가 소프트웨어
/boot커널과 부트로더 파일
/dev장치 파일 (/dev/sda 등)
/proc커널과 프로세스 정보를 파일처럼 보여 주는 가상 파일시스템 (디스크에 없음)

문제에 이런 표현이 나오면 → 이렇게 고른다

  • “MBR에서 주 파티션이 4개를 넘어야 한다”하나를 확장 파티션으로 만들고 그 안에 논리 파티션
  • “2TiB가 넘는 디스크를 한 파티션으로”GPT
  • “갑작스런 정전에도 파일시스템 손상을 줄이는 방식”저널링 (ext4, XFS)
  • “부팅할 때마다 자동으로 마운트”/etc/fstab에 등록
  • “시스템 설정 파일이 모인 디렉터리”/etc
  • “로그 파일이 쌓이는 곳”/var/log
  • “디스크가 아닌 커널 정보를 보여 주는 가상 파일시스템”/proc

디스크를 붙였으니 그 안의 파일을 봅니다. 파일 이름과 파일 내용은 사실 따로 있습니다.

Pro 전용

여기까지 무료로 읽을 수 있어요

나머지 6개 장은 Pro 구독자에게 열려 있어요. 장마다 3D 그림과 "문제에 이런 표현이 나오면" 정리가 이어지고, 마지막 장에서는 직접 풀어 보며 확인합니다.

  1. 04inode와 링크, 기본 명령
  2. 05권한
  3. 06사용자와 그룹
  4. 07셸: 리다이렉션·파이프·vi
  5. 08프로세스와 시그널
  6. 09패키지와 서비스 관리

PasslyExam

개념을 읽었다면, 이제 시험 문제로 확인할 차례

PasslyExam은 자격증 시험 범위에 맞춰 만든 오리지널 연습문제와 해설, 실전 모의고사를 제공합니다. 왜 그 보기가 정답이고 비슷한 보기는 왜 틀리는지까지 해설로 짚습니다. 가입하면 매일 무료로 연습문제를 풀 수 있습니다.