Unix

GPT partition table에 grub 설치하기...

알 수 없는 사용자 2013. 7. 24. 20:29

서버가 업데이트 후 부팅이 안 되는 것이었다... 왜일까?

UEFI 부팅으로 지멋대로 설정되어서 그런 것인 줄 알았는데 여러가지 삽질 뒤에 아님을 깨달았다. (/sys/firmware/efi 가 없으면 EFI로 부팅된게 아니다.)

이렇게 속게 된 원인은 하드 partition table을 보니까 EFI란 말도 보이고 GPT로 되어있기도 해서... 속았다.

원인은 grub이 GPT에는 보통 방법으론 설치가 잘 되지 않기 때문이다.

1. 새로 파티션을 만든다. 이 파티션 크기는 1MB정도면 되는데 mkfs할 필요도 없다.

2. http://www.wensley.org.uk/gpt parted를 이용해서, 아까만든 파티션을 bios_grub 플래그를 준다. 안 주면 어떻게 되나: grub-install 을 하는데 ...

parted /dev/sda -- set 1 bios_grub on
주의: sda1이라면 위와 같고, sda2면 1대신 2를 적으면 됨.

root@debian:~# grub-install /dev/sda
/usr/sbin/grub-setup: warn: This GPT partition label has no BIOS Boot Partition; embedding won't be possible!.
/usr/sbin/grub-setup: warn: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
/usr/sbin/grub-setup: error: if you really want blocklists, use --force.

이런 식의 에러가 나온다.

3. /dev/sda1이 /boot에 마운트 되어야 하는가? 그건 아니다. 그건 아무데도 마운트 하지 마라.

4. grub-pc를 설치하고,  (재설치 하는 경우에는 sudo apt-get install --reinstall grub-pc), sudo grub-install /dev/sda 로 boot loader를 하드에 얹어주면 완성!


미스테리는, 왜 이런 일이 일어났지? 그동안 부팅도 잘 되었다. 그 말은, GPT파티션도 아니었단 말이고 (최초 설치때 grub이 잘 얹혔으니 그랬겠지.) 어느틈엔가 나 몰래 GPT파티션이 되었단 것인데...