ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • LINUX 2nd | 부트 매니저
    기타/LINUX 2020. 7. 8. 15:38

    부팅이란?

    부팅(Booting)
    컴퓨터에서 사용자가 운영체제를 시동할 때 운영체제를 시작하는 과정

    우리는 컴퓨터(하드웨어)를 제어하기 위해 운영체제를 사용한다.

    그렇기에 컴퓨터는 켜짐과 동시에 자동으로 운영체제를 시동시켜 사용자에게 운영체제 환경을 제공한다. 이러한 과정을 부팅이라 한다.

    리눅스 부팅 과정

    1. 전원 ON
    2. ROM-BIOS
      1. POST(Power On Self Test) 실행: 시스템에 장착된 하드웨어들을 인식해 이상 유무를 체크
      2. 부트로더 호출
    3. 부트로더
      1. 리눅스는 부트로더로 LILO(Linux Loader)와 GRUB(Grand Unified Bootloader)를 사용
      2. 부트로더가 리눅스 커널을 로딩
      3. 스와퍼 프로세스 호출
    4. 스와퍼 프로세스
      1. 리눅스 커널 로드에서 인식한 장치들의 드라이브를 초기화
      2. init 프로세스 호출
    5. init 프로세스
      1. /etc/inittab 파일을 읽음
    6. 부팅 레벨 결정
      1. 부팅 레벨을 결정
    7. 스크립트
      1. /etc/rc.d/rc.sysinit 스크립트 실행: 시스템 초기화 작업 수행
      2. /etc/rc.d/rcX.d 스크립트 실행: 부팅 레벨에 따라 디렉터리 내 스크립트 순차적으로 수행
    8. X 윈도우
      1. 부팅 레벨이 5일 경우 GUI 환경으로 X 윈도우 실행

    부트로더(Boot Loader)

    부트로더(Boot Loader)
    운영체제가 시동되기 이전에 미리 실행되는 프로그램
    커널이 올바르게 시동되기 위해 필요한 모든 관련 작업을 마무리하고 최종적으로 운영체제를 시동시킨다.
    커널(Kernel)
    운영체제의 핵심이 되는 컴퓨터 프로그램
    하드웨어와 프로세스의 보안을 책임지며, 시스템 자원을 관리하는 역할을 한다.

    부트로더의 기능

    • 컴퓨터를 사용자가 제어할 수 있도록 보조기억장치에 저장된 운영체제를 읽어 주기억장치에 적재한다.
      • 보조기억장치: 디스크 & 플래시와 같은 대용량 기억장치
      • 주기억장치: RAM과 같은 컴퓨터 메모리
    • 운영체제가 시동되기 이전에 미리 실행되어 커널이 올바르게 시동되기 위해 필요한 작업을 한다.
    • 운영체제 실행에 필요한 환경을 설정하고 운영체제 이미지를 메모리에 복사한다.
      • 운영체제 이미지: 운영체제를 구동하기 위한 패키지. 완전한 운영체제를 만들기 위해 필요한 인터페이스, 커널 등을 모두 가지고 있는 파일 & 패키지를 의미한다.
    • 주 파티션(Primary Partition)마다 부트 섹터가 할당되고, 이곳에 부트로더가 저장된다.
    • 디스크가 여러 파티션으로 나뉘었을 때 컴퓨터는 어떤 파티션에 있는 부트 섹터를 읽어 부팅을 해야 하는지 모른다. 따라서 MBR에 부트 레코드를 기록하여 어떠한 부트 섹터를 읽어 부팅할지 정한다.
      • MBR(Master Boot Record)
        • 512byte의 크기를 가진다.
        • 디스크의 첫 번째 섹터에 위치하고 가장 먼저 읽힌다.
        • 디스크의 전체적인 관리를 담당한다.
        • 파티션 정보와 특정 부트 섹터를 불러오는 코드가 저장되어 있다.
    • 대표적으로 LILO(Linux Loader)와 GRUB(Grand Unified Bootloader)가 있다.
      • LILO: 리눅스 운영체제에 한정되어 사용된다.
      • GRUB: 리눅스 외의 다른 운영체제에서도 사용된다.
      • MBR에 있는 부트로더는 시스템 전원이 공급되면 가장 먼저 ROM-BIOS에게서 시스템 제어권을 받아와 장착된 하드웨어에 대한 인식과 기본적인 점검을 한다.

    GRUB(Grand Unified Bootloader)

    Erich Stefan Boleny에 의해 개발된 부트로더로 리눅스의 전통적인 부트로더인 LILO의 단점을 보완했다.

    특징

    • LILO에 비해 설정 & 사용이 편리하다.
    • 부트 정보를 사용자가 임의로 변경해 부팅할 수 있어, 부트 정보가 올바르지 않더라도 부팅 시 바로 수정하여 부팅할 수 있다.
    • 멀티 부팅이 가능하다.
    • 커널의 경로와 파일 이름만 알면 부팅할 수 있다.
    • 메뉴 인터페이스 환경을 지원해 대화명 모드로 부트 정보를 설정할 수 있다.

    환경설정

    GRUB의 환경 설정 파일은 /boot/grub/grub.cfg 또는 /etc/grub.cfg 이다.

    장치명

    GRUB에서는 ROM-BIOS에서 사용하는 정보를 사용하며 IDE, SCSI 장치명의 구분 없이 시스템에 정착된 순서대로 hd0, hd1로 표기한다.

    이때 디스크 번호와 파티션 번호는 모두 0부터 시작하고, '(디스크 장치명, 파티션명)'의 형식으로 표기한다.

    구분 DISK Partition
    1 hd0 (hd0,0), (hd0,1), (hd0,2) ...
    2 hd1 (hd1,0), (hd1,1), (hd1,2) ...
    3 hd2 (hd2,0), (hd2,1), (hd2,2) ...

    GRUB 작업 모드

    ......


    런레벨(Run Level)

    리눅스는 부팅 시 런레벨에 따라 작동하는 서비스를 조정 가능하다.

    리눅스 부팅의 마지막 단계에서 모든 프로세스의 부모 프로세스인 init이 생성되는데, 프로세스 init은 런레벨을 참조한다.

     

    아래의 명령어를 이용해 현재 실행되는 런레벨을 확인할 수 있다.

    # runlevel

    종류

    Level Description
    0 시스템 종료
    1 단일 사용자 모드(root만 로그인 가능)
    네트워크, 서버, 파일 공유 서비스를 제공하지 않음
    root 패스워드 분실, 파일 시스템 점검 및 복구, 시스템 점검을 할 때 접근
    2 네트워크가 없는 다중 사용자 모드
    3 CUI(Character User Interface, 텍스트 모드)에 의한 다중 사용자 모드
    4 미사용
    5 GUI(Graphic User Interface, 그래픽 모드)에 의한 다중 사용자 모드
    6 시스템 재시작(재부팅)

    로그인 & 로그아웃

    리눅스는 X 윈도우상에서의 로그인/로그아웃과 콘솔상에서의 로그인/로그아웃이 있다.

    로그인

    ......

    로그아웃

    ......

    댓글