在预装win8的UFI+GTP的pc上实现ubuntu和win8双系统启动

        在部分使用GPT硬盘并启用(U)EFI模式预装Windows 8的计算机上,在未分配空间追加安装Ubuntu操作系统时(12.04.2和12.10以后的64位版本支持EFI),可能发生Ubuntu安装后直接进入windows无法实现Grub引导Ubuntu启动的问题。这种情况发生时,我们可以利用LiveCD模式进行处理,从而实现双启动。但是这必须破坏Windows原有的启动引导来完成,尚不清楚这是否违反微软的用户协议,但为了解决Ubuntu启动的问题,暂时仅能这样处理了。
        在UEFI模式下,在GPT硬盘(GPT硬盘对分区有特别要求,但只要使用支持GPT的新系统安装包重新分区一般可以解决)分区情况一例如下:
/dev/sda1 (恢复分区)
/dev/sda2 efi (boot分区)
/dev/sda3 
/dev/sda4 Windows
/dev/sda5 /boot 
/dev/sda6 /
/dev/sda7 linux-swap
在使用Ubuntu可引导安装介质照常安装完Ubuntu(启动引导器放在/dev/sda,若放在他处可能需要根据需要改变下面的操作步骤)后,我们挂载/dev/sda2会发现在该分区中,Ubuntu已经将自己的EFI启动文件grubx64.efi写入了ubuntu目录中,但仍然仅有Windows可以启动。部分网上的方案是使用EasyBCD 2.2进行处理,虽然该版本自称可以支持EFI,但事实并非如此,请直接略过该软件。在/dev/sda2分区中,我们可以发现共有三个文件夹:Boot、Microsoft、ubuntu,下面为了能够让ubuntu顺利启动,我们要用先重命名Windows本身的efi文件并用ubuntu的efi文件将其替换掉。
以上就是我们的思路,下面是利用LiveCD启动并进入Try Ubuntu(试用)后的终端处理步骤(#后为注释):
sudo -i #提权
mkdir /mnt/temp #新建挂载目录
mount /dev/sda2 /mnt/temp #挂载efi分区,根据实际情况选择sda的分区号
cd /mnt/temp/EFI/Microsoft/Boot/ #进入Windows启动文件所在目录
cp bootmgfw.efi win.efi #备份Windows启动引导文件
cd ../..
cp ubuntu/grubx64.efi Microsoft/Boot/bootmgfw.efi #用ubuntu启动文件替换掉Windows引导文件
exit
此时,重启移除引导设备,你应该就可以看到Grub启动菜单了,即使你看到了Windows启动菜单,请不要选择,ubuntu生成的那个启动项并不能真正的启动Windows 8以及更新的操作系统,因为这些新系统的启动方式已经变动,而ubuntu仍然使用了旧的方法生成Windows启动项。选择ubuntu系统进入,然后提权编辑/etc/grub.d/40_custom文件,在文件尾部追加以下几行:
menuentry "Windows 8" { #引号内的内容随便填,总之就是新启动条目的名字
 insmod part_gpt
 insmod ntfs
 set root='(hd0,gpt2)' #这里的GPT2的2就是efi分区的sda编号
 chainloader /EFI/Microsoft/Boot/win.efi #这里指定我们先前备份的Windows引导文件
}
在终端中执行sudo update-grub即可更新启动菜单。重新启动后,Windows的系统时间可能发生问题,采用太平洋时间而不是东八区,这时需要在/etc/default/grub中将UTC=yes改为UTC=no。之后,重新启动你就会看到支持双启动的Grub菜单。
如果是更多重启动,也可采用类似方式进行编辑。



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值