Unix

원격으로 재부팅할 때, 리눅스로 부팅할지, 윈도우로 부팅할지 고르기

ForceCore 2015. 7. 31. 15:25

UEFI 지원하는 메인보드에 윈도우 10과 아치 둘 다 설치한 기념으로 작성한다. UEFI와 BIOS가 대비되는 특징중 하나로는 운영체제가 돌고 있을 때, 메인보드의 설정을 바꿀 수 있다는 점이다 (헑). 여기에는 부팅때 어떤 드라이브로 부팅되느냐 옵션도 포함되어 있다.


필자의 설정을 일단 설명하자면,

/dev/sda 는 리눅스가,

/dev/sdb 에는 윈도우가 있다.

또한, /dev/sda1 에는 리눅스의 EFI 파티션이

/dev/sdb2 에는 윈도우의 EFI 파티션이 있다.


필자가 이루고자 하는 바는 뭐냐면, 컴퓨터를 켜면 리눅스로 부팅할지, 윈도우로 부팅할지 묻는 화면이 나오는 것이다. Grub에서 익히 했던 것 처럼... 필자는 systemd-boot 을 사용중이다. 여기에 window 항목을 추가하면 되는데 이것은 어렵지 않다.


/dev/sdb2를 /mnt에 마운트 해서 보면,EFI란 폴더가 딱 하나 있다.


# mount /dev/sdb2 /mnt

# ls /mnt

EFI


그리고 리눅스쪽에서 /boot을 보면 역시 EFI폴더가 있을 것이다. (그 외 리눅스 이미지도 들어있고 윈도우의 EFI 파티션보다 잡다하게 구성된 편이다)

$ ls /boot
EFI                           initramfs-linux.img  loader
initramfs-linux-fallback.img  intel-ucode.img      vmlinuz-linux


윈도우 항목 추가는 전혀 어렵지 않다. 왜냐면, 자동감지를 이용하기 때문이다. 해줘야 할 일은 복사하는 것 뿐이다.

# rsync -avu /mnt/EFI/ /boot/EFI/

tar로 복사하든지, rsync로 복사하든지, GUI에서 복사하든지 해서 /mnt/EFI에만 있는 것을 /boot/EFI로 복사하면 끝이다. 단, rsync를 이용한다면, 폴더의 내용을 동기화 하라는 의미에서 폴더 끝에 /를 반드시 붙여줘야 한다. 주의하란 의미에서 위 명령어의 마지막 /에 빨간 표시를 했다.


그러면 이제, 원격으로 재부팅할 때 어떤 운영체제로 부팅할 지 고르는 작업을 해보자.


윈도우에서는 EasyUEFI라는 프로그램을 설치한다. 그러면



사진은 EasyUEFI 공식 폼페이지에서 가져왔다.


위의 사진을 보면 알겠지만, Windows Boot Manager가 있다!!!  필자차럼 디스크와 운영체제가 두개인 경우에는 Linux Boot Manager도 보이게 된다. 재부팅시 들어가길 원하는 부트매니저를 고르고, One-time boot 버튼을 눌러주면 다음번 재부팅에는 해당 매니저가 뜨게되고 최종적으로는 운영체제까지 부팅되게 된다.


마찬가지로, 리눅스에서 재부팅했을 때 어떤 운영체제가 골라지는지는 어떻게 설정하느냐 하면...

efibootmgr 라는 것을 쓰면 된다.


$ efibootmgr
BootCurrent: 0004
Timeout: 2 seconds
BootOrder: 0004,0000,0001
Boot0000* Windows Boot Manager
Boot0001* Hard Drive
Boot0004* Linux Boot Manager

그냥 명령어만 치고 옵션을 안 붙이면 어떤 매니저가 있는지 뜨고,


# efibootmgr -n 0000

-n (boot next 옵션)을 지정해 매니저를 골라주면 해당 매니저로 들어가고, 최종적으로 그 매니저의 default os로 부팅이 이루어지게 된다.