관리 메뉴

드럼치는 프로그래머

[Linux] linux rescue (grub 재설치) 본문

★─Programing/☆─Linux

[Linux] linux rescue (grub 재설치)

드럼치는한동이 2007. 8. 29. 16:34

참고 :
네이버 리눅스 유저그룹 : http://cafe.naver.com/linuxcare.cafe
리눅스 한글 문서 프로젝트 : http://wiki.kldp.org/wiki.php/GRUB
* 참고..리눅스한글문서 프로젝트 글에 오타가 마니~있음을 알려드립니다.

Edit by 달걀멘(eggchin@hanafos.com)

이 문서는 윈도우 재설치 혹은 하드 교환후에 grub을 재설치 하려고
삽질을 18번한 충격적인 기억때문에 만들게 되었음을 알려드립니다.
리눅스는 거의 동일하다고 생각됩니다.
하지만..한소리2005에서만 테스트되었으며 다른 운영체계에서는
책임질수 없습니다;;;(ㅠ.ㅠ 저에게 책임을 물으셔도 모릅니당;;저도..초보입니당;;)


아 그리고 틀린부분 있으면 팍팍 지적해주세요

이 문서땜에 삽질하게되면

삽질한사람 무지 열받습니다.;;;;;;

####################################################################

목차
1. 필요한 준비물
2. 사용할 명령어
3. 일반적 리눅스 장치
4. grub에서 사용하는 문법
5. grub.conf 편집하기
6. 간단한 예

####################################################################

[1] 필요한 준비물
한소리 2005 - 1번 설치 시디

[2] 사용할 명령어

linux rescure
chroot /mnt/sysimage
vi /boot/grub/grub.conf
vi /etc/fstab
grub-install /dev/hda
df

[3] 리눅스에서 사용하는 일반적인 장치

IDE방식의 물리적 하드를 장치명은

/dev/hda  →   첫번째 물리적(하드 혹은 시디롬)디스크
/dev/hdb  →   두번째 물리적(하드 혹은 시디롬)디스크
/dev/hdc  →   세번째 물리적(하드 혹은 시디롬)디스크
/dev/hdd  →   네번째 물리적(하드 혹은 시디롬)디스크

따라서 총 4개의 장치를 꼽을수 있는것을 알수있습니다.

파티션까지 나눈다면..
그 장치명에 숫자가 붙게 됩니당..

예를 들면 첫번째 물리적하드를 3개의 파티션으로 나누면..
/dev/hda1
/dev/hda2
/dev/hda3
로 구분됩니당..물리적하드는 1개인데
소프트적하드(=파티션)는 3개가됩니다.

마찬가지로
SATA 방식의 물리적 하드를 장치명은

/dev/sda  →   첫번째 물리적(하드 혹은 시디롬)디스크
/dev/sdb  →   두번째 물리적(하드 혹은 시디롬)디스크
/dev/sdc  →   세번째 물리적(하드 혹은 시디롬)디스크
/dev/sdd  →   네번째 물리적(하드 혹은 시디롬)디스크

[4] grub에서 사용하는 문법

보통 장치를 둥근괄호'('와 ')'로 표시하게 됩니다.

표시형식은

( <물리적하드명> , <파티션위치> )

로 표시됩니다.

그리고 물리적 하드명과 파티션위치는 0부터 시작되는 숫자로 표시됩니다.

IDE방식의 물리적 하드를 장치명은

/dev/hda   →     (hd0)        →   첫번째 물리적(하드 혹은 시디롬)디스크
/dev/hdb   →     (hd1)        →   두번째 물리적(하드 혹은 시디롬)디스크
/dev/hdc   →     (hd2)        →   세번째 물리적(하드 혹은 시디롬)디스크
/dev/hdd   →     (hd3)        →   네번째 물리적(하드 혹은 시디롬)디스크

파티션까지 나타내면 다음과 같습니다.

/dev/hda1  →     (hd0,0)      →  첫번째 물리적드라이브, 첫번째 파티션
/dev/hdb5  →     (hd1,4)      →  두번째 물리적드라이브, 다섯번째 파티션

!! 아직 확인하지는 못했으나;; 제가 SATA가 없어서 확인은 못해봤습니다.
IDE, SATA, SCSI 할 것 없이 무조건 hdx다 된다고 합니다.
/dev/sda1이라고 해서 sd0이 되는 것이 아님에 유의하로고 하더군요
자세한 내용은 알지못해서 모르겠습니다.

[5] /boot/grub/grub.conf 파일

최초로 편집해야 하는 것은
/boot/grub/grub.conf 파일입니다.
이파일을 편집한후에 저장한후 mbr부분에 적재하면 설치는 끝납니다.

우선 파일을 열어 내용을 확인하면 다음과 같습니다.
(일단 첫번째 물리적 드라이브에 리눅스가 깔려있다고 가정하겠습니다.)


# vi /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 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/hda2
#          initrd /initrd-version.img
#boot=/dev/hda
default=0
timeout=10
splashimage=(<부트가있는물리적하드명>,<부트가있는파티션명> )/grub/splash.xpm.gz

title Haansoft Linux (2.6.9-71hs)
        root (<부트가있는물리적하드명>,<부트가있는파티션명> )
        kernel /vmlinuz-2.6.9-71hs ro root=LABEL=/
        initrd /initrd-2.6.9-71hs.img

title windows
        rootnoverify (hd0,0)
        chainloader +1
-----------------------------------------------------------------------------------------
라고 나옵니다.
이중 '(<부트가있는물리적하드명>,<부트가있는파티션명>)' 이라는 부분을 수정해 주시면 됩니다.

윈도우같은 경우 동일하게 모두 (hd0,0)으로 표시됩니다.

부트가있는 물리적 하드명과 파티션명을 모르실때는
다음과같은 df명령을 통해서
부트(/boot)의 위치를 아실수가 있습니다.

[root@localhost ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/hda2              6994788   4183256   2456212  64% /
/dev/hda1                99043      6705     87224   8% /boot
none                    257672         0    257672   0% /dev/shm
[root@localhost ~]#

[6] 간단한 예


첫번째 물리적 드라이브에 연결된 기존 리눅스하드를

세번째 물리적 드라이브에 연결하고

windows가 설치된 하드를 첫번째 물리적드라이브에 연결하여
사용하고자 하는 경우


[ 변경사항 요점 ]


초기설정                       변경부분

/dev/hda1     /boot        → /dev/hdc1     /boot

/dev/hda2     /              → /dev/hdc2     /

/dev/hda3     swap        → /dev/hdc3     /swap


맨처음 한소리2005설치시디1번을 넣습니다.

>boot : linux rescue 라고 입력합니다.

사용자 삽입 이미지


>언어선택에서 English를 누릅니다.

사용자 삽입 이미지













>키보드에서 us를 누릅니다.

사용자 삽입 이미지



















>네트워크 부분이 나오는데 필요없는 부분이므로
no를 누르고 무시합니다.

사용자 삽입 이미지












>리눅스가 깔여있는 하드를 검색하여 마운트할수있게 해줍니다.
파일을 변경해야하므로 Continue를 누릅니다.

사용자 삽입 이미지






















>쉘창에서 다음과 같은 명령을 칩니다.

# chroot /mnt/sysimage

(리눅스가깔려있는 하드로 마운트됩니다.)
그러면 쉘버전이 바뀌는것을 보실수 있습니다.

>그리고 쉘에서 다음과 같이 명령합니다.

# vi /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 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/hda2
#          initrd /initrd-version.img
#boot=/dev/hda
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz

title Haansoft Linux (2.6.9-71hs)
        root (hd0,0)
        kernel /vmlinuz-2.6.9-71hs ro root=LABEL=/
        initrd /initrd-2.6.9-71hs.img

title windows
        rootnoverify (hd0,0)
        chainloader +1
--------------------------------------------------------------- --------------------------
붉을색부분을 부트(/boot)가 있는 물리적하드위치와 파티션을 수정해줍니다.
저는 세번째 물리적 드라이브로 바꾸어서 다음과 같이 수정했습니다.
수정한후 :wq하시면 됩니다.


수정후----------------------------------------------------------- - -----------------------------
# 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/hda2
#          initrd /initrd-version.img
#boot=/dev/hda
default=0
timeout=10
splashimage=(hd2,0)/grub/splash.xpm.gz

title Haansoft Linux (2.6.9-71hs)
        root (hd2,0)
        kernel /vmlinuz-2.6.9-71hs ro root=LABEL=/
        initrd /initrd-2.6.9-71hs.img

title windows
        rootnoverify (hd0,0)
        chainloader +1
--------------------------------------------------------------- --------------------------

그리고 다시 다음과 같이 명령을 입력합니다.

# vi /etc/fstab


수정전--------------------------------------------------------------------- --------------------
LABEL=/                 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
none                    /dev/pts                devpts  gid=5,mode=620  0 0
none                    /dev/shm                tmpfs   defaults        0 0
none                    /proc                   proc    defaults        0 0
none                    /sys                    sysfs   defaults        0 0
/dev/hda3               swap                    swap    defaults        0 0
/dev/cdrom              /mnt/cdrom              udf,iso9660 iocharset=cp949,noauto,user,kudzu,ro 0 0
/dev/fd0                /mnt/floppy             auto    iocharset=cp949,noauto,user,kudzu 0 0
-----------------------------------------------------------------------------------------
보시면 스왑파일이 /dev/hda3로 되어있는것을 보실수 있습니다.
이것을 바꾸어 줍니다.


저는 세번째 물리적 드라이브로 바꾸어서 /dev/hdc3로 바꾸어주었습니다.
마찬가지로 수정한후 :wq하시면 됩니다.


수정후--------------------------------------------------------------------- --------------------
LABEL=/                 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
none                    /dev/pts                devpts  gid=5,mode=620  0 0
none                    /dev/shm                tmpfs   defaults        0 0
none                    /proc                   proc    defaults        0 0
none                    /sys                    sysfs   defaults        0 0
/dev/hdc3               swap                    swap    defaults        0 0
/dev/cdrom              /mnt/cdrom              udf,iso9660 iocharset=cp949,noauto,user,kudzu,ro 0 0
/dev/fd0                /mnt/floppy             auto    iocharset=cp949,noauto,user,kudzu 0 0
-----------------------------------------------------------------------------------------


그리고 다시 다음과 같이 명령을 입력합니다.

# grub-install /dev/hda

이명령은 시간이 좀 걸립니다.
다운된것이 아니기때문에 걱정하지 마시길바랍니다.
(전 처음에 좀 걱정을 했다는;;;)

다 된후에 재부팅하시면 됩니다.

'★─Programing > ☆─Linux' 카테고리의 다른 글

[Linux] useradd 사용자관리 명령어  (0) 2007.08.29
[Linux] mknod 명령어  (0) 2007.08.29
[Linux] 리눅스 LVM 구축하기  (0) 2007.08.06
[Linux] LINUX RAID5 구축  (0) 2007.08.06
[Linux] LINUX RAID1 구축  (0) 2007.08.06
Comments