- 리눅스의 계보는 "이름과 연도와 역할"의 3종 세트로 묻는다.
- 인물과 산출물을 정확히 짝지어야 한다.
| 인물/조직 | 산출물 | 핵심 키워드 |
|---|
| 리처드 스톨먼 | GNU 프로젝트, FSF, GPL | 자유 소프트웨어 운동(1983) |
| 리누스 토르발스 | 리눅스 커널(1991) | 핀란드, 미닉스에서 영감 |
| 앤드루 타넨바움 | MINIX | 교육용 유닉스 |
| 켄 톰슨/데니스 리치 | UNIX, C 언어 | 벨 연구소(1969~) |
- GNU는 커널이 없었고, 리눅스는 커널만 있었다.
- 둘이 결합해 GNU/Linux가 완성됐다는 흐름이 정답의 핵심이다.
한 줄 정리: 리눅스 = 리누스의 커널 + GNU의 도구. 어느 한쪽만으로는 완전한 OS가 아니다.
함정: "리눅스는 토르발스가 혼자 만든 운영체제다"는 틀림. 토르발스가 만든 것은 커널이지 OS 전체가 아니다.
- 오픈소스 라이선스는 카피레프트 강도로 구분한다.
- 이 비교는 시험 범위에 든다.
| 라이선스 | 카피레프트 | 핵심 특징 |
|---|
| GPL | 강함 | 2차 저작물도 GPL 강제(소스 공개) |
| LGPL | 약함 | 라이브러리 링크 시 비공개 가능 |
| BSD | 없음 | 출처 표기만 하면 상용 폐쇄 가능 |
| Apache | 없음 | BSD류 + 특허 조항 명시 |
| MIT | 없음 | 가장 자유로움, 짧은 조항 |
⚠️ 결정적 차이: GPL은 "내 코드를 쓰면 너도 공개해라", LGPL은 "라이브러리로 갖다 쓰는 건 봐준다". 상용 SW가 LGPL 라이브러리를 링크해도 자기 소스는 비공개 가능하다.
- 설치 단계의 핵심은 파티션 설계다.
- 마운트 포인트별 역할을 외운다.
| 파티션 | 역할 | 비고 |
|---|
/ (root) | 최상위, 필수 | 모든 것의 시작 |
/boot | 커널·부트로더 | 작은 용량, 별도 권장 |
swap | 가상 메모리 | 통상 RAM의 1~2배 |
/home | 사용자 데이터 | 재설치 시 보존 유리 |
/var | 로그·가변 데이터 | 로그 폭주 격리용 |
- 파일시스템 저널링 계보도 묻는다 — ext2(저널링 없음) → ext3(저널링 추가) → ext4(대용량·확장).
- 그 밖에 XFS(대용량, RHEL 7+ 기본), Btrfs(스냅샷·CoW)가 있다.
스왑 공식: 전통적으로 RAM ≤ 2GB면 RAM의 2배, 그 이상이면 RAM과 같거나 일부만. 시험에선 "RAM의 1~2배"가 무난한 정답.
- 부팅 순서와 SysV 런레벨 ↔ systemd 타깃 매핑은 시험 범위에 든다.
| 런레벨 | systemd 타깃 | 의미 |
|---|
| 0 | poweroff.target | 종료 |
| 1 | rescue.target | 단일 사용자 |
| 3 | multi-user.target | 텍스트 다중 사용자 |
| 5 | graphical.target | GUI 다중 사용자 |
| 6 | reboot.target | 재부팅 |
- 부팅 흐름: BIOS/UEFI → 부트로더(GRUB) → 커널 로드 → initramfs → init/systemd(PID 1) → 타깃 도달.
GRUB 핵심: GRUB2 설정은 /boot/grub2/grub.cfg이지만 직접 편집 금지 — /etc/default/grub 수정 후 grub2-mkconfig로 생성한다.
명령 정리: 기본 타깃 확인 systemctl get-default, 변경 systemctl set-default multi-user.target. 런레벨 확인은 runlevel/who -r.
- FHS(Filesystem Hierarchy Standard)는 각 디렉터리의 용도를 묻는다.
- 헷갈리는 짝을 집중해서 본다.
| 디렉터리 | 용도 | 함정 포인트 |
|---|
/bin | 필수 사용자 명령 | 부팅에 필요한 기본 명령 |
/sbin | 시스템 관리 명령 | 주로 root용 |
/etc | 시스템 설정 파일 | 바이너리 아님 |
/dev | 장치 파일 | 실제 파일 아님 |
/proc | 커널·프로세스 정보 | 메모리상 가상 FS |
/usr | 2차 응용 프로그램 | "user" 아닌 정적 공유 |
/var | 가변 데이터(로그 등) | 계속 변함 |
/tmp | 임시 파일 | 재부팅 시 삭제 가능 |
/lib | 공유 라이브러리 | 커널 모듈 포함 |
/opt | 추가 패키지 | 서드파티 SW |
⚠️ 함정: /usr의 usr는 "user"가 아니라 Unix System Resources. 사용자 홈은 /home이다.
- 절대경로(
/로 시작)와 상대경로(./..)의 구분을 묻는다.
- 와일드카드(
*, ?, [])의 의미도 함께 묻는다.
| 기호 | 의미 |
|---|
. | 현재 디렉터리 |
.. | 상위 디렉터리 |
~ | 홈 디렉터리 |
* | 0개 이상 모든 문자 |
? | 임의의 한 문자 |
[abc] | 괄호 안 한 문자 |
경로 한 줄: 절대경로는 위치와 무관하게 항상 같은 곳을, 상대경로는 현재 위치 기준으로 가리킨다. 스크립트에선 절대경로가 안전하다.
- 배포판(distribution)은 커널 + GNU 도구 + 패키지 관리자를 묶은 완성품이다.
- 계열 구분이 출제된다.
| 계열 | 대표 배포판 | 패키지 |
|---|
| Red Hat | RHEL, CentOS, Fedora, Rocky | rpm/yum |
| Debian | Debian, Ubuntu, Mint | deb/apt |
| Slackware | Slackware | tgz |
| SUSE | openSUSE, SLES | rpm/zypper |
- 커널 버전 표기도 묻는다.
- 과거
2.6.x처럼 짝수 마이너=안정 / 홀수=개발 규칙이 있었다.
- 3.x 이후로는 이 규칙이 폐지되고 시간 기반 릴리스로 바뀌었다. 현재 버전 확인은
uname -r.
uname 옵션: uname -r(커널 릴리스), uname -a(전체 정보), uname -m(머신 아키텍처). 시험에서 "커널 버전 확인 명령"은 uname -r이 정답.
배포판 한 줄: CentOS/Rocky는 RHEL 호환 무료 배포판, Ubuntu는 Debian 기반 데스크톱·서버 인기 배포판. 계열을 알면 패키지 도구를 추론할 수 있다.
- 부팅 이후 사용자가 로그인하면 셸이 실행되기까지의 절차도 1차 과목①의 범위다.
| 단계 | 설명 |
|---|
| 로그인 프롬프트 | getty/login이 ID·암호 확인 |
| 인증 | /etc/passwd·/etc/shadow 대조 |
| 셸 실행 | passwd의 7번째 필드 셸 구동 |
| 환경 설정 | profile·bashrc 순차 로딩 |
- 가상 콘솔(
Ctrl+Alt+F1~F6)과 GUI(F1 또는 F7)의 전환도 상식 수준으로 출제될 수 있다.
로그인 셸 vs 비로그인 셸: 로그인 셸은 ~/.bash_profile을, 비로그인 셸(터미널 새 창)은 ~/.bashrc를 읽는다. 보통 .bash_profile에서 .bashrc를 source 해 통일한다.
- 리눅스의 자체 문서 체계도 과목①에서 묻는다.
- man 페이지는 섹션 번호로 구분된다.
| 섹션 | 내용 |
|---|
| 1 | 일반 사용자 명령 |
| 2 | 시스템 호출 |
| 3 | 라이브러리 함수 |
| 4 | 장치 파일(/dev) |
| 5 | 파일 형식·설정 파일 |
| 8 | 시스템 관리 명령 |
- 같은 이름이 여러 섹션에 있을 때는
man 5 passwd(파일 형식)와 man 1 passwd(명령)처럼 번호로 구분해 부른다.
| 도움말 도구 | 용도 |
|---|
man | 매뉴얼 페이지 |
info | GNU 정보 문서(하이퍼링크) |
whatis | 한 줄 요약 |
apropos | 키워드로 명령 검색 |
명령 --help | 빠른 옵션 요약 |
검색 한 줄: 무슨 명령인지 모를 때 apropos 키워드로 관련 명령을 찾고, 알면 man 명령으로 상세를 본다. whatis는 한 줄 정의만 빠르게.
- 마지막으로 상식성 항목을 모은다.
- 프롬프트 끝 기호로 권한을 구분한다 — 일반 사용자는
$, root는 #. 이 한 글자로 현재 권한을 즉시 알 수 있다.
- 가상화·컨테이너 상식도 1급 수준에서 가볍게 나온다.
| 개념 | 설명 |
|---|
| 하이퍼바이저 | VM을 구동하는 가상화 계층(KVM, Xen) |
| 컨테이너 | OS 커널 공유 경량 격리(Docker) |
| 호스트 OS | 가상화를 올리는 실제 OS |
| 게스트 OS | VM 안에서 도는 OS |
VM vs 컨테이너: VM은 게스트 OS 전체를 띄워 무겁지만 격리가 강하고, 컨테이너는 호스트 커널을 공유해 가볍지만 격리가 상대적으로 약하다. 이 대비가 출제 포인트.
부팅 상식 마무리: #(root)·$(일반)·%(csh 계열) 프롬프트 기호와, 종료 명령 shutdown -h now(즉시 종료)·shutdown -r now(재부팅)·init 0(종료)·init 6(재부팅)을 함께 정리하면 과목① 마무리로 충분하다.
아래 모의고사로 약점을 실전으로 점검한다.
- GNU/Linux : 리누스의 커널과 GNU의 도구가 결합해 완성된 운영체제. 어느 한쪽만으로는 OS가 되지 않는다.
- 카피레프트 : "내 코드를 쓴 결과물도 같은 조건으로 공개하라"는 라이선스 원칙. GPL이 대표적이다.
- LGPL : 라이브러리로 링크해 쓰는 경우에는 자기 소스를 공개하지 않아도 되는 완화된 GPL.
- 저널링 : 파일시스템 변경을 미리 기록해 두어 갑작스러운 종료 뒤에도 빠르게 복구하는 기능. ext3부터 도입됐다.
- swap : 메모리가 모자랄 때 디스크를 메모리처럼 쓰는 영역. 통상 RAM의 1~2배를 잡는다.
- initramfs : 커널이 실제 루트 파일시스템을 마운트하기 전에 임시로 쓰는 메모리 파일시스템.
- GRUB2 : 리눅스의 표준 부트로더.
grub.cfg는 직접 고치지 않고 /etc/default/grub 수정 후 생성한다.
- systemd 타깃 : 옛 런레벨을 대체하는 시스템 상태 단위. 3=multi-user, 5=graphical에 대응한다.
- FHS : 리눅스 디렉터리의 표준 배치 규약. 어느 디렉터리에 무엇이 들어가는지를 정한다.
- /usr : "user"가 아니라 Unix System Resources. 응용 프로그램과 공유 자원이 들어간다.
- 절대경로 / 상대경로 :
/부터 시작해 위치와 무관하게 같은 곳을 가리키는 경로 / 현재 위치를 기준으로 하는 경로.
- man 섹션 : 매뉴얼의 분류 번호. 1=명령, 5=파일 형식, 8=관리 명령이다.
- apropos / whatis : 키워드로 관련 명령을 찾는 검색 / 명령의 한 줄 정의만 보여 주는 요약.
- 하이퍼바이저 / 컨테이너 : 게스트 OS 전체를 띄우는 무거운 가상화 / 호스트 커널을 공유하는 가벼운 격리.
📝 연습 문제
선택지를 클릭하면 정답·해설이 펼쳐집니다.
리눅스 커널을 처음 개발한 인물과 GNU 프로젝트를 시작한 인물을 올바르게 짝지은 것은?
상용 폐쇄 소프트웨어가 라이브러리로 링크해 사용해도 자신의 소스를 공개하지 않아도 되는 라이선스는?
systemd에서 GUI 다중 사용자 모드에 해당하는 타깃과 동등한 SysV 런레벨은?
FHS에서 /usr 디렉터리의 의미와 용도로 옳은 것은?
리눅스 부팅 과정의 순서로 올바른 것은?
GRUB2 환경에서 부팅 설정을 변경하는 올바른 방법은?
다음 파일시스템 중 저널링 기능이 없는 것은?
시스템 관리용 명령(주로 root 전용)이 위치하는 표준 디렉터리는?
현재 시스템의 기본 부팅 타깃을 텍스트 다중 사용자 모드로 변경하는 명령은?
와일드카드 ?의 의미로 옳은 것은?