System

리눅스 Booting, Run level

Ohs_ 2021. 1. 5. 19:27

리눅스에서 전원이 들어오면 제일 먼저 하는 작업은 보조기억장치에 있는 운영체제의 커널을 주기억장치에 올리는 작업을 한다. 이때 사용된는 프로그램은 로더(Loader)이다. 로더 프로그램에서 주요 기능은 LILO(LInux LOader)가 한다. LILO는 리눅스의 부트로더인데 LILO 실행 시 '/etc/lilo.conf'라는 파일을 읽어서 실행된다. 하지만 최근에는 LILO 보다 GRUB 부트로더를 사용한다. '/boot/grub/grub.conf'라는 설정파일을 읽어서 실행된다. 우분투의 경우 '/boot/grub/grub.cfg'로 존재한다. 가끔 우분투 설치 시 GRUB를 찾을 수 없다고 나올 떄가 있는데 이때는 체험모드로 우분투 실행 후 bootrepair를 설치 후 해당 프로그램으로 GRUB를 복구, 재설치 해주면 된다. grub.conf 파일의 설정 항목은 다음과 같다. grub.conf 파일을 수정하여 멀티 부트 레이블 번호 선택, 부팅 타임아웃 설정, 부트 로더 보이기/숨기기 등 설정을 할 수 있다.

우분투 grub.cfg

 

GRUB의 특징

부트 정보를 임의로 변경할 수 있다. 또한 여러 운영체제를 사용할 수 있는 멀티 부팅을 제공한다. 커널 경로 및 파일명만 알고 있으면 부팅할 수 있어 편리하다.

 

리눅스 Booting 순서

  1. 보안 측면에서 부팅 순서는 중요하다. 공격자 입장에서 공격 대상의 PC가 온라인 상태일 때 악의적인 행위를 할 것이기 때문에 가장 확실한 부팅 과정에 악성코드를 심어둘 수 있다. 부팅 순서는 다음과 같다.
  2. 전원이 들어오면 ROM BIOS를 읽고 디스크의 MBR(Master Boot Record)에 있는 부트로더가 실행된다.
  3. 부트로더는 GRUB, LILO중 하나일 것이고 실행된다면 각각의 설정파일에 맞게 보조기억장치에있는 커널파일을 찾아 주기억장치에 올릴것이다.
  4. 리눅스 커널은 하드웨어를 확인하고 root의 읽기전용으로 마운트를 수행한다. 그 후 디스크를 검사하고 다시 쓰기전용으로 마운트한다.
  5. init프로세스에 PID 1번을 할당하고 init은 /etc/initab 파일을 읽어서 디바이스 및 하위 데몬 프로세스들을 실행한다.
  6. 이때, init 프로세스의 작업 수행은 리눅스의 Run level에 따라 다르게 수행된다.

 

리눅스 Run level

0 PROM 감사 단계, 시스템 종료 명령어로는 'poweroff', 'shotdown' -h 와 같은 효과이다.
1 단일 사용자 단계로 여러 개의 파일 시스템이 로드되어 있다. 주로 암호를 변경할 때 사용한다.
2 공유된 자원을 갖지 않는 다중 사용자 모드이다.
3 공유 자원을 가진 다중 사용자 단계로 CLI로 실행된다.
4 현재 사용되지 않는다. 임의로 설정하여 사용할 수 있다.
5 Run level3과 동일하게 실행되고 GUI 환경인 X-Windows를 실행한다.
6 재부팅 단계로 실행단계 3의 상태로 재부팅한다.

런레밸은 init 명령어로도 제어할 수 있다. init [run level] 명령을 이용하면 제어할 수 있다.

반응형