더북(TheBook)

리눅스 부팅 과정과 런레벨

먼저 리눅스가 부팅하는 과정부터 살펴보겠습니다. 컴퓨터에 전원을 올리면 컴퓨터의 제어를 맡는 기본 입출력 시스템 Basic Input Output System, BIOS, 바이오스가 하드디스크 같은 부팅 가능한 장치의 처음 영역을 읽습니다. 이 부분은 마스터 부트 레코더 Master Boot Record 즉, MBR이라고 불리는 512바이트의 작은 영역으로 우분투 설치 과정에서 깔아둔 부트 로더가 MBR에 들어 있습니다. 부트 로더는 부팅할 운영체제의 커널이 디스크의 어디에 있는지 알고 있기 때문에 커널을 메모리로 불러옵니다.

Tip

커널은 운영체제의 핵심으로 운영체제 가장 밑바닥에서 시스템의 가장 기본적인 작업을 처리하는 부분입니다.

메모리에 적재된 커널은 하드디스크의 루트 파티션을 찾아서 마운트하고 하드웨어를 감지하여 사용할 수 있게 만듭니다. 이 과정이 끝난 다음 리눅스 커널은 모든 프로세스의 부모 역할을 하는 PID 1번, init를 실행시킵니다. init는 사용자가 시스템을 사용할 수 있는 환경을 만들어 주는데, 이 과정을 시스템 초기화라고 하며 init를 시스템 초기화 프로세스라고 합니다. ps 명령으로 init를 확인해볼 수 있습니다.

shinjaehun@losttemple:~$ ps -ef
UID        PID  PPID  C STIME TTY   TIME      CMD
root         1     0  0 09:32 ?     00:00:03  /sbin/init

init는 런레벨에 따라 예약된 프로세스를 실행시킵니다. 시스템을 사용하다보면 시스템 점검을 위해서 네트워크 기능을 해제하거나 그래픽 환경 대신 텍스트 환경으로 부팅할 수 있는데, 런레벨Run Level은 이러한 필요에 따라 시스템을 다른 환경으로 부팅할 수 있도록 구분해둔 설정을 의미합니다.

우분투에는 런레벨이 0부터 6까지 있습니다. 0은 시스템 종료, 1은 단일 사용자 모드, 2는 그래픽 다중 사용자 모드, 6은 시스템 재부팅 환경을 의미합니다. 기본값은 2이며 3, 4, 5는 2와 동일한 환경입니다. runlevel 명령으로 여러분이 사용하고 있는 시스템의 런레벨을 확인할 수 있습니다.

shinjaehun@losttemple:~$ runlevel
N 2
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.