설치를 했는데 멀티부팅이 안됩니다

윈도7을 쓰는 상태에서 듀얼부팅으로 우분투를 쓰려고 설치를 했습니다.
그런데 부팅을 할때 원래 멀티부팅창이 떠서 윈도를 쓸거냐 우분투를 쓸거냐를 물어야 하건만
전혀 그런창이 뜨지 않고 바로 윈도로 넘어갑니다…

제가 설치를 할때 부트로더를 sda(숫자)에 설치했습니다. 찾아보니까 이게 pbr이라고 하더군요.
구글에 돌아다니다보니까 pbr이 아니라 mbr에…그러니까 그냥 sda에 설치하는 경우도 있던데 이렇게 해도 되는지 묻고싶습니다.
(일단 지금은 설치된 우분투를 지우고 다시 설치해보려 하는 중입니다)

제 생각엔 mbr에 설치하면 grub이 윈도 부트로더를 갈아마셔서 멀티부팅때 윈도가 선택안될 거 같은데…
그냥 mbr에 설치해도 되나요?

pbr은 뭔가요? 주식 관련 용어인가요?
제가 모르는 뭔가 있나요…!

리눅스에서 멀티부팅을 하기 위해선 2가지 방법이 있습니다.
하나는 디스크의 MBR에 grub를 설치하는 방법과
/boot 파티션 자체를 이용하는 방법 대충 2가지로 볼 수 있습니다.

우분투와 윈도우 멀티 부팅을 하시려면 우분투에서는 MBR을 이용하시는 것이
보다 편리 하실 겁니다.

MBR을 이용한다 해서 윈도우 부팅과는 상관이 없으나
나중에 윈도우만 사용하시려면 MBR을 복구하셔야 하는 문제가 있습니다.

grub를 설치할 디스크를 선택 하시면 됩니다.(파티션 번호가 아닙니다.)

본래, 부팅은 MBR에서 부터 시작됩니다.
MBR이 괜히 Mastr Boot Record가 아니죠, 여기서 부터 부팅에 필요한 코드가 들어가고,
그곳의 부트코드가 다음으로 진행할 곳으로 안내하게 되죠.
그래서 이곳에 담겨진 부트코드를 부트매니져라고 부릅니다.
GRUB/LILO/SYSLINUX/윈도우즈 부트매니저 등이 여기에 속하죠.

이러한 부트코드는 운영체제를 로드하기 위한 것으로, 운영체제보다 먼저 실행되며, 운영체제에 속하는 파일시스템을 해석할 필요가 본래 없으며,
운영체제의 부트코드로 안내하기 위한 코드입니다.
운영체제의 부트코드는 부트섹터(PBR, Partition Boot Record)에 담겨지는 것이고, 보통은 MBR에서 PBR로 안내하게 되지만,
GRUB이나 SYSLINUX 부트로더의 경우, chainload 기능을 통해서, 읽어 들인 MBR코드 자체를 교체하여, 다른 부트매니저로 전환하는 기능이 있습니다.
만일, MBR에 실행 코드가 없다면, 파티션에 등록된 Bootable(Active)파티션을 찾아서, 그 파티션의 PBR로 부팅하게 되겠죠.

하지만, 파티션이 여럿으로 나눠지고, 부팅가능한 부트레코드가 여럿 일 경우, 부트매니저에서 어떤 곳으로 갈지 안내해야 합니다.
윈도우즈 부트매니저는 윈도우즈를 위한 부트매니저로, 기본적으로 윈도우즈 관련 운영체제만 안내합니다.
반면, GRUB의 경우, 리눅스 및 윈도우즈, 유닉스, 애플 OS등을 안내할 수 있습니다.
윈도우즈를 설치하면 MBR에 윈도우즈 부트매니저를 심기 때문에, 기본적으로 다른 운영체제로 부팅이 안되는 것입니다.

GRUB이 PBR에 있더라도, 안내하지 않기 때문에, 부팅이 안됩니다.
그래서, 윈도우즈 부트매니저를 사용하는 경우, GRUB4DOS나 WUBI(Windows UBuntu Installer)의 부트로더를 설치하고,
boot.ini나 bcdeditexe.exe를 이용해서 GRLDR나 WUBILDR를 등록해 줘야 합니다.

다만, PBR에 GRUB을 설치한 경우나, PBR에 윈도우즈 부트매니저를 설치한 경우,
MBR의 변경에 영향을 받지 않기 때문에, 재 설치를 요하지 않고, 설정이 편하다는 점은 있습니다.

아래는 GRUB 부트로더를 사용할 경우, PBR로 안내하는 코드입니다.

첫번째 디스크의 첫번째 파티션의 부트코드로 안내

menuentry "Boot into 1’st HDD/1’st Partition" {
chainloader (hd0,1)+1
}

사용자 입력을 받아 그곳으로 안내

menuentry "Boot into N’st HDD/N’st Partition" {
echo "Target Disk Number(0>=):"
read dno
echo "Target Parition Number(1>=):"
read pno
chainloader (hd$dno,$pno)+1
}

여기서, +1이 사용된 것이 보시이죠?
이것은 첫번째 512바이트(블럭)를 MBR처럼 생각하고 읽으라는 것입니다.
당연하게도, 이것은 PBR이고, PBR은 MBR과 구조상 같기 때문에, PBR은 파티션에 저장된 MBR이라고 보시면 됩니다.

윈도우즈 부트매니저의 경우, PBR로 접근하여 부팅하는 기능을 제공하지 않습니다.
엇비슷한 기능을 사용하려면, PBR을 파일로 저장하여, application을 bootsector로 하여, path를 해당파일로 설정하여야 합니다.

[code:2v5xm552]bcdedit /create -d Grub4dos /application bootsector
==> GUID출력
bcdedit /set {guid} device boot
또는 bcdedit /set {guid} device partition=C:

bcdedit /set {guid} path /grldr.mbr

bcdedit /displayorder {guid} addlast
[/code:2v5xm552]

위의 코드는 bcdedit.exe를 이용하여 grub4dos를 부트메뉴의 끝에 추가시켜주는 것입니다.
왜 이렇게 과정이 되는지는 이해하셨을 것이라고 생각됩니다.

결론적으로 말씀드리자면, GRUB이 동작되기 위해서는 보통은 MBR에 설치되어야 유효합니다.
그렇지 않고도 접근하는 방법은 chainload를 해주어야 합니다.
윈도우즈 부트매니저의 경우는 부트섹터를 저장해 놓고, 그 부트섹터로 전환하는 기능은 존재하니,
GRUB4DOS를 이용하면 GRUB2로 체인로드하거나, 리눅스로 부팅이 가능합니다.
본디, 이것은 아마도, 도스나 윈도우즈3.x/95/98의 부트섹터를 읽어 들이기 위해 존재했을 것입니다.

이런, 리눅스와 윈도우즈의 멀티부팅의 문제의 경우는, 윈도우즈의 폐쇄적인 정책으로 인해 발생하는 것입니다.
MS가 관리하는 운영체제 외에는 부팅에 관해 생각하지 않는다는 것이 MS의 부트매니저 정책인 것 같습니다.

protochaos님의 설명은 참으로 눈에 속속 들어 옵니다.

완전한 문외한이 아닌 저로서도 체계적으로 공부해 본 적이 없는 영향이 나타나는 것이
저를 더욱 더 반성하게 하는 것 같습니다.

PBR에 대한 설명 잘 보았습니다. 전혀 모르는 내용도 아니고 여러 해 동안 사용도 해보았습니다만
파티션을 이용한 부팅을 PBR이라 한다는 것을 protochaos님 설명을 보고서야 알게 되었습니다.

감사합니다.