再次折腾双系统

动机

想把Ubuntu装到移动硬盘里

环境

支持UEFI和GPT的电脑

一些问题及其解决

启动盘(bootable USB stick)进不去

症状:在选择引导项的界面选择启动盘的时候,闪一下之后,又回到选择界面

解决:需要在BIOS里面关闭安全启动(secure boot)

可能引发的问题:再次进入Windows的时候需要输入Bitlocker密码,所以建议安装之前暂时把BitLocker禁用了

Bitlocker recovery:Enter the recovery key for this drive

如何实现双系统之间完全独立(即插即用)

症状:在安装Ubuntu的时候,虽然有新建、选择EFI分区的选项,但是实际安装的时候会无视这个选项,并把启动项安装到检索到的第一个EFI分区(原本Windows用的EFI分区),于是实际上两个系统共用了一个EFI分区:当你在开机并选择Ubuntu启动项的时候,实际上是从你的C盘的EFI分区引导到移动硬盘里面的Ubuntu,如果你换一台电脑,就看不见这个启动项了,自然也不能引导到移动硬盘里面的Ubuntu

解决:在安装Ubuntu的时候,先在Try Ubuntu环境下把除了移动硬盘以外的硬盘都禁用掉,再安装,就能把Ubuntu的启动项装到移动硬盘的EFI分区里了

具体操作如下

# SATA硬盘
echo 0 | sudo tee /sys/block/<如sda>/device/delete

# NVME硬盘
# 查看设备的PCI路径
realpath /sys/block/<如nvme0n1>
# 输出结果应该大致为 /sys/devices/pci0000:00/0000:00:0e.0/nvme/nvme0/nvme0n1
# 然后根据输出结果,将对应的NVME设备移除
echo 1 | sudo tee /sys/devices/pci0000:00/0000:00:0e.0/remove

亡羊补牢:如果你已经把Ubuntu按上去了,两个系统正在共用一个EFI分区怎么办?

在移动硬盘里面的空的EFI分区中新建引导文件

  • 进入刚刚装好的Ubuntu
  • 找到记下移动硬盘里面的EFI分区的UUID:sudo blkid | grep /dev/<移动硬盘里面的EFI分区>,或者用系统自带的Disk软件,找到对应的硬盘的分区的UUID
  • 修改/etc/fstab文件中挂载点/boot/efi对应的UUID至刚刚记下的移动硬盘的EFI分区的UUID:sudo nano /etc/fstab
  • 取消挂载Windows的EFI分区并挂载移动硬盘中空的EFI分区:sudo umount /boot/efi && sudo mount /boot/efi
  • 检查/boot/efi是否已经挂载到正确的分区(/dev/<移动硬盘里面的EFI分区>):lsblk | grep /boot/efi
  • 在移动硬盘(是设备!不是分区!)上安装grub:sudo grub-install --removable /dev/<移动硬盘>
  • 生成initramfs镜像:sudo update-initramfs -u -k all
  • 生成grub2配置文档:sudo update-grub
  • 重启
  • 检查挂载点/boot/efi是否挂载到了正确的分区:lsblk | grep /boot/efi

确认新的启动项能正确引导到Ubuntu后,复原旧的EFI分区

  • 如果第一个系统是同版本ubuntu,那么需要修正旧的EFI分区下的\EFI\UBUNTU\grub.cfg文件中的UUID即可,把它改回去指向第一个系统的根目录
  • 如果是其他的Linux系统,可以重启回第一个操作系统后使用grub-install重构它的EFI分区
  • 如果第一个系统是Windows,那么应该删除EFI分区下的整ubuntu目录和BOOT目录下的所有子文件,并把\EFI\Microsoft\Boot\bootmgfw.efi复制到\EFI\BOOT\Bootx64.efi(EFI文件系统不分文件名大小写)

参见:https://i-m.dev/posts/20200808-135558.htmlhttps://askubuntu.com/questions/1250199/move-bootloader-or-remove-efi-partition-in-second-drive

如何在Windows中访问EFI分区?请看下面文章中的删除Ubuntu开机引导部分

卸载Ubuntu双系统

安装好之后,启动项中并没有Ubuntu

症状:把Ubuntu正确装进移动硬盘之后(EFI分区也在移动硬盘里),发现启动的时候选择界面并没有出现Ubuntu的启动项

解决:UEFI仅支持特定类型接口的硬盘(IDE、SATA、NVMe、virtio),请检查你的移动硬盘接口类型

参见:https://www.virtualbox.org/ticket/14142

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据