서버가 업데이트 후 부팅이 안 되는 것이었다... 왜일까?
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파티션이 되었단 것인데...