Win 8.1 upgrade removes Arch-Linux Grub menu
I have a Toshiba Ultra Book U840W-x0110. I have had this laptop dual-boot Windows 8.0 and Arch-Linux. Recently I was offered a free update to Windows 8.1. Since it was free it blocked the logic out of my thought process. I decided to go for this update and after some 2 hours the update to Windows 8.1 was complete. SInce I was working on Windows a restart was always on the cards. During the restart I observed that there was no grub2 menu. The laptop was directly booting into Windows 8.1.
First I was under the impression that the Windows 8.1 update has overwritten the previous grub2 installation. So I booted up my laptop with the Arch Linux CD. But reinstalling grub2 did not change anything. So it is concluded that the update to Windows 8.1 did not affect grub2. The next step was to check for the boot order in the EFI boot Manager.
The EFI Boot Manager ( efibootmgr ) is a very powerful utility. It can make or break your laptop. There are cases where it has bricked the laptops. Hence exercise extreme caution and care when using these commands. Also my grub2 configuration has the entry to boot Windows 8. Hence for me the priority was to get the Grub2 menu during booting.
Run the below command in the console window:
The output will have the boot order in the EFI.
BootCurrent: 0004 Timeout: 0 seconds BootOrder: 0004,0003,2003,2001,2002 Boot0001* EFI Network 0 for IPv6 (08-9E-01-4B-BA-F1) Boot0002* EFI Network 0 for IPv4 (08-9E-01-4B-BA-F1) Boot0003* arch_grub Boot0004* Windows Boot Manager Boot0007* Intel Data_Volume Boot2001* EFI USB Device Boot2002* EFI DVD/CDROM Boot2003* EFI Network
In my case the arch_grub (0003) is after Windows Boot Manager (0004). Hence the Windows Boot Manager boots before without giving a chance for the Grub2 to run. So I changed the boot order so that arch_grub (0003) is before Windows Boot Manager (0004).
The command for my case to change the boot order is :
efibootmgr -o 0003,0004,2003,2001,2002
Now the output for the previous efibootmgr command is :
BootCurrent: 0003 Timeout: 0 seconds BootOrder: 0003,0004,2003,2001,2002 Boot0001* EFI Network 0 for IPv6 (08-9E-01-4B-BA-F1) Boot0002* EFI Network 0 for IPv4 (08-9E-01-4B-BA-F1) Boot0003* arch_grub Boot0004* Windows Boot Manager Boot0007* Intel Data_Volume Boot2001* EFI USB Device Boot2002* EFI DVD/CDROM Boot2003* EFI Network
Check and recheck the output and restart the laptop, this time the grub2 menu should come up.