카테고리 없음

부팅 과정부터 리눅스 디렉토리까지..

minus43 2025. 2. 17. 01:23

리눅스를 쓰면서 제일 먼저 난관이었던 것은 ide 설치하는 과정이었다
게다가 레드햇 계열의 rocky linux를 쓰다보니 .deb가 

호환되지 않는 경우가 발생하였고 눈물을 머금으며 tar.gz 파일들을 설치하고 데크스톱 엔트리 설정하는 과정을 거쳤어야 했다(퀀 네버 크라이)

어쨋든 그렇게 설치하다 보니까 문득 그런 의문이 생겼다 이런 디렉토리들은 어떤 의미가 있을까 궁금도 하기도 했고 설치 시에 기본적으로 나누는 home, swap, root는 어떤 의미가 있을까..거기에서부터 뭔가뭔가 시작했는데  음..뭔가 길어졌다.

질문을 꼬리물어 정리하다보니 좀 길어졌다.

1. 컴퓨터가 부팅될 때 우리가 아는 디렉토리로 오기까지 어떤 과정을 거치게 될까?

부팅 시에 사실 종종 마음을 어렵게 하는 무언가가 가끔 있다.

이런 화면을 본적도 있을 수도 있고

이런 화면을 본적도 있을 것이다 
종종 이런 화면을 볼때마다 아..컴퓨터가 뭔가 오류가 있구나 ! 라고 어려워 할 수 있지만 이 화면에서 넘어가는 방법은 단순하다 
boot 쪽으로 가서 window boot manager를 가장 먼저 두거나 자신이 사용하고 있는 운영체제를 선택해서 저장하고 부트하면 우리가 아는 운영체제가 실행되게 된다.

그럼 이쯤 되면 컴퓨터를 키면 어떤 동작을 하는지를 알게 된다.
운영체제를 찾아 실행하는 과정을 거치게 된다는 것이다.

2. 그럼 운영체제는 어떻게 실행될까?

 

바로 위에 보았던 화면들이 그거다. 처음 나온 거를 BIOS(Basic Input/Output System), .두번째에 있는 걸 UEFI(Unified Extensible Firmware Interface)라고 한다.

간략히 설명하자면

  BIOS UEFI
출시 연도 1980년대 2000년대 이후
디스크 지원  MBR GPT
부팅 속도 느림 빠름
보안 기능 없음 Secure Boot 지원

이렇다...
디스크 지원을 보면 뭔가 차이가 있다.  

 

3. UEFI와 BIOS는 운영체제를 어떻게 실행할까

 

파티션 어디서 많이 들어본 용어일 것이다. 주로 이제 어...듀얼 부팅에 관심이 있다면 한번 쯤은 

이런 거를 해본 적이 있을 것이다.

 

디스크는 저장 공간이다, 사용하려면 이러이러하게 사용하겠다~ 이런 규칙들이 있어야 가능하다. 
그렇다면 이런 규칙의 역할을 할 수 있게 하는게 파티션 테이블이다(Partirtion Table)

즉 운영체제를 사용하려면 이런 파티션을 나눠져야 하는 것이다.
이 방식은 크게 2가지로 나눈다.
MBR(Master Boot Record)와 GPT(GUID partion Table)
간략히 정리하면

  MBR GPT
최대 디스크 크기 2TB 제한 없음
최대 파티션 개수 4 128개 이상
백업 기능 X O
부팅 지원 BIOS 전용 UEFI 전용

 

딱 봐도 MBR이 좀 제한이 많아 보이기는 한다

그래서 어쨋든 BIOS와 UEFI는 
MBR, 또는 GPT로 나누어진
파티션을 살피면서 운영체제의 부트로더를 실행한다.
부트로더는 운영체제의 커널(운영체제의 그 자체..?라고 보면된다)를 실행하도록 한다.

4. 파일 디렉토리까지

 

MBR, GPT로 나누어진 파티션. 그리고 운영체제의 실행.
그러면 이제 우리가 아는 파일 디렉토리까지는 어떤 과정이 있을까?
파티션의 한계가 있다. 크기 변경이 까다롭다 
크기 변경을 하려면 기존 파티션을 삭제하고 다시 설정해야 하는데 그 과정에서 그러면 데이터도 백업해야 하고 운영하던 시스템도 정지해야 하고...여간 작업이 까다롭다.(물론 이제 좀 들어가면 RAID 기능같은 것이 있긴 한데 이건 나중에 설명하겠다)
그리고 디스크가 여러 개인 경우에
그 디스크들을 다 활용하고 싶은데 그런 경우에는 
한 파티션에 여러 개의 디스크들을 사용하고 싶겠지만, 그럴 수 없다.

그래서 나오는 것이 논리적 볼륨 기술이다
유연한 저장 공간 조정, 백업과 복구 기술의 유용함, 운영체제와 독립적인 저장공간 사용 가능 등등이다.

논리적 볼륨 기술은 다음과 같은 과정을 공통적으로 거친다.
1) 물리 디스크 준비 및 초기화

2) 볼륨 그룹(VG) 또는 스토리지 풀(Strorage Pool) 생성
3) 논리 볼륨(LV) 또는 가상 디스크(Virtual Disk) 생성
4) 파일 시스템 생성 및 마운트

여기에서 물리 디스크라 함은 파티션이 아닌 진짜 물리 디스크(하드 스스디 같은 거)다.
왜 파티션이 아니라 물리 디스크냐.
아까 언급한 파티션의 한계 중에 한 파티션은 여러 디스크를 소유할 수 없는 점도 있고
논리적 볼륨 기술 자체가 디스크 관리에 중점이 되어 있는 거도 있다.

어쨋든 이런 과정들을 거치면 
리눅스에서는 

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
nvme0n1     259:0    0 476.9G  0 disk 
├─nvme0n1p1 259:1    0   600M  0 part /boot/efi
├─nvme0n1p2 259:2    0     1G  0 part /boot
└─nvme0n1p3 259:3    0 475.4G  0 part 
  ├─rl-root 253:0    0    70G  0 lvm  /
  ├─rl-swap 253:1    0  15.6G  0 lvm  [SWAP]
  └─rl-home 253:2    0 389.8G  0 lvm  /home



이런 형식이 되고

윈도우 같은 경우는 


이런 구성이 된다.

이후에는 뭐 리눅스는 표준 루투 디렉토리 구조를 따라서 

[minus@localhost /]$ ls -a
.   afs  boot  etc   lib    media  opt   root  sbin  sys  usr
..  bin  dev   home  lib64  mnt    proc  run   srv   tmp  var

이런 식으로 배치가 되고 
윈도우는 

이런 식으로 된다.

이거는 간략히 살펴보면

/ 루트 디렉토리 (최상위 경로) C:\
/bin 일반 사용자용 필수 명령어 (ls, cp, mv 등) C:\Windows\System32\
/sbin 시스템 관리 명령어 (fdisk, reboot 등) C:\Windows\System32\
/boot 부팅 관련 파일 (커널, GRUB 등) C:\Windows\Boot\
/dev 장치 파일 (하드디스크, USB 등) 장치 관리자 (Device Manager)
/etc 시스템 설정 파일 (passwd, fstab 등) C:\Windows\System32\Config\
/home 사용자 홈 디렉토리 (/home/사용자) C:\Users\사용자
/lib 라이브러리 파일 (.so 파일) C:\Windows\System32\
/mnt 외부 디스크 마운트 지점 D:\, E:\ (추가 드라이브)
/opt 선택적 소프트웨어 설치 경로 C:\Program Files
/proc 커널 및 프로세스 정보 작업 관리자(Task Manager)
/root 루트 사용자 홈 디렉토리 (/home/root 아님) C:\Users\Administrator
/run 시스템 정보 및 프로세스 관리 C:\Windows\Temp\
/srv 서버 애플리케이션 데이터 저장소 IIS, Apache 서버 폴더
/tmp 임시 파일 저장소 C:\Temp
/usr 시스템 유틸리티, 애플리케이션 저장 C:\Program Files
/var 로그, 캐시, 데이터베이스 저장소 C:\ProgramData

 

사실 음...시작은 opt에서부터 뭔가 의문을 시작했는데 굉장히 뭔가 많이 설명이 되었다.
그리고 사실 예전에 쿠버네티스 하면서 PVC가
뭘까...하던 적도 있기도 하고 음...그랬었다.