ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Linux Boot Loader Grub 을 알아봅시다.
    IT /Linux 2015. 2. 12. 21:04
    728x90



     Boot Loader

     

    부트로더는 리눅스가 부팅되기까지 전 과정을 진행하는 부팅 프로그램입니다.

    ROM-BIOS에서 POST기능을 수행하고 가장 먼저 인식된 부팅매체에서 Boot Loader를 읽어 들이게 됩니다.


     

     

    리눅스 부트로더에는 LILO GRUB 가 있습니다.

    LILO (LInux LOader) :: 리눅스 운영체제에 한정되어서 사용되면 부트로더입니다,

     

    우리는 GRUB을 알아보겠습니다.

     

    GRUB ( GRand Unified Bootloader) :: 리눅스에 한정되지 않고 다른 운영체제에서도 사용가능하여 멀티부트로더 라고 합니다.

     

     

    먼저 GRUB LILO 모두 System 전원이 공급 되면 가장먼저 ROM-BIOS에서 시스템 제어권을 가지고 장착된 하드웨어에대한 기본적인 점검과 인식을 하게됩니다.

    위 과정을 거친 후에 ROM-BIOS는 하드디스크의 첫 번째 부트섹트인 MBR( Master Boot Record )에 있는 Boot Loader 에게 제어권을 넘기게 됩니다.

     

     

    이미 설치가 되어 있겟지만 설치가 되어있는지 확인 하는 습관은 나쁘지 않은것 같습니다.



     

    # rpm -qa | grep grub

    설치확인은 다른 RPM들과 마찬가지로 위 명령을 통해서 할수 있습니다.




     

    #grub --version

    위 명령을 통해서 version 정보를 확인할수 있습니다.

     

    뭔가 확인하는 듯 한 멋진 사람이 되어보세요 하하

     

     

     GRUB의 장치명

    grub 에서의 디스크 장치명과 실제 부팅된 다음 리눅스에서 사용되는 디스크명과는 약간의 차이가 있습니다.

    grub 에서는 ROM-BIOS에서 사용하는 정보를 그대로 사용하며 IDE, SCSI 의 장치명을 별도로 구분 짓지 않습니다..

     

    우선 리눅스는 어떻게 구분하는지 확인해봅시다.

     

    리눅스에서의 디스크와 파티션 구분

    구분

    IDE

    SCSI

    1

    /dev/hda

    /dev/hda1, /dev/hda2 ..

    /dev/sda

    /dev/sda1, /dev/sda2 ..

    2

    /dev/hab

    /dev/hdb1, /dev/hdb2 ..

    /dev/sdb

    /dev/sdb1, /dev/sdb2 ..

    3

    /dev/hdc

    /dev/hdc1, /dev/hdc2 ..

    /dev/sdc

    /dev/sdc1, /dev/sdc2 ..

     

    위처럼 IDE의 첫번째 디스크부터 hda, hdb 순으로 이름이 정해집니다.

    IDE 의 파티션은 hda1, hda2 식으로 첫 번째, 두 번째 파티션을 나타냅니다.

    마찬가지로 SCSI 도 똑같이 hda sda로 표현된것 말고는 다른게 없습니다.

     

     

    자 그럼 GRUB에서는 어떻게 나타낼까요!!

    먼저 위에서 IDESCSI 를 구분짓지 않는다고 했습니다.

     

    GRUB에서의 디스크와 파티션 구분

    구분

    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에서는 ROM-BIOS 의 정보를 그대로 사용합니다.

    위표와 같이 IDESCSI의 구분없이 시스템에 장착된 순서대로 hd0,hd1,... 이렇게 표기합니다.

    디스크 번호와 파티션번호 모두 0부터 시작합니다.

    표와 같이 (디스크장치명,파티션명) 형식으로 표기합니다.

     

     

     





    GRUB Install

     

    *********** 추가 해야 하는데..*************

     

     

     

    GRUB 명령을 사용하는 환경

     

     

    GRUB은 초기 부팅과정에서 ‘c’,‘e’ 키를 입력해서 진입하는 방법과

    부팅이 완료된 후에 #grub 명령을 통해서 진입하는 방법이 있습니다.

     

    두가지 grub 명령 모드로 진입한것은 맞지만 전혀 다른 환경이라는걸 알아둡시다!

     

     GRUB 명령 모드 ( 초기 화면에서 ‘c’)


    Command-Line

    grub 명령모드입니다.

    * 우리가 사용하던 것 처럼 Tab 자동완성이 됩니다.

    * bash 에서 사용하던 명령어와 비슷한 명령을 사용 할수 있습니다.

    * cat명령을 통해서 파일 내용을 확인가능합니다.

    하지만!! 작업하기전에 root (hd0,0) 같은 명령어로 device 를 지정해줘야 파일 확인이 가능합니다.

     

     

     

     GRUB 편집 모드 ( 초기 화면에서 ‘e’)


    Booting menu edit

    초기화면에서 e 입력시 부팅메뉴 편집 모드로 진입합니다.

     

    리눅스 비밀번호를 잃어 버렸을 경우 이 편집모드로 진입해서 부팅되는 커널을 편집모드로 부팅하게

    편집하고 부팅을 하게되면 싱글모드로 부팅이 됩니다.

    그때 패스워드를 변경하고 그럽니다. 그렇습니다. 그래요.

     

     

    편집모드에서 사용할 수 있는 키와 기능을 간단하게 알아봅시다!

    * , : 보다시피 위아래 이동입니다.

    * b : 선택된 boot menu로 시스템을 부팅합니다.

    * e : 선택된 boot menu 의 명령어를 편집합니다.

    * c : 초기화면에서 c를 눌러 진입하는것과 같이 명령모드로 진입합니다.

    * o : 새로운 행을 커서 다음 행에 삽입합니다.

    * O : 새로운 행을 커서 앞 행에 삽입합니다.

    * d : 선택된 행을 삭제 합니다.

    * ESC : GRUB 이전 메뉴로 이동합니다.

     

     

     

     

     GRUB 명령어

    위에서 GRUB 명령 모드를 알아보았습니다. 하지만 명령어를 모르면 사용할수 없겟죠?

    셸상태에서 사용하던 명령과 비슷한 명령도 많지만 grub 에서는 grub 명령모드에서만 사용하는 전용 명령어 들이 있습니다.

    BOOT

    /dev/sda1

    (hd0,0)

    /boot 디렉토리

    ROOT(/)

    /dev/sda3

    (hd0,2)

    / 최상위 디렉토리

     

     



     

     

     

     

     GRUB 에서 싱글모드로 부팅해봅시다.

    자 부팅이 안된다.  암호를 잃어버렸다.

    말그대로 시스템의 root 암호를 잃어버리거나, 정상적인 부팅이 되지 않아 불가피하게 싱글모드로 부팅을 해야 하는 일이 생길수가 있습니다.

     

    LILO에서는 부팅 초기 화면 LILO: 단계에서 linux single 이란 명령을 통해서 간단하게 싱글모드로 부팅이 가능합니다.

     

    하지만 GRUB은 우리가 배운걸 활용합니다


    1. grub 초기화면에서 e를 눌러서 메뉴편집모드로 진입합니다.

    2. kernel /vmlinuz.x.x.x-x.x ro root=LABEL=/ 을 위아래로 이동해서 선택하고 다시

    ‘e‘ 키를 눌러 명령어 편집모드로 진입합니다.

    3. 편집되는 행 끝부분에 1 또는 single 이라는 옵션을 추가하고 enter!!

    4. 우리가 편집한 항목을 선택하고 ‘b’ 를 눌러 부팅을 시작합니다.

    5. 싱글모드로 부팅이 되는데 이제 우리가 해결할 문제들을 해결해줍니다!!

     

     

     GRUB 에서 커널을 지정해서 부팅해봅시다.

    grub 환경에서 시스템에 설치되어있는 여러개의 커널중 원하는 커널을 선택해서 부팅을 할수 있습니다.

    .. 미리 부팅할 수 있는 여러 개의 커널을 만들어놓고 사용하던 커널에 문제가 생길경우를 대비해 예비커널을 만들어 놓는겁니다.

     

    명령어를 사용할때가 됬습니다.

    * root 명령으로 boot device 그리고 boot partition 을 지정합니다.

    * kernel 명령어로 부팅에 사용할 커널을 지정합니다.

    * initrd 명령으로 initrd 이미지를 지정합니다.

    * boot 명령으로 부팅을 합니다.

     

     

     GRUB 설정파일을 알아봅시다

     




     

     

     

     

     

     GRUB 암호를 지정해봅시다

    grub 으로 진입할경우 보안을 위해서 passwd 를 설정합니다.

     

    # grub

    grub> md5crypt

    passwd :

    encrypted 솰라솰라

    grub> quit

    # vi /etc/grub.conf

    hidden menu 또는 splshimage 밑에

    passwd --md5 솰라솰라

    hidden menu 는 앞에 #을 붙여 주석처리

    :wq 로 저장

     

    .. 너무 대충 써놨는지는 모르겠지만 간단합니다.

     

    * 먼저 grub 모드로 진입을 합니다.

    * md5crypt 명령을 써주면 password 를 입력할 수 있습니다.

    * password 를 입력하면 바로 밑에 encrypt 라며 md5로 표기된 암호가 출력됩니다.

    * 암호를 복사를 한뒤

    * quit 명령을 통해서 grub 상태에서 빠져나옵니다.

    * grub 설정파일인 /etc/grub.conf 파일을 vi 로 열어 수정해줄겁니다. (또는 /boot/grub/grub.conf)

    * 활성화되어있는 hidden menu #을 추가해서 주석처리를 해주세요

    * hidden menu 또는 splshimage 밑부분에

    * password - - md5 복사한암호

    * 위 문장을 추가하고 :wq 저장하고 vi를 빠져나옵니다.

     

    재부팅을 한다음 초기화면에서 ‘e’ 키를 눌러 grub 편집모드로 진입하려면 암호가 필요합니다.

    이제 p를 눌러 암호를 입력하고 진입할수 있습니다.





    꽤 오래전에 이곳저곳알아보며 썻던 자료이기에...  

    누군가에게는 도움이 되지 않을까 싶어 올립니다. 

    지적해주시면 바로바로 수정하겠습니다.





Designed by Tistory.