因为uefi默认是去执行uefi分区的/efi/boot/bootx64.efi这个文件,win8安装时会首先创建自己的目录/efi/microsoft/boot,并在里面放置bootmgfw.efi(有efi shell可以直接执行这个来启动win8),然后再把bootmgfw.efi拷一份到/efi/boot里并命名成bootx64.efi,这样系统默认就从win8启动了;
然后你装ubuntu的时候,ubuntu也会创建/efi/ubutntu/这个目录并放一个grub.efi(也可能叫grubx64.efi,记不清了),作用类似于win8的bootmgfw.efi。然后ubuntu再把grub.efi复制一份到/efi/boot并命名成bootx64.efi里想让自己成为默认启动项,但这样就覆盖了win8的那个,结果就出现了题主说的情况。
解决的办法其实是用efi shell的bcfg这个命令分别为win8和ubuntu添加启动项到bios的启动设备列表里,然后设置其实一个为默认启动。或者默认从grub启动然后让grub来管理系统启动列表。