EFI시스템환경에서 우분투를, 윈도우와 멀티부팅 구성을 서로다른 디스크에 했을때,
efi\ubuntu\grub.cfg 파일을 열어보면,
과 같다.
1st disk EFI(GPT) Disk (2 partition)
2nd disk MBR Disk (1 ext4 partition)
search.fs_uuid 8d2abc11-8060-42bf-9c45-96a8648afd18 root hd1,msdos1
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg
1st disk EFI(GPT) Disk (2 partition)
2nd disk GPT Disk (1 ext4 partition)
search.fs_uuid ea2b3d2a-7946-4ede-aa8d-aeaf3d846da8 root hd1,gpt1
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg
여기서 이 두부분은 차이가 있음을 알것이다.
이 uuid는, 우분투가 설치된 파티션(여기서는 2번째디스크,1번파티션)의 고유한 이름을 나타낸다.
다음 hd1,msdos1 과 hd1,gpt1 은 우분투가 설치된 2nd 디스크, 파티션구조및위치를 나타낸다.
그래서, 해당 파티션을 서치해서, /boot/grub아래의 grub2부팅메뉴파일인 grub.cfg를 불러오도록 하는 것이다.
따라서 이 값이 정확하지 않으면,
다음그림과 같이 grub 쉘로 빠져버린다.
===============여기서 잠깐,
grub4dos에서는 하드, 파티션 번호구조는 다음과 같다.
첫번째디스크, 첫번째파티션이 0, 0 에서 시작이다.
hd0,0
grub2에서는 파티션번호만 1부터 시작이다.
hd0,1
자 그럼, 위에 hd1,gpt1 은 무엇인가
두번째하드,GPT첫번째파티션 이란 의미이다.
hd1,msdos1은 무엇인가?
두번째하드,MBR첫번째파티션을 말한다.
우분투 라이브로 부팅하여, 두개의 하드에 usb까지 포함해서
sda(윈도우하드), sdb(USB디스크), sdc(리눅스디스크)의 상태를 보자.
디스크정보보기 명령어 sudo fdisk -l
여기서 리눅스 디스크인 sdc 는 disk type 이 dos 이며,
리눅스설치된 파티션이 sdc1임을 알 수있다.
그럼 이 sdc1의 uuid를 보려면?
명령어 blkid /dev/sdc1
와 같이 ea2~ 로시작하는 값임을 알 수 있다.
sdc의 타입=msdos
디스크는 3번째(sdc)=hd2
파티션순서=1번째(sdc1)=msdos1
uuid=ea2b3d2a-7946-4ede-aa8d-aeaf3d846da8
따라서, EFI 부팅파티션에있는 grub efi가 이 MBR하드로 우분투부팅을 하려면,
efi\ubuntu\grub.cfg를 열어서
search.fs_uuid ea2b3d2a-7946-4ede-aa8d-aeaf3d846da8 root hd2,msdos1
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg
와 같이 수정을 해주어야 할 것이다.
우분투에서 잠시 확인해보자
부팅이 잘되도록 수정하였다.