공부 기록

[학습 후기] 리눅스 입문: OS의 구조부터 파일 시스템까지 (1~4장)

aeve 2025. 11. 23. 19:16

'코딩 자율학습 리눅스 입문 with 우분투'를 통해 리눅스 학습을 시작했습니다. 1장부터 4장까지는 리눅스의 개념과 기본적인 사용 환경, 그리고 가장 중요한 파일 시스템의 구조를 익히는 시간이었습니다. 학습한 내용을 바탕으로 핵심 개념과 실습 과정을 정리해 봅니다.

1. 리눅스(Linux)란 무엇인가?

가장 먼저 운영체제(OS)의 본질에 대해 이해했습니다. 운영체제는 사용자 ↔ 애플리케이션 ↔ 운영체제 ↔ 하드웨어로 이어지는 흐름 속에서 자원을 관리하고 프로그램을 실행하는 시스템 소프트웨어입니다.

특히 리눅스를 공부하며 커널(Kernel)과 배포판(Distribution)의 차이를 명확히 알게 되었습니다.

  • 리눅스 커널: 리누스 토르발즈가 만든 운영체제의 핵심(심장).
  • 리눅스 배포판: 커널에 사용자 편의를 위한 각종 프로그램(셸, 컴파일러 등)을 묶어 패키지로 만든 것. (예: 우분투, 센토스, 레드햇 등)

안드로이드 스마트폰부터 클라우드 서버(AWS, Azure)까지, 리눅스는 생각보다 훨씬 가까운 곳에서 백엔드와 임베디드 시스템을 지탱하고 있었습니다.

2. 실습 환경 구축: 가상머신에서 클라우드로

책에서는 PC에 직접 설치하거나 가상머신(Virtual Machine)을 사용하는 방법을 안내합니다. 저 역시 가상머신에 리눅스를 설치하여 실습했습니다.

3. 터미널과 셸(Shell)

리눅스의 핵심은 CLI(명령 줄 인터페이스) 환경입니다. 여기서 터미널의 개념을 구분하는 것이 중요했습니다.

  • 터미널: 사용자와 컴퓨터가 상호작용하는 창구 (하드웨어적 개념이 포함된 장치/프로그램).
  • 셸(Shell): 사용자의 명령을 해석하여 커널에 전달하는 명령어 해석기. (리눅스의 기본 셸은 Bash입니다.)

셸 스크립트와 자동화

셸은 단순히 명령만 내리는 것이 아니라, 변수나 반복문 등을 사용하여 프로그래밍하듯 작업을 자동화할 수 있습니다.

nano 에디터를 통해 첫 스크립트인 hello.sh를 만들고, #!/bin/bash라는 셔뱅(Shebang)을 통해 인터프리터를 지정하는 법을 익혔습니다.

필수 기본 명령어

실습을 위해 필수적으로 알아야 할 명령어들도 정리했습니다.

  • 탐색: ls(목록), cd(이동), pwd(현재 경로 확인)
  • 관리: mkdir(디렉터리 생성), rm(삭제), cp(복사), mv(이동)
  • 조회/편집: cat(내용 출력), nano(에디터), man(매뉴얼 확인)

4. 파일과 디렉터리 구조

리눅스의 파일 시스템은 윈도우와는 다르게 단 하나의 루트 디렉터리(/)에서 시작하는 계층 구조(Tree Structure)를 가집니다.

4.1 파일 시스템의 종류

  • 디스크 기반: HDD/SSD에 설치 (예: ext4)
  • 네트워크 기반: 원격 저장소 연결 (예: NFS)
  • 가상 파일 시스템: 커널 정보를 파일처럼 보여줌 (/proc, /sys). 실제 파일이 아니라 메모리에 존재하는 정보를 디렉터리 구조로 노출한다는 점이 흥미로웠습니다.

4.2 리눅스의 파일 종류

리눅스에서는 "모든 것이 파일이다"라는 말처럼, 하드웨어나 통신 채널도 파일로 취급합니다. ls -l 명령어로 파일 종류를 확인할 수 있습니다.

표시 문자 설명 비고
- 일반 파일 텍스트, 이미지 등
d 디렉터리 파일 목록을 담은 파일
l 심볼릭 링크 바로가기
b / c 장치 파일 블록 장치(HDD) / 문자 장치(키보드)

4.3 링크(Link)의 이해: 하드 링크 vs 소프트 링크

가장 헷갈리기 쉬운 개념인 링크에 대해서도 깊이 있게 다루었습니다. 핵심은 아이노드(Inode)였습니다.

  • 아이노드(Inode): 파일의 메타데이터(권한, 소유자, 위치 등)를 담고 있는 고유 식별자.
  • 소프트 링크 (Symbolic Link): 윈도우의 '바로가기'와 같습니다. 원본의 경로를 가리키며, 원본이 삭제되면 링크가 깨집니다. (ln -s)
  • 하드 링크 (Hard Link): 원본 파일과 동일한 아이노드를 공유합니다. 즉, 원본의 복제본(Clone)처럼 동작하며, 원본을 지워도 데이터는 남아있습니다.

마무리 및 다음 학습 계획

4장까지 학습하면서 리눅스의 겉모습(명령어)뿐만 아니라 속사정(커널, 아이노드, 프로세스 관리)을 조금씩 이해하게 되었습니다.

다음 주에는 프로세스 관리에 대해서 학습하겠습니다.