资源描述
基于UEFI引导的win8.1和ubuntu13.10
双系统安装
1. 前言
UEFI引导的出现乃至变得火热让系统安装的问题变得复杂,尤其是在windows横空出世并针对URFI优化更是让其与ubuntu组成的双系统安装变得情况百出(顺带哀悼下由此退出江湖的wubi安装)。
最近花了一天多的时间完成了win8.1与ubuntu13.10基于UEFI引导的安装,在过程中遇到了一些问题,理解了一些硬件和软件架构,摸索了一个不算完美的解决方案,在此整理,希望能够帮助到需要的人。
实验环境:
电脑-—联想Y510P 支持UEFI启动,N卡
Windows-—Windows 8。1简体中文64位
Ubuntu--Ubuntukylin 13.10 AMD64位
2. UEFI boot与Legacy boot
基本输入 / 输出系统(BIOS)是硬件和操作系统之间的一层.UEFI与Legacy都是系统引导的技术,都是实现电脑在硬件开机之后找到操作系统过程中的引导.
Legacy boot是传统的引导方式,其引导基于驱动器上的主引导记录(MBR).通俗的解释,一次系统启动的流程为,硬件开启→BIOS自检→读入MBR→读取激活主分区→启动系统。一些蛋疼的人们认为Legacy boot有一些他们不能容忍的缺点:
1) 无法直接引导超过2.2T的驱动器
2) 缺乏安全性验证
3) 启动时间慢
于是他们加强了BIOS的功能,设计了UEFI boot模式(仅针对64位系统),可以解决上述的问题,于是MBR被抛弃了,引进了一个新的引导分区EFI,采用全局唯一标识分区表GPT来引导分区,下图中可以在硬盘管理中看到EFI系统分区.
另一方面,UEFI boot也提供了驱动、系统信息的临时储存,用于加快开机。在引导的时候也提供了SecureBoot,禁止加载未知的系统(正中Windows下怀)。
UEFI boot与Legacy boot对于我们安装双系统的影响是两个系统需要使用同一引导模式.如果win8。1是按照UEFI引导的方式安装的,ubuntu也一定要是UEFI引导,反之亦然。而ubuntu从11.04开始就支持UEFI引导,版本越新,兼容性越好.
3. BIOS的设定与win8.1的安装
BIOS要做的事情只有两个,1、打开UEFI boot,2、禁用SecureBoot。一般前者的设置在BIOS-boot中,后者的设置在BIOS-secure中.
前者是保证我们装的系统走的是UEFI的引导,不需多说。后者因为如果使用了SecureBoot,win8。1会加密EFI分区,ubuntu作为一个未知的系统将无法安装无法引导。
设置完成后,可以在powershell中检查secureboot是否关闭(如果此时有win8系统运行的话),切记要以管理员运行,出现下图的false代表成功。
如果要是出现下图的情况,您可以不用按照这个教程来做,您的电脑不支持UEFI。
如果之前安装win8没有使用UEFI引导或者想重新安装win8。1,此时可以按照正常方式安装win8.1,不再赘述。安装中或者安装完运行磁盘分区,给即将安装的ubuntu预留磁盘容量(文件系统也就是/挂载建议40G,/home个人兴趣,还要内存大小×2的swap交换分区).在此为了方便在磁盘的尾部预留200G左右的空间。
分区可以在Win8安装中或者是管理-存储—磁盘管理中进行。
4. 安装ubuntu
在调研中没有找到EasyBCD支持UEFI引导的说明,所以采用更方便的U盘安装,将ubuntukylin 13。10 64bit使用UltraISO软碟通刻录到U盘中,在BIOS设置从U盘启动。如果你看到了如下的经典的画面,此时ubuntu并没有按照UEFI的引导安装,需要检查设置。
如果看到的是这个画面,ubuntu是按照UEFI引导安装的,这也意味着不管怎么说,在ubuntu安装的时候需要一个EFI分区。如果ubuntu是唯一的操作系统,需要新建一个EFI分区以供安装,像本文中的双系统法,ubuntu将会在win8.1安装中生成的EFI分区中添加信息。
对于N卡用户,也就是笔记本的显卡为NVIDIA,选择Install Ubuntu后有可能会进入黑屏的状态,原因是因为ubuntu不能很好的支持显卡的显示.因此需要实现添加信息,解决方案为:
1) 选择Install Ubuntu
2) 按键盘e,进入启动命令行配置的编辑模式,在quite splash后面添加nomodeset
3) 按F10重新启动
如此可以进入有显示的安装,需要特别指出的是,在安装成功后第一次进入系统的时候,也需要做同样的设置。进入系统之后修改grub中的默认启动项,作如下修改:
sudogedit /etc/default/grub
找到:
GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”
改成:
GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash nomodeset"
保存退出后执行sudo update-grub来更新启动器.
如上可以解决N卡的显卡驱动问题,进入正常的安装界面。
但是会发现一个让人有点担心的现象,就是在系统选择的时候看不到已有的windows系统,如下图所示(事后截图,所以已经有了ubuntu13。10)。
这个时候不要害怕,果断选择其他选项,手动分区,只要自己心中有数,不把windows的启动分区弄坏就一定没问题,分区设置如图所示。
可以看到,因为之前装过win8。1,磁盘中已经有了一个efi分区,所以新建/、/home和swap三个ubuntu需要的分区,每个分区给予相应的容量,然后果断点击现在安装,剩下正常安装不提。
安装完成重启,在grub引导选项中可以看到对应的信息。
第一个应该是默认版本的ubuntu,第二个是不同版本的ubuntu(估计考虑13.10并非LTS版,肯定有多次更新),第三个就是我们熟悉的windows了也就是win8.1。
也就是说,ubuntu仅仅识别了windows boot manager,并没有进一步的往下识别是什么系统,所以在安装的时候没有检测到已有的win8.1.ps,此时进入ubuntu需要按照N卡显卡的方式添加nomodeset。
5. 测试双系统
分别启动两个系统,win8。1通过windows boot manager可以正常启动,运行良好.本以为大功告成,可惜进入ubuntu的时候,图形界面X启动失败,提示如下:
No screens found,initx失败。不知道是为什么,在网上搜索也没有找到解决方案。如果有哪位大神能看到这个地方,跪求给予指点和帮助。
Ubuntu启动失败之后我决定用Legacy boot重新安装两个系统,于是我将BIOS设置成了Legacy Support,Legacy first,也就是先尝试Legacy boot,失败了再使用UEFI引导。
没想到的是,我随手打开电脑,电脑在Legacy boot失败后进入UEFI引导,然后进入了ubuntu并成功的运行起了图形界面。
万万没想到,我最后还是装好了win8.1和ubuntu的双系统,在之前的过程中遇到的各种错误都找到了原因和解决方案。对于最后一个错误,找到了一个解决方案但是找不到原因。不过除了开机画面会出现两遍,也没什么不好.
以上就是双系统安装的全过程,耗时一天多,参考资料很多,有用的如下:
6. 参考资料
[1] UEFI boot 和 Legacy boot 区别
http://hi。
[2]安装win8和ubuntu12.04双系统
http://blog。csdn。net/koffuxu/article/details/8845922
[3] Installing Ubuntu Quickly and Easily via Trial and Error
https://help。ubuntu。com/community/UEFI#Identifying_if_the_computer_boots_the_HDD_in_EFI_mode
[4]纯小白 EFI引导下安装 win8+Ubuntu双系统
http://forum.ubuntu。org。cn/viewtopic.php?t=446557
[5]ubuntu安装时N卡黑屏处理
http://blog.csdn。net/sunjiajiang/article/details/7745408
http://blog。
在经历了非常折磨的一个多星期之后(http://tieba。baidu。com/p/2804072264?pid=44194854181&cid=0#),终于完成了windows 8。1和ubuntu的双系统.立贴记录经过,帮助Lenovo和Sony的童鞋们,摆脱纠结.0。 开篇首先说明两个问题— 之所以搞了这么久,是因为Lenovo锁定了EFI启动的文件路径,ubuntu安装在EFI分区的文件会被直接无视。所以本文最后会提到替换efi文件,参考了(http://benyouhui。 预装的Windows 8.1是GPT分区+EFI引导,所以ubuntu必须是EFI方式安装,原因如下:— Legacy方式安装的ubuntu不会在启动grub时挂载EFI分区,而windows 8的启动文件是在EFI分区里的,所以Legacy方式的ubuntu是不能引导EFI方式的Windows 8的。有的话请告诉我,谢谢!1。 BIOS设置- 关闭secure boot,这个是微软的验证,用于禁止其他操作系统的启动。虽然ubuntu 12.10开始支持secure boot,但是显然我手头的联想并没有更新License。如果不关闭secure boot,最终(已经安装ubuntu,并替换引导文件)会有下面这个华丽的界面.— Thinkpad启动时按F1(或者按Enter,再按F1),就可以进入BIOS。在Security下,找到secore boot,Disable就可以了。— 在Start选项下,默认UEFI Only,不用改,因为ubuntu就是EFI的.CSM Support是No,因为不用兼容Legacy。官网上说需要选Yes,但是我的机器上不用。3。 安装ubuntu- Windows下刻录ubuntu 13。10 64位(32位的不支持EFI)到USB里。我用的是UltraISO,可以下到绿色版.注意UltraISO直接打开ubuntu的iso文件可能不正常,会只有EFI分区,没有数据分区。解决办法是:a)在ubuntu的iso上点右键,打开方式,Image Mount什么的,也就是把这个iso加载成虚拟光驱.b)然后在UltraISO里面,选打开光驱,这样加载的就是正确的了。c)某个菜单下选“写入硬盘镜像",写到USB里就行了。— 开机的时候按F12,打开Boot Menu,选USB HDD— 看到EFI模式的grub启动菜单,注意EFI模式的grub和Legacy的grub是不一样的。我们要用EFI模式的.EFI:Legacy:— 选择Try ubuntu,这步是为了找到EFI分区到底是那个,已知的话可以直接选Install ubuntu。— 进入之后,打开gparted:- 这里看到,我的/dev/sda2是预装的EFI分区。特点:FAT32格式,Flags是boot— 怎么确认呢?打开terminal(Ctrl+Alt+t),像下面这样,建一个文件夹,把我的sda2挂载出来,然后用ls看到这个分区里面有BOOT,有EFI,说明确实是我的EFI分区。记住了,我的EFI分区是/dev/sda2,你需要确定你自己的。如果gparted识别了你的USB,那么你的硬盘可能会变成sdb。- 接着就打开Install Ubuntu,在下面这个页面,ubuntu问你怎么安装,请选Something else。— 关于分区注意:刚才那个EFI分区(我的是/dev/sda2),需要Use as:EFI boot partition,如果你的显示Type不是efi,需要点这个分区,点change,像下面这样修改。- 然后给ubuntu分配空间,主要有两部分:a)我的/dev/sda5,格式是ext4,挂载到 / 。这个首先要有freespace,然后点+,然后选大小(记得留swap的空间),选主分区,从起始点开始,选挂载到 / 。b)剩下的空间(4G—8G,一般不小于你的内存大小),新建一个swap分区(我的是sda7):选大小,选逻辑分区,从起始点开始,挂载到swap。— 三个条件:有efi,有 / ,有swap,就可以安装了。这里 / 下包含了/boot,/home,/opt等等,也有人为这几个单独建立分区,可以的,不过我建议等你懂了之后下次再试吧。4。 安装完之后,系统重启,一般来说会直接进入windows,就好像ubuntu不存在一样.原因如下:- Lenovo支持EFI,但是不支持自动检索可用的启动项,所以虽然EFI分区里面有ubuntu的启动项,但是会被无视。— 启动顺序:a)/EFI/Boot/LenovoBT。EFI,显示下面的logo:b)/EFI/Boot/bootx64.efi,加载windows的boot loaderc)/boot/efi/EFI/Microsoft/Boot/bootmgfw。efi,启动windows— 这样3步之后,完全没ubuntu什么事.所以我们要打断这个顺序。5. 再次用USB启动,Try ubuntu,打开terminal.a)创建这个文件夹:sudomkdir /mnt/efib)挂载EFI分区(记得改成你自己的)到刚才的文件夹里:sudo mount /dev/sda2 /mnt/efic)打开一个Administrator权限的文件管理器:sudo nautilus /mnt/efid)打开EFI/Boot,看到里面有一个bootx64.efi,把它改名成bootx64。efi。old,以后不用它了e)打开EFI/ubuntu,里面有一个grubx64。efi,这个是grub的启动文件,把它复制到刚才的EFI/Boot里面,改名成bootx64.efi,顶替Windows的loader。— 显然,这样开机的时候,加载bootx64.efi时,实际加载了grub,这样就不会直接进入windows了。6。 开机时看到了grub,但是里面没有windows 8。- 进入ubuntu,打开terminal,输入sudo update-grub2- 看到下面这样:neil@neil-ThinkPad—T440s:/boot/efi/EFI/Boot$ sudo update—grub2Generating grub.cfg 。..Found linux image: /boot/vmlinuz—3。11.0—12-genericFound initrd image: /boot/initrd。img—3。11。0—12—genericFound Windows Boot Manager on /dev/sda2@/EFI/Microsoft/Boot/bootmgfw。efiAdding boot menu entry for EFI firmware configurationdone- 发现上面的windows boot manager直接被找到了.这也就是为什么之前替换了bootx64。efi,而不是bootmgfw。efi.我们需要留着bootmgfw.efi来启动windows。7。 到此,双系统已经可以正常工作了。EFI分区会自动挂载到/boot/efi下面,这样就是为什么EFI模式的ubuntu可以启动windows,而Legacy模式的ubuntu不能,因为Legacy模式的ubuntu不会挂载这个分区。- 如果有童鞋想要让windows在grub的第一位,可以这样打开grub的顺序文件夹:sudo nautilus /etc/grub。d/— 把 30_os—prober 改成 01_os-prober,‘01'可以是别的数字,只要是比header靠后,比其他考前就行。- 然后更新grub2:sudo update-grub2- 会发现Windows Boot Manager被排到前面了:neil@neil—ThinkPad-T440s:~$ sudo update—grub2Generating grub.cfg 。..Found Windows Boot Manager on /dev/sda2@/EFI/Microsoft/Boot/bootmgfw。efiFound linux image: /boot/vmlinuz—3.11。0—12—genericFound initrd image: /boot/initrd。img—3。11.0—12—genericAdding boot menu entry for EFI firmware configurationdone
展开阅读全文