728x90
반응형
grub은 "Grand Unified Boot loader"의 약어로서,
윈도우 운영체제와 리눅스 운영체제등에서 모두 사용 할 수 있는 멀티부트
로더이다. 물론 예전에 사용하던 Lilo "Linux Loader"라는 리눅스에서만 한정되어 사용하던 부트로더도 있었다.
grub은 다른 부트로더와 마찬가지로 하드디스크의 첫번째 부트섹터인 MBR(Msater Boot Record)라는 곳에 저장 된다.
grub은 다른 부트로더와 마찬가지로 하드디스크의 첫번째 부트섹터인 MBR(Msater Boot Record)라는 곳에 저장 된다.
부팅과정에서 grub의 역할
1) 전원을 킴과 동시에 ROM-BIOS는 post(하드웨어 점검)을 실행 하고, MBR영역에서 부트로더를 로딩한다.
2) grub은 부팅메뉴를 선택 받고, 선택된 커널을 로딩한다. 그리고 스와퍼(Swapper) 프로세스를 실행한다.
3) 실행된 스와퍼는 앞단계에서 인식했던 각 장치들의 드라이브를 초기화 시킨 다음, init프로세스를 실행 후 스와퍼는 종료된다.
(스와퍼:PID 0) 종료 후 (init : PID 1) 실행됨. 모든 프로세스의 부모프로세스로 init 프로세스가 됨
4) init는 /etc/inittab 이라는 설정파일을 읽어 실행 한다. (설정된 (0부터 6까지) 부팅 레벨을 선택)
5) /etc/rc.d/rc.sysinit 스크립트파일 실행 (부팅레벨에 상관없이 꼭 한번씩 실행되는 파일)
6) 선택된 부팅 레벨(N)에 따라서 /etc/rc.d/rcN.d/디렉토리의 스크립트를 순차적으로 실행한다. (부팅시 자동 실행하는 데몬)
7) 시스템매직키 설정, 시스템 전원공급 설정, 가상터미널과 로그인창 실행
3) 실행된 스와퍼는 앞단계에서 인식했던 각 장치들의 드라이브를 초기화 시킨 다음, init프로세스를 실행 후 스와퍼는 종료된다.
(스와퍼:PID 0) 종료 후 (init : PID 1) 실행됨. 모든 프로세스의 부모프로세스로 init 프로세스가 됨
4) init는 /etc/inittab 이라는 설정파일을 읽어 실행 한다. (설정된 (0부터 6까지) 부팅 레벨을 선택)
5) /etc/rc.d/rc.sysinit 스크립트파일 실행 (부팅레벨에 상관없이 꼭 한번씩 실행되는 파일)
6) 선택된 부팅 레벨(N)에 따라서 /etc/rc.d/rcN.d/디렉토리의 스크립트를 순차적으로 실행한다. (부팅시 자동 실행하는 데몬)
7) 시스템매직키 설정, 시스템 전원공급 설정, 가상터미널과 로그인창 실행
grub의 제거 방법
1) grub 패키지 제거
# grub --version -> 설치되어있는 grub 버전 확인
# rpm -qa | grep grub -> grub 패키지 설치 여부 확인
# rpm -e --nodeps grub-$VERSION -> -e(삭제옵션) --nodeps(의존성무시) 패키지명
# grub --version -> grub 패키지 삭제를 확인
2) MBR영역의 grub 제거
리눅스에서 MBR영역의 grub 제거하는 명령어는 없다.
다른 운영체제의 MBR을 덮어 쓰는 방법,
윈도우 xp 시디를 넣고 복구 콘솔로 부팅한 다음 fixmbr 명령어를 이용하는 방법,
MBR을 지우는 툴을 이용하는 방법이 있다.
grub의 설치 방법
1) grub 패키지 설치
# rpm -qa | grep grub -> 설치가 안되어있어서 결과 출력 X
# cd /media/Packages/
# rpm -Uvh grub-$VERSION.rpm
%설치 화면 출력
# grub --version
# rpm -qa | grep grub
2) grub을 MBR에 설치 (grub 패키지가 설치되어야 실행가능 하다)
# grub-install /dev/sda -> 리눅스 운영체제 하드의 MBR영역에 grub 설치
grub 강제 삭제 후 부팅이 되지 않을 때 응급복구 모드로 설치 방법
CD를 넣고 부팅을 하는데 옵션으로 linux rescue를 사용하면 된다.
/tftpboot/pxelinux.cfg/default 파일의 내용을 수정해서 네트워크로 rescue 모드 진입을 해도 상관없다.
"text rescue"
진입하게 되면
grub 패키지를 설치를 하고
# rpm -Uvh --nodeps grub*.rpm
MBR에 grub를 설치해준다.
# grub
> root (hd0,0) -> /boot 파티션 지정
> setup (hd0) -> MBR에 grub 설치
> reboot -> grub를 빠져나감
재부팅을 한다.
grub 환경설정 방법 ( /boot/grub/grub.conf 편집)
1) default 항목
grub 부팅 화면에서 메뉴를 선택하지 않았을 때 선택될 메뉴번호 ( 0부터 시작 )
2) timeout 항목
부팅 메뉴를 선택하는데 있어서 대기시간을 설정한다( 초 단위 )
3) splashimage 항목
부팅시 배경이미지를 설정하는 항목인데 경로는 (hd0,0)/grub/splash.xpm.gz 과 같이 설정한다.
부팅시 배경이미지를 설정하는 항목인데 경로는 (hd0,0)/grub/splash.xpm.gz 과 같이 설정한다.
4) password 항목
부팅시 암호를 지정하는 항목인데 title위에 삽입하면 grub모드로 들어가기위한 암호를 설정하게 되고
암호인증후에 부팅을 하려면 한개의 메뉴 설정이 끝난 후에 삽입해준다.
password --md5 $1$MU9Q6XQ7$gxrt8d9u5d19Re1MYqDZ50
password --sha-512 $6$9b8gYCWsp83wwyGr$lDlcZgVPL7uPAFvOYCbKQAIpU.VHh.4Xedaof3iYNnjFA4W3v0u6ML1DLmWAvlEMWmKLzMrzFRJ8DEyaUlhF30
"해시는 grub-crypt 명령어로 생성한다"
5) title 항목
grub 부팅 화면의 메뉴에 나타나는 제목이다. 타이틀 명은 관리자의 임의대로 지정이 가능하다.
6) root 항목
해당 항목의 루트디바이스를 설정하는 항목이다. /boot 파티션이 이 역활을 한다면 /boot 파티션을 지정하면 된다.
root (하드디스크장치명, 부트파티션명) 이다.
곧 첫번째 하드디스크의 첫번째 파티션을 의미한다. ex) root (hd0,0)
7) kernel 항목
해당 메뉴로 부팅할 때 커널 이미지 파일의 경로를 지정 한 것이다.
이미지명은 vmlinuz-2.4.20-8 이라는 뜻이고, ro root=LABEL=/ 은 부팅 레벨 설정을 뜻한다.
해당 메뉴로 부팅할 때 커널 이미지 파일의 경로를 지정 한 것이다.
이미지명은 vmlinuz-2.4.20-8 이라는 뜻이고, ro root=LABEL=/ 은 부팅 레벨 설정을 뜻한다.
8) initrd 항목
스카시하드나 s-ata하드디스크를 사용해야 하는 경우에 반드시 지정해야 하는 항목이다.
해당메뉴로 부팅 할 때에 사용 할 initrd 이미지를 지정해 주는 것이다.
스카시 디스크를 부팅 디스크로 사용 할 경우에 initrd 항목이 설정 되어 있지 않으면
스카시하드나 s-ata하드디스크를 사용해야 하는 경우에 반드시 지정해야 하는 항목이다.
해당메뉴로 부팅 할 때에 사용 할 initrd 이미지를 지정해 주는 것이다.
스카시 디스크를 부팅 디스크로 사용 할 경우에 initrd 항목이 설정 되어 있지 않으면
커널 패닉에 빠질 수 도 있으니 주의 한다.
728x90
반응형