admin 管理员组

文章数量: 887021

  我安装windows10和ubuntu16双系统,安装完后两个系统都无法进入,这就非常奇怪,因为我在物理机上安装过windows和ubuntu双系统,都是成功的,我安装的成功的那几次是ubuntu18和ubuntu20,所以我怀疑这跟版本也是有关系的。如果对ubuntu版本要求不是很高的小伙伴,可以使用18或者20版本,可以省去很多麻烦。

经过6次尝试,终于安装好了windows和ubuntu16双系统,第4次尝试是ubuntu16引导修复的技巧,第6次成功的方式和第4次的方法完全一样(把ubuntu16发行版换成了18发行版,换成20发行版应该也是没问题的),反正16版是有问题,不过完全是可以解决的,各位如果遇到了问题,把这篇博客看全,应该会有不小收获。

一、第一次尝试

修复了windows引导,但是ubuntu引导仍不可用

  本人亲身经历,windows系统是好的,然后安装ubuntu系统,在机械硬盘上划分出100G空间,进行分区,这里的分区,主分区、逻辑分区随便选,网上选哪一种都有成功的案例,问题并不是出在这里(当然,/boot尽量还是选逻辑分区),当你ubuntu16系统安装成功以后,如果不出意外,在进系统时可能哪个系统都进不去。
  网上的教程大家都成功了,可能是教程中大家用的都是虚拟机吧,所以没那么多意外(多说一句,如果是安装ubuntu20的双系统,安装结束后可以正常进入系统,估计是因为ubuntu16的版本问题吧)。
  我分析一下我的为什么每次装双系统,都会破坏windows系统,我的电脑是128G固态硬盘+1T机械硬盘,windows10在固态上安着,ubuntu在我的机械上分出来的100G空间上安着,按说两者应该互相没有影响,但是我之前就发现了,使用EasyUEFI工具查看引导的时候,我的系统引导在D盘上,也就是我的机械硬盘分出来的第一个盘(但是它与我的ubuntu安装盘不是一个盘),我猜想,就算不是一个分区,引导在同一块大的机械盘上,也是会有影响的。
  进入PE启动盘,打开NTBOOT工具或者UEFI修复工具,进行修复引导,前一个相信大家都会用,后面一个,打开之后会让我们选择引导所在分区,这里我们可以打开DiskGenius硬盘工具,查看win10系统的ESP分区在那个盘上,再返回选择即可。后面又让我们选择windows所在根目录,注意,这里不能仅仅选一个磁盘分区,你要找到自己的系统盘,然后点击选择里面的“windows”文件夹,然后修复即可,完成后引导即被修复。
  此时,我们可以正常进入windows系统了,我们使用EasyUEFI将无用的启动项删除即可,但是我们又发现一个问题,安装好之后ubuntu启动项是存在的,但是在选择ubuntu后无法进入该系统,这又是什么情况?这刚装好的ubuntu引导也是坏的!
  查阅资料后发现,windows系统安装ubuntu会出现引导问题,原因是windows系统不希望有其他系统和windows系统共存。所以我们得自己作一个引导。接下来主要介绍两种引导,easyBCD引导和easyUEFI引导,如果你的系统之前没有装过双系统的话easyBCD是可以使用的,但是如果之前比如装了win10和win7双系统的话,你的电脑是微软uefi的引导,所以easyBCD会显示无法使用,而且进去软件之后也是无法添加新条目,会出现下图所示的情况,linux/BSD和Neogrub都是灰色的。这种情况就只能使用easyUEFI引导了,也不麻烦。

  这里我惊奇的发现,这无法启动的ubuntu启动项也在D盘,就是我原来的windows启动项那个位置,但是我在做ubuntu系统的时候,我确定我为ubuntu系统分配了大小为300M的/boot区,并且将ubuntu引导挂载到了该分区,很奇怪,我不知道它为什么把引导装在了D盘中(虽然奇怪,但这至少证明了我之前的猜测是对的,找到了问题的根源所在)

  接下来我们只需要删掉原来的引导重新做引导就好,新建项目,选择我们的引导分区,选择下面的引导(这里奇怪的事情又发生了,机械盘、U盘都不能选,只能选择C盘的引导分区,我的ubuntu引导明明是安在了机械盘中,但是它偏偏就是出现在了C盘中!而且windows引导也出现在了这里,当然这个windows启动项是不能用的,我是用NTBOOT修复的引导才是能用的):

二、第二次尝试

  没出意外,果然ubuntu还是不行,我们可以看到,我将ubuntu16启动项引导放在了第一个位置,windows10放在了第二个,在意料之中,电脑跳过ubuntu系统,直接进入了windows,完全没有识别到ubuntu。

  easyUEFI不认ubuntu划分的磁盘,它识别不到我们当初划分的ubuntu的/boot区,那我们尝试一下使用ubuntu启动盘修复一下引导。
  进入ubuntu启动盘,选择试用ubuntu选项,依次运行如下命令:

sudo mount /dev/sdXXX /mnt
sudo mount /dev/sdXX /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
grub-install /dev/sdX
update-grub  
sdX = disk / 安装Ubuntu的硬盘
sdXX = efi partition / EFI 分区
sdXXX = system partition / Ubuntu系统所在分区
比如说,我安装	Ubuntu的硬盘为/dev/sda(=disk),
		EFI分区在/dev/sda4( efi partition),/boot ==> /dev/sda4
		Ubuntu系统所在分区为/dev/sda5( efi partition),/ ==> /dev/sda5
		那么,上面的命令就应该为:
sudo mount /dev/sda5 /mnt
sudo mount /dev/sda4 /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
grub-install /dev/sda
update-grub  

  运行过之后,它果然没让我失望,还是不能进入ubuntu系统。

三、第三次尝试

  这次我是真的emo住了,windows常用引导修复工具无法识别ubuntu系统的引导盘,ubuntu引导修复工具一点用都没有,这次我决定使用ubuntu引导修复工具Boot Repair,实在不行就重新安装ubuntu,选择与windows共存模式好了,反正这也不破坏windows系统,只是破坏了一个引导而已,我选其他选项,自己划分区间安装,这不也是破坏了windows引导吗?

1、打开终端,终端快捷键是Ctrl+Alt+T,输入命令,添加boot-repair所在的源:

sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update

2、待上面命令执行完毕后,继续输入以下命令,安装boot-repair并且开启boot-repair:

sudo apt-get install -y boot-repair && boot-repair


点击Recommended repair,过几分钟重启就行了。

3、如果上面的命令成功了,那皆大欢喜,如果没有,运行以下命令:

sudo recommended repair

  如果有些人不小心点击了Create a BootInfo summary的话,那你的开机启动界面将会出来一大堆你以前没见过的东西。
  那样的话,你可以输入名令:cd /boot/grub
  接着输入sudo gedit grub.cfg,打开grub.cfg文件后,通过搜索找到windows,然后把下面这些删去就和原来一样了。

### BEGIN /etc/grub.d/25_custom ###

menuentry "efi/EFI/Boot/bootx64.efi" {
search --fs-uuid --no-floppy --set=root d000ed6a-5303-40aa-a517-af50e807c0e9
chainloader (${root})/efi/EFI/Boot/bootx64.efi
}

menuentry "efi/EFI/ubuntu/MokManager.efi" {
search --fs-uuid --no-floppy --set=root d000ed6a-5303-40aa-a517-af50e807c0e9
chainloader (${root})/efi/EFI/ubuntu/MokManager.efi
}

menuentry "Windows UEFI recovery bootmgfw.efi" {
search --fs-uuid --no-floppy --set=root A603-846C
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Windows Boot UEFI recovery" {
search --fs-uuid --no-floppy --set=root A603-846C
chainloader (${root})/EFI/Boot/bkpbootx64.efi
}

menuentry "EFI/ubuntu/MokManager.efi sda2" {
search --fs-uuid --no-floppy --set=root A603-846C
chainloader (${root})/EFI/ubuntu/MokManager.efi
}

menuentry "Windows UEFI recovery LrsBootmgr.efi" {
search --fs-uuid --no-floppy --set=root 7607-5674
chainloader (${root})/efi/Microsoft/Boot/LrsBootmgr.efi
}

menuentry "Windows Boot UEFI recovery bkpbootx64.efi" {
search --fs-uuid --no-floppy --set=root 7607-5674
chainloader (${root})/efi/Boot/bkpbootx64.efi
}
### END /etc/grub.d/25_custom ###

四、第4次尝试

  我换了WIFI,又换了手机热点,结果都显示失败,第一句命令成功,显示结果如下:

Website: https://sourceforge/p/boot-repair/home
 More info: https://launchpad/~yannubuntu/+archive/ubuntu/boot-repair
Press [ENTER] to continue or ctrl-c to cancel adding it

gpg: keyring `/tmp/tmp4vdd42nz/secring.gpg' created
gpg: keyring `/tmp/tmp4vdd42nz/pubring.gpg' created
gpg: requesting key 60D8DA0B from hkp server keyserver.ubuntu
gpg: /tmp/tmp4vdd42nz/trustdb.gpg: trustdb created
gpg: key 60D8DA0B: public key "Launchpad PPA for YannUbuntu" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
OK

  运行第二句命令,它无法定位到boot-repair包:

ubuntu@ubuntu:~$ sudo apt-get install -y boot-repair
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package boot-repair
ubuntu@ubuntu:~$ 

  真的是很头痛!我们继续想办法解决,进入ubuntu启动盘系统中试用ubuntu,打开终端:

sudo add-apt-repository ppa:yannubuntu/boot-repair #回车确认添加
sudo apt-get update
sudo apt-get install boot-repair
boot-repair

  点击recommanded repair等待修复即可。
  如果出现E: Unable to locate package boot-repair的问题,修改一下ppa的源即可
  进入目录修改文件

cd /etc/apt/sources.list.d/
sudo gedit yannubuntu-ubuntu-boot-repair-xenial.list 

修改文件内容为如下(把xenial改成bionic,即更换一个ubuntu的发行版本号从16.04的xenial到18.04的bionic,推测可能是作者更新时遗漏或者什么问题)

deb http://ppa.launchpad.net/yannubuntu/boot-repair/ubuntu bionic main
# deb-src http://ppa.launchpad.net/yannubuntu/boot-repair/ubuntu bionic main

再次重新安装:

sudo apt-get update
sudo apt-get install boot-repair
boot-repair

经过开机重启,我们又进入了ubuntu试用版

  把xenial改成bionic,将ubuntu从16版本改为18版本,果然可以正常安装boot-repair了,这次我如愿以偿地看到了boot-repair界面,并进行修复。

在这里我只想说16版本的是真有毛病,你在虚拟机上怎么安装都没事,但是装双系统的话,如果对版本没有硬性要求,尽量装18或者20的。

  安装成功代码如下:

ubuntu@ubuntu:/etc/apt/sources.list.d$ sudo apt-get install boot-repair
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  boot-sav boot-sav-extra gawk glade2script glade2script-python3 libsigsegv2
  pastebinit
Suggested packages:
  boot-info mdadm os-uninstaller zfsutils-linux gawk-doc
The following NEW packages will be installed:
  boot-repair boot-sav boot-sav-extra gawk glade2script glade2script-python3
  libsigsegv2 pastebinit
0 upgraded, 8 newly installed, 0 to remove and 202 not upgraded.
Need to get 1,079 kB of archives.
After this operation, 4,829 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://archive.ubuntu/ubuntu xenial/main amd64 libsigsegv2 amd64 2.10-4 [14.1 kB]
Get:2 http://ppa.launchpad/yannubuntu/boot-repair/ubuntu bionic/main amd64 glade2script-python3 all 3.2.4~ppa23 [35.9 kB]
Get:3 http://archive.ubuntu/ubuntu xenial/main amd64 gawk amd64 1:4.1.3+dfsg-0.1 [398 kB]
Get:4 http://ppa.launchpad/yannubuntu/boot-repair/ubuntu bionic/main amd64 glade2script all 3.2.4~ppa23 [2,204 B]
Get:5 http://ppa.launchpad/yannubuntu/boot-repair/ubuntu bionic/main amd64 boot-sav all 4ppa171 [456 kB]
Get:6 http://archive.ubuntu/ubuntu xenial/main amd64 pastebinit all 1.5-1 [14.6 kB]
Get:7 http://ppa.launchpad/yannubuntu/boot-repair/ubuntu bionic/main amd64 boot-repair all 4ppa171 [13.8 kB]
Get:8 http://ppa.launchpad/yannubuntu/boot-repair/ubuntu bionic/main amd64 boot-sav-extra all 4ppa171 [145 kB]
Fetched 1,079 kB in 6s (161 kB/s)                                              
Selecting previously unselected package libsigsegv2:amd64.
(Reading database ... 196349 files and directories currently installed.)
Preparing to unpack .../libsigsegv2_2.10-4_amd64.deb ...
Unpacking libsigsegv2:amd64 (2.10-4) ...
Setting up libsigsegv2:amd64 (2.10-4) ...
Processing triggers for libc-bin (2.23-0ubuntu11.2) ...
Selecting previously unselected package gawk.
(Reading database ... 196357 files and directories currently installed.)
Preparing to unpack .../gawk_1%3a4.1.3+dfsg-0.1_amd64.deb ...
Unpacking gawk (1:4.1.3+dfsg-0.1) ...
Selecting previously unselected package glade2script-python3.
Preparing to unpack .../glade2script-python3_3.2.4~ppa23_all.deb ...
Unpacking glade2script-python3 (3.2.4~ppa23) ...
Selecting previously unselected package glade2script.
Preparing to unpack .../glade2script_3.2.4~ppa23_all.deb ...
Unpacking glade2script (3.2.4~ppa23) ...
Selecting previously unselected package boot-sav.
Preparing to unpack .../boot-sav_4ppa171_all.deb ...
Unpacking boot-sav (4ppa171) ...
Selecting previously unselected package boot-repair.
Preparing to unpack .../boot-repair_4ppa171_all.deb ...
Unpacking boot-repair (4ppa171) ...
Selecting previously unselected package boot-sav-extra.
Preparing to unpack .../boot-sav-extra_4ppa171_all.deb ...
Unpacking boot-sav-extra (4ppa171) ...
Selecting previously unselected package pastebinit.
Preparing to unpack .../pastebinit_1.5-1_all.deb ...
Unpacking pastebinit (1.5-1) ...
Processing triggers for man-db (2.7.5-1) ...
Processing triggers for gnome-menus (3.13.3-6ubuntu3.1) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu5.2) ...
Processing triggers for bamfdaemon (0.5.3~bzr0+16.04.20180209-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Processing triggers for mime-support (3.59ubuntu1) ...
Setting up gawk (1:4.1.3+dfsg-0.1) ...
Setting up glade2script-python3 (3.2.4~ppa23) ...
Setting up glade2script (3.2.4~ppa23) ...
Setting up boot-sav (4ppa171) ...
Setting up boot-repair (4ppa171) ...
Setting up boot-sav-extra (4ppa171) ...
Setting up pastebinit (1.5-1) ...
ubuntu@ubuntu:/etc/apt/sources.list.d$ 

  修复成功日志如下:

Boot successfully repaired.

Please write on a paper the following URL:
http://paste.ubuntu/p/v7k7vSjkmx/


In case you still experience boot problem, indicate this URL to:
boot.repair@gmail or to your favorite support forum.

You can now reboot your computer.
Please do not forget to make your UEFI firmware boot on the Ubuntu 16.04.7 LTS entry (nvme0n1p1/efi/ubuntu/shimx64.efi file) !
If your computer reboots directly into Windows, try to change the boot order in your UEFI firmware.
If your UEFI firmware does not allow to change the boot order, change the default boot entry of the Windows bootloader.
For example you can boot into Windows, then type the following command in an admin command prompt:
bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi

五、第五次尝试

  我们可以看到boot-repair已经将ubuntu系统修复成功了,但是不出所料,电脑还是找不到ubuntu的引导,不管是使用命令行修复,还是使用boot-repair修复,我都试了一遍,网上大家都成功了,我的还是不行…
  好吧,这回我们重新安装ubuntu试试吧,把ubuntu安装选项选择与windows系统共存看看会怎么样。
  一点意外都没有,电脑仍然无法识别ubuntu引导,但是这里查看到它的引导确实是在的,我这次在安装ubuntu的时候,没有选择其他选项,所以这次没有破坏NTBOOT修复的win10引导,开机后直接跳过ubuntu、windows boot manager启动项,进了第三个启动项——win10。有了意外收获,安装ubuntu时选择与windows boot manager共存不会影响NTBOOT修复的引导,应该会把windows boot manager废掉,但是这个引导本来就是废的,所以也相当于什么都没发生。


  我在EasyUEFI中将ubuntu引导删除,再继续回到ubuntu启动盘中尝试修复引导,看结果如何。

六、第六次尝试

这次终于成功是windows和ubuntu16双系统共存,还是那句话,一般装系统装18或者20版本的ubuntu就没有那么多事儿了。

  我们现在的系统,是选择ubuntu与Windows boot manager共存模式安装的ubuntu16系统,然后结果是第五次尝试的结果,我又用了第四次尝试的方式,完全重复了一遍,结果就成了。
  大家有兴趣可以回去看第四次尝试就好了,祝各位好运。

七、总结

  防止以后我还会遇到此类问题回来看,也方便各位直接使用指令修复,我在这里直接做了总结如下:
  直接使用ubuntu发行版16,会出现无法下载boot-repair的问题,我们只需要将16换成18即可,同时我在使用其他选项安装的ubuntu中,虽然可显示修复ubuntu引导,但实际上是无法进入系统的,后来我在“与Windows boot manager”选项中安装的ubuntu使用同样的方法,完成安装。
  当然,你也可以制作ubuntu18的启动盘,进入18试用界面修复,就不需要换成18了,但是下面的指令也不麻烦,建议和我做的一样就好。

(一)进入目录修改文件

cd /etc/apt/sources.list.d/
sudo gedit yannubuntu-ubuntu-boot-repair-xenial.list 

(二)将16发行版换为18发行版(你直接用ubuntu18的启动盘修复引导就可以省略这一步了)

  实质是将xenial改成bionic,其他不用动。

deb http://ppa.launchpad/yannubuntu/boot-repair/ubuntu bionic main
# deb-src http://ppa.launchpad/yannubuntu/boot-repair/ubuntu bionic main

(三)添加boot-repair所在的源,并安装它

sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair

(四)成功打开ubuntu引导修复工具


  点击修复即可,再次重启电脑,没意外的话,你的电脑应该是可以了,祝大家好运!!!

本文标签: 双系统 Windows