RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
'grub'에 해당되는 글 1
2009.07.27  [리눅스 사용하기]grub  

출처 : 대전국제IT교육센터 정성재 강사

 

1. GRUB 이란?
GRUB이란 GRand Unified Boot-loader의 약자로 lilo와 같은 부트 매니저 프로그램이다. 부트 프롬프
트에서 명령행형태로 명령을 내릴 수 있으며, ext2, ext3, ReiserFS, JFS, FAT, minix, FFS 파일시스
템을 지원한다. LILO에 비해 좀 더 나은 성능을 가지고 있으며 환경설정파일을 변경하였다 하더라도
LILO처럼 명령을 수행할 필요없이 즉시 반영된다. 하드디스크를 분할하여 앞부분에 윈도우를 8GB
이상으로 할당하여 설치하고 그 뒤의 파티션에 리눅스를 설치하고 LILO를 사용하면 리눅스로 부팅이
안되는 경우가 있는데 lilo대신에 grub을 사용하면 어느 정도는 해결할 수 있다.

2. GRUB 의 기본구성
(1) GRUB 부트 화면
   기본적으로 GRUB 부트 화면은 그래픽하게 메뉴 엔트리형식으로 제공되며, 상/하 방향키로 선택한
  후 [RETURN]키를 입력하면 부팅이 되도록 되어 있다. 또한 GRUB은 여러 형태의 모드를 제공한다.
(2) GRUB의 모드
   1) 개요: GRUB의 부트 화면에서 [a], [c], [e] 키를 누르면 각각에 해당하는 모드로 진입한다.
   2) 모드
     [a] : grub.conf에서 불러 들이는 항목중에 kernel과 관련된 부분의 파라미터를 추가할 수 있게
          해준다. 예를 들면 kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/ 라고 있을 때 [a]키
          를 누르면 커널이미지 뒷부분, 즉 ro root=LABEL=/ 이후 부분을 편집할 수 있다. 싱글모드
          로 들어갈 때에 이 키를 누르고 맨 뒤에 single이라고 쳐주면 된다.
     [e] : grup.conf에 리스트로 올라와 있는 항목을 직접 편집할 수 있도록 해준다. 간혹 싱글모드
          로 접근할 때 [a]키를 눌러 이미지 뒷부분에 single이라고 적으면 커널패닉이 떨어지는
          경우가 있는데 이 경우에는 [e]를 눌러 vmlinuz-2.4.18-14 라는 커널이미지 바로 뒤에
          single 이라고 삽입하면 된다.
     [c] : 상호대화식으로 직접 입력할 수 있는 모드이다. grub.conf의 설정이 잘못되어 있는 경우
          직접 입력하여 부팅할 수 있다.
(3) 메뉴 편집 모드(e모드)
   1) 설명: GRUB은 기본 부팅 외에 엔트리를 편집할 수 있는 기능을 제공한다. 엔트리에서 'e'키를
           입력하면 해당 엔트리의 메뉴를 편집할 수 있다.
   2) 편집모드에서 지원하는 키
     e : 해당 라인을 편집한다.
     d : 해당 라인을 삭제한다.
     o : 명령 라인을 추가한다.
     b : 부팅을 시작한다.
   3) 사용예: 기본 runlevel 3인 상태에서 runlevel 5로 부팅하기
    ㄱ. GRUB 부트화면에서 해당 리눅스 메뉴를 선택하고 'e'키를 선택한다.
    ㄴ. kernel 이라는 항목이 들어간 라인으로 이동하고 다시 'e'키를 선택한다.
    ㄷ. 이 라인의 맨 뒤에 5라는 값을 추가하고 [enter]키를 누른다.
    ㄹ. 'b'키를 눌러 부팅을 시작한다.
   4) 참고
     메뉴를 편집한다고 해서 grub.conf의 내용이 바뀌는 것은 아니고 현재 부팅시에만 일시적으로
    적용받는 것이고, 또한 편집이 잘못되었을 경우에 [ESC]키를 누르면 원래값으로 초기화된다.
(3) GRUB 명령행(c모드)
   GRUB의 명령행은 상호대화식으로 진행되고 사용방법은 Bash Shell과 유사하여 [TAB]키를 통한 명
  령행 자동완성기능을 사용할 수 있다. 또한 [ESC]키를 사용하여 취소할 수도 있다.

3. GRUB 설정
(1) 설명: grub의 주 환경설정 파일은 grub.conf이다. 다른 환경설정파일들은 /etc디렉토리에 위치
         하지만 grub의 경로는 /boot/grub/grub.conf이다.
(2) 기본 구성예
   [root@www root]# cat /boot/grub/grub.conf
   # grub.conf generated by anaconda
   #
   # Note that you do not have to rerun grub after making changes to this file
   # NOTICE:  You do not have a /boot partition.  This means that
   #          all kernel and initrd paths are relative to /, eg.
   #          root (hd0,3)
   #          kernel /boot/vmlinuz-version ro root=/dev/hda4
   #          initrd /boot/initrd-version.img
   #boot=/dev/hda
   default=0                   
   timeout=10
   splashimage=(hd0,3)/boot/grub/splash.xpm.gz
   title Red Hat Linux (2.4.18-14)
           root (hd0,3)
           kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/
           initrd /boot/initrd-2.4.18-14.img
   title DOS
           rootnoverify (hd0,0)
           chainloader +1
(3) 항목설명
   1) default=0
       => 기본값으로 부팅되도록 설정하는 부분이다. grub 선택화면에서 특별히 선택하지 않으면
         여기에 설정되어진 값에 해당하는 운영체제를 로딩한다. 현재 설정인 0값은 아래 항목중
         에서 제일 먼저 설정되어 있는 운영체제를 말한다.
   2) timeout=10
       => grub 부트화면에서의 대기시간이다. 단위는 초이다. 현재 설정은 10초간 선택이 없으면
         default에 설정된 값으로 부팅된다.
   3) splashimage=(hd0,3)/boot/grub/splash.xpm.gz
       => 부트 화면의 배경이미지를 지정하는 부분이다. xpm형태의 그림이미지를 압축한 xpm.gz파일
         을 사용한다. (hd0,3)의 뜻은 /dev/hda4라는 뜻이다.
         (참고) 리눅스 디바이스 와 grub 디바이스와의 관계
               1. 기본관계
                 /dev/fd0 : (fd0)
                 /dev/hda : (hd0)   => SCSI 하드디스크인 경우에 첫번째 물리적인 디스크도 이값
                                      에 해당한다.
                 /dev/hdb : (hd1)
               2. 사용예
                 /dev/hda1 : (hd0,0)
                 /dev/hda4 : (hd0,3)
    4) title Red Hat Linux (2.4.18-14)
              root (hd0,3)
              kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/
              initrd /boot/initrd-2.4.18-14.img
      => 엔트리를 나타낸다. 위의 예는 리눅스의 전형적인 기본구조이다.
        (기본구조)
          title 부트_엔트리_설명
                 root (하드디스크디바이스명,부트파티션명)
                 kernel /커널이미지경로 ro root=루트디바이스명
                 initrd /초기화에_필요한_이미지경로        // 초기화 Ram Disk Loader이다.
   5) title DOS
              rootnoverify (hd0,0)
              chainloader +1
      => 엔트리를 나타낸다. 윈도우계열의 전형적인 기본구조이다.
        (기본구조)
          title 부트_엔트리_설명
                rootnoverify (윈도우가_설치되어_있는_하드디스크_디바이스명,파티션명)
                chainloader +1    // 윈도우 운영체제는 chains-load에 의해서 부팅되는데 이것에
                                  //관한 설정이다.

4. GRUB 명령행을 이용하여 부팅하기
(1) 설명: 부팅 메뉴에서 [c]키를 누르면 'grub>'이라는 프롬프트가 나타나면서 명령을 입력할 수
          있다. 위의 기본 구성예를 바탕으로 부팅해본다.
(2) 사용예
   1) Linux로 부팅하기
     grub> root (hd0,3)
      Filesystem type is ext2fs, partition type 0x83
     grub> kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/
        [Linux-bzImage, setup=0x1400, size=0x11154a]
     grub> initrd /boot/initrd-2.4.18-14.img
        [Linux-initrd @ 0xffcb000, 0x20096 bytes]
     grub> boot
   2) 윈도우로 부팅하기
     grub> rootnoverify (hd0,0)

     grub> chainloader +1

     grub> boot

5. GRUB 단일사용자모드로 부팅하기
(1) 설명: 루트패스워드를 변경하거나 기타 시스템작업을 하려면 단일 사용자 모드로 부팅해야 하는
          경우가 있다. GRUB에서 단일 사용자모드로 들어가려면 별도의 작업이 필요하다.
(2) 방법
   1) GRUB 부트메뉴에서 리눅스 커널 엔트리를 선택한다.
   2) 'e' 를 입력하여 엔트리를 수정한다.
   3) 'e'를 입력하면 엔트리의 전체 내용을 보인다. 방향키로 아래의 내용이 나오는 부분으로 이동
     한다.
       kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/
   4) 'e' 다시 입력하면 해당 줄의 수정이 가능하게 되는데, 줄의 끝에 'single'이라는 값을 추가로
     입력한 뒤에 엔터키를 누른다.
       kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/ single
   5) 'b'를 입력하면 single 모드로 부팅이 된다.

6. GRUB 패스워드 설정하기
(1) 설명: 단일 사용자모드로 누구나 들어갈 수 있으면 루트패스워드를 관리자도 모르는 상태에서
          변경이 가능하다. GRUB 메뉴에 패스워드를 걸어 단일사용자모드로 접근시에 패스워드를'
          입력하도록 설정할 수 있다.
(2) 설정
   1) 쉘프롬프트에서 grub 이라고 입력한다.
   2) 다음과 같이 grub 프롬프트가 나타난다.
    
         GRUB  version 0.92  (640K lower / 3072K upper memory)

      [ Minimal BASH-like line editing is supported.  For the first word, TAB
        lists possible command completions.  Anywhere else TAB lists the possible
        completions of a device/filename. ]

     grub>
   3) md5crypt 이라고 입력하고 패스워드를 입력한다.
     grub> md5crypt

     Password: ********
     Encrypted: $1$t.z8h/$NXKVZ2A9ovCk1LLRNPCAI0
       => 패스워드를 입력하면 암호화된 패스워드값이 생성된다.
   4) 생성된 패스워드를 /boot/grub/grub.conf 파일에 아래의 내용을 추가한다.
     password --md5 $1$t.z8h/$NXKVZ2A9ovCk1LLRNPCAI0
(3) 사용예: grub에 패스워드 설정시 그 위치가 중요하다.
   1) 단일 사용자모드와 같이 편집을 통한 접근만 막을 경우
     default=0
     timeout=10
     splashimage=(hd0,1)/boot/grub/splash.xpm.gz
     password --md5 $1$/gphl/$oBCc00qqTPHqIDQpimlXC0           // 이부분에 삽입한다.
     title Red Hat Linux (2.4.18-14)
             root (hd0,1)
             kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/
             initrd /boot/initrd-2.4.18-14.img
   2) 부팅시 무조건 패스워드를 입력하고 부팅하려는 경우
     default=0
     timeout=10
     splashimage=(hd0,1)/boot/grub/splash.xpm.gz
     title Red Hat Linux (2.4.18-14)
             root (hd0,1)
             kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/
             initrd /boot/initrd-2.4.18-14.img
     password --md5 $1$/gphl/$oBCc00qqTPHqIDQpimlXC0           // 이부분에 삽입한다.
(4) 참고: grub 패스워드를 잃어버렸을 경우
   1) 설치 CD-ROM 을 이용한다.
    ㄱ. 설치한 리눅스 1번 CD-ROM으로 부팅한다.
    ㄴ. 업그레이드모드로 들어가서 LILO같은 부트로더를 다시 설치한다.
   2) 부팅디스크를 이용한다.
    ㄱ. 설치시에 부팅디스크를 만들었을 경우 부팅디스크로 부팅한다.
    ㄴ. 'boot:'라는 화면에서
        vmlinuz root=/dev/hda1           // 이 파티션값은 설치한 곳에 따라 달라진다.
        로 부팅한다.
    ㄷ. /boot/grub/grub.conf를 편집기로 열어 패스워드설정한 부분을 삭제한다.

7. GRUB 기타내용
(1) 전체설치한 경우 lilo에서 grub으로 부트 로더 바꾸기
   1) lilo -u
       => lilo 를 삭제한다. 경우에 따라 lilo -U
   2) grub-install /dev/hda
       => grub을 부트 로더로 설치한다.
(2) grub 제거하기
   리눅스상에서 grub을 제거하는 방법을 없다. grub을 제거하려면 lilo와 같은 다른 부팅 로더를 설
  치하거나 도스로 부팅하여 fdisk /mbr을 실행시키면 된다.

Trackback
Reply
우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
OpenSource (1)
Tips! (1)
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31