GRUB 과 서로 다른 HDD에서 윈도우7 설치후 BOOTMGR is missing 오류
우분투가 설치되었던 맛간 E-IDE 삼성 하드(2004년산) 120GB를 떼어내고,
컴퓨존에서 주문해 어제 새로 도착한 히타치 SATA2 하드 320GB 를 달았다.
여기에 새로 파티션을 반반 나눠 윈도우7을 설치했다.
그리고 기존의 윈도우7이 설치되었던 160GB SATA1 하드를 모두 포맷하여 밀고 우분투를 재 설치 하였다.
즉,총 하드 3개에 바이오스 부팅순서는 다음과 같은 상황에서,
1.120GB SATA1
2.320GB SATA2
3.1TB SATA2
먼저, 2번에 윈도우7 설치, 부팅 정상
1번에 우분투 서버설치, 설치중에 알아서 다른 O.S 찾는 부분에서 어째 윈도우7을 찾지 못함
설치후 우분투 로긴해서 update-grub 하면,다른 O.S 찾는데,역시 윈도우즈7을 찾지 못했다.
krkim@baikal:~$ sudo update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.35-22-server
Found initrd image: /boot/initrd.img-2.6.35-22-server
Found memtest86+ image: /boot/memtest86+.bin
done
↑ 어라? 윈도우즈7 이 없다..
따라서,grub2의 /etc/grub.d/40_custom에
menuentry "Microsoft Windows 7" {
set root=(hd1,1)
chainloader +1
}
BOOTMGR is missing 이라고 뜨는 것이었다.
덧붙여 설명하면 (hd1,1) 이 무슨의미인지 모르는 분이 계신듯 한데,
hd1 => 물리적 하드의 두번째 하드란 뜻이고, 1은 첫번째 파티션 이란 뜻이다.
따라서, 각자 이부분은 자신의 바이오스 부팅순서로 잡은 하드 순으로 고쳐 주면 된다.
예를 들어,위의 바이오스에 잡힌 하드들의 모양새를 빌자면,
1.120GB SATA1 => hd0
2.320GB SATA2 => hd1 (C,D 파티션의 경우 C = (hd1,1) D = (hd1,2) 식으로...늘어남)
3.1TB SATA2 => hd2
라는 것.
BOOTMGR is missing 은 grub 의 메세지가 아닌 윈도우즈7의 부트로더 오류 메세지 이므로
GRUB2 는 정상적으로 하드를 잡았다는(인식했다는) 말이므로 더이상 GRUB의 문제는 아니다.
이상하게,윈도우7 설치할 적에 이놈이 도대체 부트로더를 어디에 설치해 놨글래 이것이 사라졌을까,,
원래는 설치하고자 하는 대상 하드(자기자신의 2번 하드 hd1)의 첫번째 파티션(C:) 이어야 하는데,
아마 의문이지만,윈도우7의 자기 꼴리는대로 막쓰기 습성대로 치면 첫번째 하드 hd0에 설치한 것 같다.
이것이 모두,설치할때 모든 하드를 시스템에 연결해놓고 설치를 한 결과이다. 결과적으로,윈도우7 설치
할때 이런 문제가 발생하면,본체를 열어서 설치하려는 대상 하드만 빼고 나머지 하드를 모두 분리해야 한다는 어쩌구니 없는 끔찍한 말이기도 하다.무조건 첫번째 HDD에 자기자신의 부트로더를 설치하는 듯,
그래서 우분투를 설치하고 MS의 윈도우를 나중에 깔면 GRUB이니 뭐니 몽땅 날라가는 원인이 이것.^^
우분투 설치할 첫번째 하드에 사용자의 의도와는 다르게 윈도우7의 부트로더가 자기 멋대로 설치되고 이것을 사용자가 우분투 설치하면서 EXT4 저널링 포맷과 동시에 grub이 밀어버리면서 제거 한 것일 수도 있는 가능성이 있는 대목이다.
윈도우즈7 부트로더는,숨김파일 속성으로 되어 있는 C:\bootmgr 파일이 설치된 하드에서 보여야만 한다.
*우분투 설치하드는 참고로 / => EXT4 저널링, /home => EXT4 저널링,그리고 4GB swap으로
/home 을 파티션 하나 더 잡아서 설치했다.
IDE 하드와 SATA 하드가 같이 붙어 있으면 시스템 버스 특성상 IDE가 먼저 잡힌다는 말은 있어서,
이런 문제가 비일비재 했지만,SATA 하드만 있는데도 이런 엉뚱한 문제가 발생할 줄이야...
어쨋튼,본체를 열어 윈도우즈7 이 설치된 2번 하드만 빼고 나머지 하드의 S-ATA 데이타 케이블을 뽑고
(전원 케이블 까지 굳이 뽑을 이유는 없다,Auto로 인식하기 때문에 바이오스에서 하드 다시 안잡아줘도 된다)
윈도우즈7 설치CD를 넣고,[지금설치] 화면의 하단에 있는 복구란을 눌러서 BOOTMGR 복구 작업에 들어간다.
뭐,복구 마법사가 자동으로 찾는다고 하는데 그냥 냅둬도 되고 끝나면 알아서 재부팅 하는데 미심쩍으면 수재부팅 한다는 곳에서 Cancel 눌러서 수동으로 확인 작업 한다.
5가지 메뉴가 나타나는 창의 첫번째 (시작 복구 - Startup Repair) 란을 함 실행해서 BOOTMGR 부트메니저 파일이 생성되도록 해준다.
마지막 메뉴의 명령 프롬프트 창을 열어서 C:\ 로 이동해 dir /ah 로 bootmgr 파일이 생겼는지 확인한다.
이렇게 말고도 (또는 이렇게 해도 안되면) 처음부터 명령 프롬프트를 선택해 수동 작업을 한다.
diskpart
list disk
sel disk 0
sel part 1
active
exit
bcdboot c:\windows /l ko-kr (영문판의 경우 en-us 입력)
(↑출처: http://www.parkoz.com/zboard/view.php?id=express_qna3&no=426030)
또는
bootrec /fixmbr
bootrec /fixboot
(↑ 자세한 것은 http://pcwinvista.tistory.com/354 이곳에,그러나 이런 경우엔 잘 듣지 않을것이다)
이렇게 한후,모든 하드를 원래대로 연결 후 재 부팅 한다.
*만일,첫 하드에 우분투 & grub이 깔려 있었고,이렇게 복구한 윈도우즈7이 설치된 하드만
그대로 연결해 놓은 채 재 부팅하면 grub rescue > 가 뜨고 만다.
grub 화면이 뜨면서 아까 추가했던 40_custom 파일대로,화면에 윈도우즈7 메뉴가 보인다.
눌러서 진입하면 윈도우즈7이 정상적으로 기동된다.
또한,Untuntu 로 진입하여 update-grub 하면 이제는 40_custom 이런거 없이도 윈도우즈7 을 제대로
찾는 것을 볼수가 있다.
krkim@baikal:~$ sudo update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.35-22-server
Found initrd image: /boot/initrd.img-2.6.35-22-server
Found memtest86+ image: /boot/memtest86+.bin
Found Windows 7 (loader) on /dev/sdb1
done
컴퓨터는 어떻게 부팅이 되는가?
정해진 물리적 영역 MBR(Master Boot Record) 는 모든 하드디스크의 첫번째 섹터에 존재한다.
섹터는 육상경기장의 트랙과 같은 원궤도 라고 보면된다.섹터를 길게 들여올려 늘여뜨린 윈기둥 형태는 실린더,즉,하드디스크는 섹터x 실린더수 에 따라 용량이 결정된다고 볼수 있다.
처음 PC가 전원이 켜지면서 보드의 각 회로에 전원 공급이 되면서 POST 과정이 진행되고 CPU는 보드상의ROM 에 내장된 BIOS 펌웨어 코드를 읽어들여 지정된 하드디스크의 MBR의 첫 섹터 데이타 512bytes(섹터의 크기로 기술발전과 더불어 변할 수 있다)를 읽어들이고 바로 이부분에 각 O.S의 부트로더의 코드가 담겨있으며 이 시작 코드가 읽혀 짐으로써 메모리(RAM)에 해당 O.S 기동코드가 적재되어 PC 소프트웨어 환경이 구동되고 이후의 모든 구동책임은 O.S에게 전가 된다..
이문제에 관한 다른글
부팅과정에(일반적) 대해 더 알아보기
리눅스 부팅과정
하드디스크에 관해 더 알아보기
'Server | Network' 카테고리의 다른 글
우분투 vsftpd 설정하기 (0) | 2010.11.18 |
---|---|
우분투 inetd 설치하기 (0) | 2010.11.18 |
자동 마운트 설정 하기 (0) | 2010.11.17 |
SecureCRT 에서 Ubuntu 한글 깨질때 (0) | 2010.11.16 |
Grub 콘솔로 부팅 (0) | 2010.11.15 |