Linux & Unix2009. 11. 21. 13:32
본문스크랩 부트로더(GRUB)의 장점과 환경설정 및 부팅 과정 LINUX

2007/07/30 18:13

작성자: 베레(lsj403)

출처 hi.pe.kr 날으는물고기·´″°³о♡ | 물고기
원문 http://blog.naver.com/choibit/140036770502

GRUB 부트로더

 


GRUB - 리눅스의 전통적인 부트로더로 사용되어 왔던

               LILO의 단점보완


GRUB의 장점

    ① LOLO에 비해 설정 및 사용하기가 편리

    ② 부트 정보가 올바르지 않더라도 부팅시 이를 바로 수정하여 부팅

    ③ Chain-load를 이용하여 윈도우 계열 운영체제 외, 기타 운영체제 등과 멀티 부팅가능

    ④ 메뉴 인터페이스 환경을 지원하여 대화형 모드로 부트 정보를 설정

    ⑤ 네트워크상에서 부트로더의 설정을 수정

    ⑥ 파일시스템과 커널 실행 포맷을 인식하여 하드디스크 상에서 커널의 물리적 위치를

      기록하지 않고서도, 커널위치와 커널 이미지 파일명만 알고 있으면 부팅이 가능


● GRUB의 환경설정 - /etc/grub.conf

 

GRUB 패스워드 만들기

#grub   ← 입력하면

grub>   ← 이게나오고

grub>md5crypt   ←입력하면

password: *******   ← 원하는 GRUB 비밀 번호를 입력하면

Encrypted:  $1#$2@5$&*^543pa$#← 이런식으로 md5포맷의 암호화된 코드가 생긴다.

이 암호화된 코드를 복사하여 /etc/grub.conf 파일에 다음과 같이 추가해 준다.

 

 

 

리눅스의 부팅 과정은 다음과 같습니다.

 

1. Power On

2. ROM BIOS 에서 지정된 부트 드라이브로 부팅 시작

3. 부트 드라이브의 첫 번째 섹터인 부트 섹터 읽기. (MBR)

4. 부트로더(grub) 작동

5. 커널 이미지 적재

6. 루트 파일시스템 마운트

7. 시스템 초기화 프로그램 작동

8. 프롬프트

 

MBR : Master Boot Recod

 

커널 이미지 적재시에 관련 메세지들이 표시되는데 보기가 힘듭니다. 부팅이 완료된 후 다음의 명령어로 확인이 가능합니다.

- dmseg | more

- cat /var/log/dmesg

- cat /var/log/messages

 

init 프로세스가 실행되면 /etc/inittab 을 읽어 들이는데 여기서 살펴 볼 것은 Default Runlevel 입니다.

요즘 나오는 배포판의 대부분을 보면 GUI 환경에서 설치를 하고 GUI 환경으로 부팅이 됩니다.(Run Level 5)

이를 CUI 로 바꿔주기 위해서는 Run Level 3 으로 맞춰주시면 됩니다.

--> vi /etc/inittab

--> id:5:initdefault: 를 id:3:initdefault: 로 수정 후 저장

 

시스템 초기화(System initalization)

- 부팅 과정에서 Default RunLevel 을 읽은 후 시스템 초기화를 시작하는데 이때 init 은 /etc/rc.d/rc.sysinit 스크립트를 실행하고

inittab 에서 지정한 Run Level 에 따라서 실행 레벨과 일치하는 /etc/rc.d/rc 스크립트들이 동작합니다.

( 주로 /etc/rc.d/rc3.d 디렉토리의 스크립트를 많이 수정합니다. )

/etc/rc.d/rc 스크립트들을 보면 크게 K 와 S, 숫자, 프로그램명 으로 되어 있습니다. ex)S55sshd

K 는 Kill 을 의미하며 해당 프로세스를 죽이는 것을 의미하며, S 는 Start, 숫자는 실행 순서 입니다.

 

마지막으로 이 글을 작성한 목적인 GRUB 에 암호를 부여하는 것입니다.

아무리 소프트웨어 적으로 보안이 잘되어 있다하더라도 시스템에서 Single 부팅 후 암호를 재설정하면 말짱 꽝입니다.

( 하드웨어를 들고 도망치는 것은 어쩔 수가 없겠죠. 이또한 중요한 사항이라고 생각합니다. ㅡ.ㅡ;; )

GRUB 에 암호를 부여하는 방법은 다음과 같습니다.

 

1. 콘솔에서 grub 명령어를 실행

2. grub> 프롬프트에서 md5crypt 를 실행하여 해당 암호에 대한 md5 해쉬값 획득

3. 획든한 해쉬값을 /boot/grb/menu.1st( 또는 grub.conf) 파일 안에 다음과 같은 형태로 넣어주시면 됩니다.

- password --md5 [md5 해쉬값]

 

 

GRUB 에서의 single 모드 부팅

 

1. 서버가 리부팅되면서 X 화면이 뜬다.

2. X화면이 뜨면 이때 "e" 를 누른다.

3. 방향키를 이용해서 해당 커널로 이동한다.

4. 해당 커널로 이동후 다시 "e" 를 누른다.

5. 맨 마지막 라인으로 이동한다.

6. 맨 마지막 라인에서 한칸 뛰우고 "single" 를 입력한다.

  (예 : kernel /vmlinuz-2.4.6-1 ro root=/dev/hda2 single)

7. ENTER KEY 를 누른다.

8. "b" 를 누르면 리부팅되면서 single 모드로 부팅된다.

 

 

root의 패스워드 분실 후 다시 패스워드 설정

 

상황 :

2006년 1월 12일

rrlab4(Fedora Core 3<2.6.9-1.667> 설치) root의 패스워드를 잊어버렸다 -.-;;

순간 아찔했다.

패스워드를 어떻게 새로 설정해야 하는가?

 

 

키워드 :

Fedora, 페도라, grub, 그럽, password, 패스워드, 분실

 

 

해결 방법 :

 

1. single mode로 booting하기

 

시스템을 다시 시작한 후,

grub에서 자동으로 부팅으로 넘어가기 전에 아무키나 눌러

다음과 같이 부팅을 선택할 수 있는 창이 나오도록 한다.

Fedora Core (2.6.9-1.667)

 

이 때, p를 눌러 grub password를 입력한다.

(이것은 내가 fedora 설치시 grub password를 입력했기 때문에 이 작업을 해야 한다.)

 

그리고, 이 때 'a'를 누른다. 그러면 다음과 같은 문구가 나온다.

grub append> ro root=LABEL=/1 rhgb quiet

 

이 문구를 다음과 같이 수정한다.(단순히 1만 추가해준다)

grub append> ro root=LABEL=/1 rhgb quiet 1

 

그런 다음, Enter를 친다. 그러면 single mode로 부팅이 된다.

 

 

2. 패스워드 변경하기

 

single mode로 부팅하면 명령어를 입력할 수 있는 prompt가 뜬다.

이 때 다음과 같이 root의 패스워드를 입력한다.

 

sh-3.xx # passwd root

New password : ******

Retype new password : ******

passwd: all authentication ~~~~~

 

그 다음 다시 multiuser mode로 부팅한다.

sh-3.xx # exit

 

 

 

부트로더의 싱글모드 방지를 위한 패스워드 설정

 

부트로더에서 암호를 묻는다

 

[root@localhost etc]# grub-md5-crypt
Password:
Retype password:
$1$/i36S1$LqdCN5jajY8MCdqWaDxZ81
[root@localhost etc]#
 

암호생성

 

/etc/grub.conf에 입력

 

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda3
#          initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
password --md5 $1$/i36S1$LqdCN5jajY8MCdqWaDxZ81
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.11-1.1369_FC4)
        root (hd0,0)
        kernel /vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/ vga=788
        initrd /initrd-2.6.11-1.1369_FC4.img

 

------------------------------------------------------------------------------------

 

싱글모드로 들어가고자할 때

 

root의 암호를 묻는다

 

vi /etc/inittab

 

id:3:initdefault:

~~:S:wait:/sbin/sulogin --> 추가

 

 

 

--- inittab 설정 ---

 

프로세스 실행에 관한 설정 형식
id : runlevels : action : process

실행 레벨 값
0 : halt
1 : Single user mode
2 : Multiuser, wihout NFS
3 : Full multiuser mode
4 : unused
5 : X11 (X-window)
6 : reboot

기본 실행 레벨값 설정
id:3:initdefault:

로그인한 후 실행 레벨을 호출하고자 할 때
# telinit 5  (X-window 모드인 실행 레벨 5 호출)

루트 암호를 잃어버렸을 때 실행 레벨 1로 부팅한다.
실행 레벨 1은 시스템 초기화 과정이 생략된 채 쉘 프롬프트로 진입하므로
passwd 명령으로 열쇠글을 변경할 수 있다.

----------------------------------------------------------------------------------------

시스템 초기화
si::sysinit:/etc.rc.d/rc.sysinit
I0:0:wait:/etc/rc.d/rc 0
I1:0:wait:/etc/rc.d/rc 1
I2:0:wait:/etc/rc.d/rc 2
I3:0:wait:/etc/rc.d/rc 3
I4:0:wait:/etc/rc.d/rc 4
I5:0:wait:/etc/rc.d/rc 5
I6:0:wait:/etc/rc.d/rc 6
-> 실행 레벨과 일치하는 /etc/rc.d/rc 스크립트가 작동

----------------------------------------------------------------------------------------

시스템 재시작
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
-> 'shutdown -r now' 명령을 Ctrl + Alt + Del 키를 사용하여 대신할 수 있다.

----------------------------------------------------------------------------------------

UPS 전원 부족시에 자동으로 셧다운
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

UPS 전원이 충전되어 전원 공급에 문제가 없는 경우 실행한 셧다운 명령을 다음과 같이 취소
pr::powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"

----------------------------------------------------------------------------------------

가상 콘솔 접속을 위한 mingetty 설정
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

리눅스에서는 6개의 가상 콘솔을 제공한다.

가상 터미널 접속을 위한 프로토콜
mingetty, uugetty, agetty, mgetty

respawn
커널 메모리상에서 프로세스가 실행되었다가 죽으면 다시 실행되도록 해주는 명령

----------------------------------------------------------------------------------------

X-window 실행 레벨
x:5:respawn:/etc/X11/prefdm -nodaemon

----------------------------------------------------------------------------------------

/etc/inittab 파일을 수정하여 적용하고자 할 때에는 init q 명령을 실행한다.


'Linux & Unix' 카테고리의 다른 글

[스크랩] LPIC Level 1의 48가지 팁  (0) 2009.11.21
보편적인 Linux의 부팅과정  (0) 2009.11.21
JDK 1.6.0 설치하기  (0) 2009.11.05
RPM으로 베릴 (Beryl) 쉽게 설치 하기  (0) 2009.11.05
proftpd 서버 설치 및 설정  (0) 2009.11.05
Posted by Tiwaz