以前都是在虚拟机和阿里云的服务器上玩Linux,这次鉴于需要在笔记本上装双系统。装双系统对配置的要求不高。毕竟每次只运行一个系统。我的笔记本是4G内存,混合硬盘(比较差那种,只有8G固态),4核的i7-5557U(基本上是最差的i7了),运行起来没啥问题,我同学4年前的win7,启动速度贼慢的那种都能装。 而且装上Ubuntu后,启动Ubuntu还是比较快的。

首先,大家在win10上安装Ubuntu的时候,需要先确认自己电脑的启动模式和硬盘的分区格式,这是前提。下面很多东西都是我的操作加阅读后的理解,如果有不对的地方还请大家指出。

Jun Zheng:BIOS, UEFI, MBR, Legacy, GPT等概念整理​zhuanlan.zhihu.com

这篇文章很不错,如果不想单纯的机械操作,那么就先把这篇文章理解了再说。下面部分概念摘自于此文。

首先是电脑的启动方式: 启动方式是指如何主板上的固件在开机自检后如何找到引导程序,有Legacy模式(BIOS + MBR)和UEFI模式(UEFI _+ GPT)。大家注意这里的对应即可。 UEFI是15年之后才比较火的一种启动方式,电脑启动速度快是它的一大特点。所以15年后很多电脑都是采用这种方式。而之前的主板都是采用Lagacy的模式。这是需要硬件支持的。先来看怎么查看自己主板的这两个属性。 (装上Ubuntu后,使用uefi启动得贼快。)

先看磁盘的分区格式:参考:https://jingyan.baidu.com/article/f3ad7d0f29874709c2345b4f.html

ad291fb1bc11b8f10ab03558f99ea6ed.png

然后是BIOS 参考: https://jingyan.baidu.com/article/a501d80c43958fec630f5e86.html

查看之后我的是UEFI模式。

然后看了一下我同学的电脑的,她的是比较古老的电脑,所以使用的是Legacy模式(BIOS + MBR),启动起来不是一般的慢。

cab8691778ddc98e255d87a86a283baf.png

。当我们得知上面的信息之后。我们就要以此为依据制作自己的U盘了。首先是下载Ubuntu系统。

Index of /ubuntu-releases/​mirrors.melbourne.co.uk

这里以往各个版本的Ubuntu的下载地址。

596e66238516fb26bd571c2f934a4d00.png

别人都说16.04很稳,所以我就选择了上面的这个文件进行下载。

下载完成之后,要把镜像写入进U盘。

所以,这里要下载个制作U盘的工具:推荐Rufus(因为它的选项比较正常,而且功能齐全其它的制作工具根本都不分什么MBR GPT之类的,我也不确定,所以选这个比较稳)。我下载了3.3版本,下载网址如下:

Rufus​rufus.ie

启动之后我的就是按照如下方式进行写入。注意分区类型和目标系统类型要和你刚才查到的是一样的,不然就可能出错,U盘是UEFI,硬盘是MBR的没问题。其实,感觉这里最好选用uefi和legacy两种兼容的方式写入Ubuntu的,但是都已经成功了,就不理它了。

记得选择Ubuntu镜像。

d11b71e7fd4b0db2df374097c5a01776.png

这里注意啊,格式化选项这里一定要选FAT32格式,虽然说NTF格式没有拷贝大小的限制,但是如果这里使用NTF格式的话,后面安装好后重启会进入GRUB, 输入exit后报NTF格式的错误!后面用图片显示。

制作U盘完成之后U盘内部的文件是下面这个样子的:

32bbb96e71e83e3a5dab7df22ad3b3dc.png

如果差不多就该就没啥问题了。

大家可以看 :系统无法引导安装?UEFI 和 Legacy 惹的祸!

BIOS中的UEFI和Legacy启动模式 · 小白装系统教程 · 看云 加深自己对这些方面知识的了解。

还记得以前安装windows的时候,经常要把启动模式改为legacy,唉唉。

到现在,我们的前期操作就完成了。 然后是磁盘空间的分配。https://blog.csdn.net/s717597589/article/details/79117112/?tdsourcetag=s_pcqq_aiomsg 参考这位大哥的磁盘分配方式即可,我是直接拿了100个G出来,不用新建卷,就留空在那里即可。

然后到电脑BIOS的配置的修改。

首先,第一个:很重要的一个,修改boot security为 disable!如下图

e7a6cc39c7a0c79837b1e974dea474d2.png

这个一定要修改!不然电脑会不允许Ubuntu写入引导区域,也就是说你安装成功后,不能进入Ubuntu,出现的错误是:重启后出现error,还带有pci,ac什么之类的当时没拍照。这里有时会不能修改,需要设置一下上面的密码才能改。各个主板都不同,只能说大家尝试一下。

第2个: 我把boot mode改为了UEFI,这应该代表着我是使用UEFI的启动方式。而这里有个legacy的方式,应该代表着我的电脑也支持legacy启动方式。我觉得这个要和U盘得匹配,所以把它改为了UEFI。 这里注意一下,boot mode可以修改这个启动方式,而我的BIOS又是uefi和GPT的。 这个MBR和GPT似乎是可以直接修改的, https://blog.csdn.net/zougen/article/details/79552056 可以看这篇文章。 也就是说,我们现在有了一个新的理解,就是数据是以什么样的形式写入磁盘的,以GPT形式写入磁盘,或者以MBR形式写入磁盘? 删除数据后即可修改磁盘的分区格式? 嗯嗯,这些东西有点多,在这里就不扩展了,以后接触到再进行学习。

Win10一定要装在GPT磁盘上吗?MBR格式不行吗_百度知道​zhidao.baidu.com
15d4076973aac849adf9f5c9e01e7aee.png

Win10系统支持两种安装方式: 当BIOS中设置启动方式为传统方式(Legacy)时,Win10系统只能安装在MBR分区表的硬盘上。当BIOS中设置的启动方式为UEFI模式时,Win10系统只能安装在GPT分区表的硬盘上。 这里也可以加深我们的理解。

第3个:插入U盘后,把U盘的启动优先级调到最高,或者后面直接在boot menu中从usb启动。

下面这张图是配置了启动优先级,也就是说,如果插有usb,就从USB启动。如果没有,就向下寻找能启动的。Windows boot manager就是启动Windows的启动引导。(我是开机按f2进入这个BIOS设置界面的,我的笔记本是fn+f2,有的笔记本是直接f2。)

111da46861aff41624e7454816c7a417.png

下面是另一种方式:我按f12直接进入boot menu,然后选择我的U盘直接启动。

412fb6e93a3e2126e850a3360417e9b3.png

设置好之后就是重启电脑了。

启动之后,会进入到这个界面,然后点击install Ubuntu安装 注意!千万不要连网,连网会变得很慢,很麻烦。

e8e032f70fdf231e152472b109eabbaf.png

后面的我就不再一一上图了,可以参考:https://blog.csdn.net/s717597589/article/details/79117112/?tdsourcetag=s_pcqq_aiomsg 这位大哥的链接进行安装,这里主要是注意分区的设置和系统安装的引导盘的设置。

下面是我的设置

a645feec60e89d7e6bcf1249306e07a7.png

这里注意,有的时候会出现没有efi分区的选择的,这里我不确定是什么原因,可能是U盘制作没有uefi,或者电脑的boot mode没有选择选择uefi。

然后注意从efi的盘启动,即我的sdb6.

然后就没什么要注意的了。不出意外,安装好后重启应该是出现这个界面:(插着U盘也是进入这个界面)

8b2eec808b8afb75a1516fef1c9bd4f3.png

然后选择第一个就是启动Ubuntu,第三个就是启动Windows。

我们这种uefi方式的是不能使用easybcd来设置引导的。使用的话会报错:启动报错如下

afbf96b3528ae97010d80ad4d023de01.png

跳过之后 然后是添加Linux条目时全部为灰色,即不能选择,如下图:

c21994314bfd54c08f73f8c135201576.png

这里修改了boot mode之后也是不能改变它。

然后分享一下我遇到的问题:

问题1:在Ubuntu分好区之后,出现如下问题:

The partition table format in use on your disks normally requires to you create a separate partition for boot loader code. This partition should be marked for use as a “Reserved BIOS boot area” and should be at least 1MB in size. Note that this is not the same as a partition mounted on /boot.

If you do not go back to the partitioning menu and correct this error, boot loader installation may fail later, although it may still be possible to install the boot loader to a partition.

意思就是:

你的磁盘上使用的分区表格式通常需要为引导加载程序代码创建单独的分区。 应将此分区标记为“保留BIOS引导区域”,并且其大小至少应为1MB。 请注意,这与安装在/ boot上的分区不同。

如果您不返回分区菜单并更正此错误,则引导加载程序安装可能会在以后失败,尽管仍可以将引导加载程序安装到分区。

解决方法:

创建一个保留BIOS引导分区,大小至少1M,给个20M就没啥问题了。 保留BIOS引导分区就是 BIOSgrup。 我按照这个方法操作了,我的电脑不行。

问题2:系统磁盘分区的时候,空白分区之间夹有使用分区,怎么把着空白分区合在一起啊?也就是怎么合并分区?

参考:win10怎么合并硬盘分区没有扩展卷_百度知道

别人都说是右键扩展卷即可,我发现我的右键扩展卷是灰色的,也就是不可选,相邻分区没有空白分区,所以这里不能扩展。 即,扩展某分区的话必须相邻的地方有未分配的空间才可扩展,可以删除相邻分区,或者是采用无损分区软件来移动数据。

(这里 https://blog.csdn.net/qq_20545159/article/details/48349011 也可以证明此事实)

问题3:给Ubuntu一般分配多大的空间?

一般50-60G即可,自己以后熟悉了就指定怎么分合适了。

问题4:starting ntfs driver unable to start driver load error

5a7a37a4efb86cdfdadc32dccccb5868.png

这就是前面说的,u盘格式化成utfs格式,然后在这里报错了。这里是安装好Ubuntu之后,重启进入grub,然后单纯地显示 _ ,没有前面的Ubuntu和windows选择,然后我exit出来,然后就进入到这个界面了。

问题5:安装好后重启还是进入U盘启动界面,怎么办?

即重启后进入:

0661a0d972223239c2d98d9907e35a57.png

此时我们只需要按ESC,即可进入:

e73f89d51957687de6e9ddb32f501b01.png

也就是一个grub里面,此时按exit,即可进入:

5036ca20df0e181a7ee129ad1f4cfef9.png

boot option 。

此时我的是进入unknown device即可进入到选择Ubuntu和Windows的界面,也就是ok了。

不过后面是我的必须插着U盘才能启动Ubuntu,启动之后就可以拔掉了。解决方案没试出来,猜测可能是系统问题或者主板设置问题或者是什么其它问题。 大家可以参考。

感觉很多东西都是没有绝对的解决方案,或多或少可能是时间问题,版本不一样,或者电脑不一样,或者安装细节不一样等。

没错,有了前面的实践经验后,我们再来深入这个MBR和GPT,UEFI,Legacy这几个术语。逃避在这里是解决不了问题的。

主引导记录_百度百科​baike.baidu.com
2b75a1a0ba0b2e7b68da9d06f81f0abe.png

先来看MBR:

主引导记录(MBR,Main Boot Record)是位于磁盘最前边的一段引导(Loader)代码。它负责磁盘操作系统(DOS)对磁盘进行读写时分区合法性的判别、分区引导信息的定位,它由磁盘操作系统(DOS)在对硬盘进行初始化时产生的

下面参考:

https://www.bilibili.com/video/av9614341?from=search&seid=15799183592928720230​www.bilibili.com

特点:1.最大支持2TB的硬盘,2.最多有4个主要分区,可以把一个主分区变成扩展分区,扩展分区拥有无数个逻辑分区。

主引导记录是存在于驱动器开始部分的一个特殊的启动扇区内,这个扇区包含了已经安装的操作系统的启动加载器和驱动器的逻辑分区信息,目前来说,MBR是磁盘分区和启动的工业标准。

通常都是bios+mbr ,(u)efi+gpt 这样相互配合,其实不绝对,可以自由组合。

然后来看主引导记录的结构图:

f8314e31c1d582e634fda4249152df27.png

主引导记录只有512个字节的大小,第1-446个字节是用来调用操作系统的机器码的。

第447个字节-510个字节是分区表的位置。

第511和512个字节是主引导记录签名,也就是0x55和0xAA. 通过这种结尾方式判断从哪个引导设备进行引导。

关键是分区表。考虑到每个区可以安装不同的系统,主引导记录必须要知道我要将控制权交给谁。分区表的长度只有64个字节,里面分成4个项,每个项占16个字节,所以,一个硬盘最多只能分4个一级分区,又叫主分区。

58f3542388892832b3234f55a83207e1.png

在这16个字节中,包括了一个叫做主分区的扇区总数。这个总数决定了主分区的容量(也就是上面最后的size),也就是说,一个主分区的扇区总数不能超过2的32次方。即: 在这16个Byte中,第13,14,15,16 Byte是主分区的扇区总数,这决定了主分区的容量。一个主分区的扇区总数不能超过2的32次方,如果每个扇区为512个字节,那么单个分区的容量就不能超过2TB,再考虑到扇区的逻辑地址也是32位,所以单个硬盘可利用的空间最大也不超过2TB,这也就是为什么单碟超过2TB推荐用GPT格式的原因。 (这里我没算出来2TB???)

58b2f3aff8cbe90918a00a70bb33f817.png

(参考:磁盘分区原理:从MBR到GPT - 掘金)

然后再来看看维基百科里的说明:

主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区,是计算机开机后访问硬盘时所必须要读取的首个扇区,它在硬盘上的三维地址为(柱面,磁头,扇区)=(0,0,1)。在深入讨论主引导扇区内部结构的时候,有时也将其开头的446字节内容特指为“主引导记录”(MBR),其后是4个16字节的“磁盘分区表”(DPT),以及2字节的结束标志(55AA)。因此,在使用“主引导记录”(MBR)这个术语的时候,需要根据具体情况判断其到底是指整个主引导扇区,还是主引导扇区的前446字节。(这里不知道大家对硬盘的三维地址熟悉不?下面给两个机械硬盘的图让大家了解一下:

81b73234c6a600e407cb6357ccaf7791.png

然后是具体的盘面:

32cff2815e75822d787ba07f0743138f.png

下面时维基里的MBR图:可以和前面的对应,加深印象。

5316cabe515981b08cdcc57c0ef9440a.png

然后下面对分区表的说明感觉很不错:

硬盘分区表占据主引导扇区的64个字节(偏移01BEH--偏移01FDH),可以对四个分区的信息进行描述,其中每个分区的信息占据16个字节。具体每个字节的定义可以参见硬盘分区结构信息。下面是一个例子:

如果某一分区在硬盘分区表的信息如下

80 01 01 00 0B FE BF FC 3F 00 00 00 7E 86 BB 00

则我们可以看到,最前面的"80"是一个分区的激活标志,表示系统可引导;"01 01 00"表示分区开始的磁头号为1,开始的扇区号为1,开始的柱面号为0;"0B"表示分区的系统类型是FAT32,其他比较常用的有04(FAT16)、07(NTFS);"FE BF FC"表示分区结束的磁头号为254,分区结束的扇区号为63、分区结束的柱面号为764;"3F 00 00 00"表示首扇区的相对扇区号为63(小端序);"7E 86 BB 00"表示总扇区数为12289662(小端序)。

对于大于8.4G的现代硬盘,CHS已经无法表示, BIOS使用LBA模式,对于超出的部分,CHS值通常设为0xFEFFFF,并加以忽略,直接使用Offset 0x08-0x0c的4字节相对值,再进行内部转换。

然后来看GPT:

在MBR硬盘中,分区信息直接存储于主引导记录(MBR)中(主引导记录中还存储着系统的引导程序)。但在GPT硬盘中,分区表的位置信息储存在GPT头中。但出于兼容性考虑,硬盘的第一个扇区仍然用作MBR,之后才是GPT头

为了减少分区表损坏的风险,GPT在硬盘最后保存了一份分区表的副本

在GPT分区表的最开头,出于兼容性考虑仍然存储了一份传统的MBR,用来防止不支持GPT的硬盘管理工具错误识别并破坏硬盘中的数据,这个MBR也叫做保护MBR。在支持从GPT启动的操作系统中,这里也用于存储第一阶段的启动代码。在这个MBR中,只有一个标识为0xEE的分区,以此来表示这块硬盘使用GPT分区表。不能识别GPT硬盘的操作系统通常会识别出一个未知类型的分区,并且拒绝对硬盘进行操作,除非用户特别要求删除这个分区。这就避免了意外删除分区的危险。另外,能够识别GPT分区表的操作系统会检查保护MBR中的分区表,如果分区类型不是0xEE或者MBR分区表中有多个项,也会拒绝对硬盘进行操作。

在使用MBR/GPT混合分区表的硬盘中,这部分存储了GPT分区表的一部分分区(通常是前四个分区),可以使不支持从GPT启动的操作系统从这个MBR启动,启动后只能操作MBR分区表中的分区

下面参考《鸟哥的Linux私房菜》:

主板上如果有内置的网卡或者显卡时,该功能是否要启动与该功能的各项参数被记录到主板上面的一个称为CMOS的芯片上,这个芯片需要借助额外的电源来发挥记录功能,这也是为什么你的主板上有一个电池的缘故。那CMOS内的数据如何被读取和更新呢?按下BIOS建即进入名为BIOS的界面(一般f2),BIOS(basic input output system),是一套程序,这套程序是写死到主板上面的一个内存芯片中,这个内存芯片在没有通电时也能将数据记录下来,也就是说这块内存芯片为ROM。BIOS时系统在开机的时候首先会去读取的一个小程序。 但由于计算机更新得太快,所以BIOS程序需要更新,所以现代得BIOS通常时写入闪存(flash memory)或eeprom中。即可改变

BIOS会尝试调用存储设备中得开机程序,进一步进入操作系统当中

这本书对bios,mbr,引导加载程序(boot loader),内核文件讲解得非常形象,大家可以自行阅读。

参考:装机、做系统必备:秒懂MBR和GPT分区表-DIY,装机,硬盘,电脑 --快科技(原驱动之家)--全球最新科技资讯专业发布平台

所谓启动加载器,是一小段代码,用于加载驱动器上其他分区上更大的加载器。如果你安装了Windows,Windows启动加载器的初始信息就放在这个区域里——如果MBR的信息被覆盖导致Windows不能启动,你就需要使用Windows的MBR修复功能来使其恢复正常。如果你安装了Linux,则位于MBR里的通常会是GRUB加载器。

参考:Jun Zheng:BIOS, UEFI, MBR, Legacy, GPT等概念整理

安装Ubuntu的时候,会在ESP分区中建立EFI/Ubuntu子目录,并将EFI/ubuntu/grubx64.efi(grub bootloader)复制为EFI/boot/bootx64.efi。因为Grub本身会扫描磁盘上的分区并找到windows启动程序(bootmgr.efi),因此先装windows后装ubuntu仍能通过grub让windows启动。(可以在安装好的Ubuntu 的LRS_ESP卷内找到这两个启动程序 bootmgr.efi和 bootx64.efi)

通过上面两段话。我的理解是 Ubuntu在安装的时候会往启动代码里写入GUN GRUB的启动程序,然后GRUB可以找到 Windows和Ubuntu两个系统的启动代码,然后我们可以选择运行哪个系统的启动代码,然后后面就再去加载对应系统的启动代码。这个就和我们前面装载系统的时候的现象是一致的。

感觉这个理论知识找不到总结得很好理解得,所以再去看看别人得实践经验理解一下。

https://jingyan.baidu.com/article/47a29f243ed51fc0142399bc.html​jingyan.baidu.com

先看这个链接: 这说明了啥?GPT和MBR是可以相互转换的,由前面的理论基础可以得知,说白了,这个MBR和GPT其实就是一种磁盘数据的读取协议,告诉你该怎么启动磁盘里面的系统,然后磁盘里面的分区情况是怎么样的。 所以,只要我把磁盘的数据全部清空,然后再以另一种方式来组织这个磁盘就ok了。 而链接最后说到GPT转MBR不需要删除硬盘数据,我猜想是因为GPT内置了MBR,所以把GPT多余的东西删掉了就行了。

磁盘分区原理:从MBR到GPT - 掘金 这里从代码的角度来描述了MBR和GPT,感觉和前面的模型是一样的,感觉现在自己对这个MBR和GPT了解了基本了。

这里有一张系统对GPT的支持情况:

0f0e3627cc22eb31001206526f3685f6.png

大家可以了解一下,我只能说有那么一回事,具体对不对我也不确定。

装双系统是个坑,小白勿入。装好一台不代表就会,更多的只是机械式的模仿操作。所以这里只是一种情况。里面有太多的坑了。不同的主板很多设置都不同,有我们不知道的东西。不仅仅需要理论的理解基础,还需要大量的实操经验,毕竟这些东西都是人家几十年才弄出来的,不是你一下子就能全部理解的。

上面可能会有许多和大家实际情况不符的地方,所以大家看和自己的情况符不符合再说。

最后分享一个操作:

https://blog.csdn.net/Anders_Zhuo/article/details/8838215​blog.csdn.net

也就是不需要每次操纵啥的都需要输入密码,直接使用root形式登录即可。我觉得吧,自己玩Ubuntu不需要密码这东西,自己理解就好。人家服务器,公司的才需要这个,所以我一般都是root进行操作的。

欢迎交流讨论。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐