마스터포유(Master4U)
Monday, 17 of January
 

제목: GRUB 복구
분류: 리눅스
이름: 관리자 * http://www.master4u.net


등록일: 2010-06-20 15:32
조회수: 5157
 
Submitted by sDH8988L on 화, 2003/07/08 - 9:33pm. 강좌
안녕하십니까???

이거 간만에 글을 남기게 되네요...

이번 글은 GRUB 복구에 관한 것입니다...

보통 일반 LINUX USER들은 따로 LINUX MACHINE을 가지고 있는 일은 드물죠???

주머니 사정상 Windows랑 공생을 많이 하게 되는데, 바로 이 Windows는 새로 깔 일이 많다 이겁니다... 새로 까는 거야 문제가 없는데, MBR을 덮어 쓰는 것이 LINUX USER들에게는 커다란 문제지요...

예전에 LILO를 쓰던 시절에는 LINUX BOOTING DISKETTE이나 INSTALLATION CD를 이용해서 BOOTING한 이후에 /sbin/lilo만 실행해 주면 쉽게 해결될 수 있는 문제였습니다...

그러나 요즘은 대부분 GRUB를 쓰고 계시죠...

이 글은 WINDOWS를 다시 깔므로 해서 날려버린 MBR에 GRUB를 복구하는 방법에 대해서 설명해 드리고자 합니다...

일단, 기본 가정은 기존 LINUX SYSTEM을 날려버리지 않았다는 것과 거기에는 기존에 사용하던 GRUB의 CONFIGURATION FILE이 남아 있다는 것입니다...

만일, 이런 것도 없다면, GRUB CONFIG FILE을 다시 만들거나 LINUX를 다시 깔아야 겠지요???

이런, 서두가 너무 길었네요... 그럼 본격적으로 시작합니다...

끝까지 보시면 아시겠지만, LILO만큼이나 쉽습니다...

1) LINUX BOOTING

> linux rescue

REDHAT INSTALLATION CD #1을 이용하면 Rescue Mode로
쉽게 Booting할 수 있습니다.

그래서 BOOTING DISK의 효용성이 많이 떨어졌지요...

2) 화면에서 시키는 대로 한다...

특히, 중간에 'Continue', 'Read-Only', 'Skip'이 나오는 부분이 있는데, 이 과정은 기존에 있던 Linux Partition을 검색하는 부분이므로 반드시 'Continue'를 해야 합니다.

그렇게 하면, Linux가 있는 Partition이 /mnt/sysimage로 Mount될 것입니다.
위에서 화면에 시키는 대로 모두하고 나면, 프롬프트가 하나 뜹니다.
그러나 이것은 원래 내가 가지고 있던 Linux System을 나타내지 않고 REDHAT INSTALLATION CD에 포함되어 있는 Linux System을 나타내므로 혼동하지 말아야 합니다.

3) CHANGE ROOT

프롬프트에서 다음과 같이 입력합니다...

> chroot /mnt/sysimage

이와 같이 하면 위 2) 과정에서 MOUNT한 기존의 LINUX SYSTEM으로 프롬프트를 바꾸게 됩니다.. 이제 ls -la와 같은 명령을 실행해보면 예전에 내가 가지고 있던 System이라는 것을 확인할 수 있을 겁니다.

4) GRUB 확인

이제 본격적인 GRUB 복구 작업에 들어가겠습니다.

일단, 복구를 하기 전에 기존의 grub가 제대로 있는 지 확인해 두는 것도 잊지 말아야 하겠죠???

> cd /boot/grub

여기서 grub.conf와 그것의 Link인 menu.lst를 확인합니다.

아마 예전에 Multi-Booting을 하던 대로 남아 있을 겁니다...

그렇다면, 이제 본격적인 작업에 들어갈 수 있습니다...

만일, WINDOWS를 새로 까는 과정에서 PARTITION 정보가 바뀌었다면, 바뀐 것을 반영해야 합니다.
(이 부분에 대해서는 GRUB에 관련된 다른 문서를 참고하십시요...)

5) GRUB 복구

> /sbin/grub

위의 것을 실행하면 GRUB PROMPT가 뜹니다...

여기서 아래와 같이 차례로 입력합니다.

> root (hd0,5)

이 문장은 첫번째, HDD의 5번째 Partition에 LINUX SYSTEM이 있음을 나타내므로 개인들의 SETTING에 따라 다른 값을 입력해야 합니다. 만일, 두번째 HDD의 첫번째 Partition이라면 (hd1,1)과 같이 입력하면 되겠죠.

정 몇번째 Partition인 지 모른다면, (hd0,1)부터, 숫자를 늘려가면서 extf2 File system이라는 출력이 나올때까지 계속 해봐도 됩니다. -_-;;;

> install /boot/grub/stage1 d (hd0) /boot/grub/stage2 p /boot/grub/menu.lst

이렇게 하면, GRUB를 MBR에 설치하고 기존에 있던 GRUB 정보를 복구할 수 있을 겁니다.

이렇게 하고 GRUB를 나가면 됩니다.

> quit

6) REBOOT

이제 Rebooting을 하게 되면, 기존에 가지고 있던 GRUB가 나타남을 알 수 있을 것이다...

이렇게 하면 WINDOWS를 다시 깔아서 생기는 LINUX BOOTING문제를 해결할 수 있습니다...

뭐... 딱히 WINDOWS 때문에 생긴 문제가 아니더라도 LINUX로 BOOTING을 하지 못할 경우에 사용해도 되겠죠... 다만, 예전에 쓰던 GRUB CONFIG FILE이 남아 있다는 것을 전제로 하지만요...

그렇지 않다면, GRUB CONFIG FILE을 만들어야 하겠죠???

------------------------------------------------------
더 쉬운 방법이...
Submitted by urmajest on 수, 2003/07/09 - 12:16am.
Install CD를 넣고, BOOT : 가 뜨면

vmlinuz root=/dev/hda? (파티션 넘버는 아시겠죠 -_-)

로 부팅을 하고,

grub-install /dev/hda

이렇게 해주면 되었던 것 같네요..
------------------------------------------------------------------

조금 더 쉬운 방법이 있는데, 리눅스 root 파티션 이름은 알고 있다고 가정합니다. (모르고 있다고 해도 ext2 fs가 나올때까지 root명령을 하나씩 해보면 되지 않을까 하는 -0-)

먼저, ftp://alpha.gnu.org/gnu/grub/grub-0.93-i386-pc.ext2fs를 받아서 floppy에 구워놓습니다. (rawrite 이용)

복구를 할 때는, 일단 이 플로피로 부팅을 하면 grub prompt가 뜹니다.
이제 원하는 옵션을 이용하여 부팅을 하면 됩니다.

부팅하는 첫번째 방법은,

root (hd0,0)
kernel /boot/vmlinuz-... root=/dev/hda1 [기타옵션]
initrd /boot/initrd-...
boot이고, (file이름은 completion이 되니 쉽게 찾을 수 있겠죠)

두번째 방법은,

root (hd0,0)
configfile file
이렇게 해서 메뉴를 불러온 다음 평소때처럼 메뉴로 부르는것이겠죠.
메뉴 위치를 알아야 쓸 수 있습니다. debian의 경우는 /boot/grub/menu.lst이었던 거 같네요.

물론 부팅한 다음에 grub-install을 해서 mbr을 복구해놔야겠지요.
grub-install /dev/hda
이런 식으로 하면 복구가 됩니다.
-------------------------------------------------------------------------------------------

< http://kldp.org/node/21017 >

       
△ 이전글: 리눅스 부팅디스크 만들기, MBR이 아닌 first boot record
▽ 다음글: 네트워크 프린터 파일 공유가 안될때
Copyright 1999-2019 Zeroboard / skin by enFree