우분투 멀티부팅에 관련하여 질문

저번에 제 글에 답변 해주신건 대단히 감사드립니다

현재 C드라이브에는 윈도우 7이, D드라이브에도 윈도우 7이(근데 비스타로 인식됨) 깔려있고,

E드라이브에는 지금 우분투 11.04가 깔려있습니다.

우선 C드라이브에 깔린 윈도우 7로는 그냥 깔아놓고 사용하지를 않았고, D드라이브에 깔린 윈도우 7로 주로 사용을 해왔습니다.

그리고 이번에 E드라이브에 우분투를 설치하고 나서, 우분투의 멀티부팅 메뉴에서 C드라이브에 깔린 윈도우 7로 부팅을 하게되면 다시 우분투 멀티부팅 메뉴로 복귀되고, D드라이브에 깔린 윈도우 7로 부팅을 하게되면 데스크탑으로 부팅이 안되고 복구 모드가 뜹니다. 자동복구를 해도 복구가 안되더군요.

제 생각에는 grub를 수정해야 할 것 같은데, 리눅스쪽은 건드려보지도 못해서 어떻게 해야할지도 모르겠고 ;; 고수분들 도와주세요!

컥 윈도우즈7을 두개나 설치해 놓으시다니… 대단하십니다.

C:에 설치된 윈도우즈로 부팅하면 grub부트메뉴가 뜬다는 것은 아마도,
grub에서 실패해서 fallback으로 다시 grub부트메뉴가 나타나는 것으로 보이는 군요.

그리고, D:에 설치된 윈도우즈로 부팅하면 부팅이 안되고, 복구모드가 뜬다니… 훔… 이건 BCD파일과 관련되어 있겠군요.

grub에서 자동으로 인식한 windows로 부팅하는 과정에 먼가 오류가 있어 보이는데 잘 모르겠군요.

일단 윈도우즈7의 경우 bootmgr이라는 파일이 있고, 이것이 부트매니져 바이너리 파일 입니다.
그리고, c:/Boot/BCD파일이 있고, 이것이 부트메뉴 설정파일 입니다.

grub에서는 update-grub실행시 자동으로 /etc/grub.d/30_os-prober가 실행되고,
아래와 비슷한 내용이 /boot/grub/grub.cfg에 추가됩니다.

BEGIN /etc/grub.d/30_os-prober

menuentry "Windows 7 (loader) (on /dev/sda1)" --class windows --class os {
insmod part_msdos
insmod ntfs
set root=‘(/dev/sda,msdos1)’
search --no-floppy --fs-uuid --set=root 3AA8AEA0A8AE5A61
chainloader +1
}

END /etc/grub.d/30_os-prober

우분투로 부팅하셔서 sudo blkid -t TYPE="ntfs" 하셔서 설치된 윈도우즈의 디바이스이름이나 UUID를 기억하세요
#/boot/grub/custom.cfg
menuentry "Windows7 C:" {
insmod ntfs
insmod fat
search -s --fs-uuid C:의UUID
#혹은 search -s --fs-label C:의라벨
#혹은 set root=(hd디스크번호,C:파티션번호) 여기서 디스크번호는 0부터, 파티션번호는 1부터 시작합니다.
chainloader +1
}
menuentry "Windows7 D:" {
insmod ntfs
insmod fat
search -s -u D:의UUID
#혹은 search -s -l D:의라벨
#혹은 set root=(hd디스크번호,D:파티션번호) 여기서 디스크번호는 0부터, 파티션번호는 1부터 시작합니다.
chainloader +1
}
이렇게 저장하고 부트메뉴에서 선택해서 윈도우즈로 부팅해보세요.

복구모드로 부팅된다면, 자동복구말고 콘솔로 들어가셔서
bcdedit로 편집하셔야 할겁니다.
이건 그리 간단하지 않습니다.

설명드리려면 윈도우즈7으로 부팅해서 설명드려야 하는데다…
bcdedit명령 자체도 그리 간단히 설명될 수 없어서…
일단 생략합니다. 일단 구글링해보세요…

정안된다면 제가 윈도우즈7으로 부팅해서 설명드리는 수 밖에 없을 듯 하네요.
아니면, VNC를 통해 원격으로 고치던가요…

[quote="protochaos":3w1texb6]grub에서는 update-grub실행시 자동으로 /etc/grub.d/30_os-prober가 실행되고,
아래와 비슷한 내용이 /boot/grub/grub.cfg에 추가됩니다.

BEGIN /etc/grub.d/30_os-prober

menuentry "Windows 7 (loader) (on /dev/sda1)" --class windows --class os {
insmod part_msdos
insmod ntfs
set root=‘(/dev/sda,msdos1)’
search --no-floppy --fs-uuid --set=root 3AA8AEA0A8AE5A61
chainloader +1
}

END /etc/grub.d/30_os-prober

[/quote:3w1texb6]

대단히 죄송하지만 이부분부터 제가 어떻게 해야 되는지 전혀 이해가 안됩니다…
제가 리눅스쪽은 너무 초보라서요…
초보가 알아들을 정도로만 다시 설명해주세요 ㅜㅜ

30_os-prober는 grub설치시나 update-grub명령 실행시 자동으로 실행되요

그리고 그결과로 /boot/grub/grub.cfg에

BEGIN /etc/grub.d/30_os-prober

END /etc/grub.d/30_os-prober

이런 부분이 자동 추가되죠.
그런데 이부분에 문제가 있어 부팅이 안되는 듯 하다는 말입니다.

그러니깐 /boot/grub/custom.cfg를 만들어서 제가 올린 내용처럼
수동으로 windows파티션으로 부팅하게 만들어 줘 보세요.

그런데 윈도우즈7이 하나만 설치되어 있다면 자동으로 검색하여 부팅하게
설명해드리겠지만 윈도우즈7이 두개가 설치 되어 있으므로,
각각의 윈도우즈7의 고유 명칭을 알아야 되자나요

그래서 sudo blkid -t TYPE="ntfs" 명령은 윈도우즈파티션을 검색해서
각각의 윈도우즈의 고유명칭을 알아내라는 말입니다.

그리고 적어준데로 C:UUID부분에 C:의 고유명칭을 적어 넣어주라는 말이에요

그렇게 해서 부팅을 해보시고,
윈도우즈로 진입되는데 역시나 윈도우즈복구모드로 부팅이된다면
윈도우즈파티션내의 BCD파일에 문제가 있어서 안될것이라는 말입니다.
이경우는 복구콘솔로 들어가서 BCDEDIT.exe를 실행해서 BCD파일을 복구해 주어야 하는데…
이것은 간단하지 않습니다.
설명드리기 꽤나 복잡하구요, 이것은 우분투 문제가 아니라 윈도우즈7의 부팅문제구요,
BCDEDIT 복구 머 이런식으로 구글 검색하셔서 문제를 해결해 보시라는 말입니다.