我有一台运行 Windows(带 BitLocker)的笔记本电脑,用于工作。我希望能够使用外部 SSD(通过 USB 连接)启动 Ubuntu,而无需触及现有 Windows 配置中的任何内容。我已经听说了运行实时系统的建议,可能还会实现这一点,但经过一番挖掘,我相信有可能实现我想要的。以下是我所做的:
- 将 Ubuntu 20.10 下载到 USB 驱动器上
- 使用此 USB 启动并选择“安装”插入我的外部 SSD,选择它作为使用整个磁盘进行安装的目标,并作为引导加载程序的安装位置。逻辑是,如果我在启动时插入 SSD,它可以从那里启动,如果没有,则未更改的 Windows 引导加载程序将发挥作用。当我想启动 Ubuntu 时,我准备按 F9 选择备用启动设备
- 安装完成后,我拔下 U 盘,重启,按 F9 键,启动 Ubuntu - 到目前为止一切顺利
- 关机,拔下 SSD,开机……只看到 grub 命令提示符。经过一番挖掘,
exit
我终于可以启动 Windows - 我使用 Windows 魔法将我系统上的引导加载程序恢复到原始状态(即重新启动时不按任何键,也不插入任何外部媒体,直接进入 Windows)。
总之,任务没有完成,因为我无法在内置 SSD 不受影响的情况下有选择地启动。我的外部 SSD 上仍然安装有 Ubuntu,我非常想启动它,但我被卡住了。我想做的事情可行吗?如果可以,我该怎么做才能通过使其可启动来挽救外部 SSD 上的安装,或者以完全不影响集成 (Windows) SSD 的方式执行安装?实现后者的唯一可靠方法是在安装时物理移除内部 SSD 吗?
答案1
我建议您遵循以下步骤:
从工作笔记本电脑中取出内置硬盘。插入装有 Ubuntu 安装程序的 U 盘,然后使用 Ubuntu Live 启动。将外置硬盘插入要安装 Ubuntu 的位置。从 U 盘将 Ubuntu 安装到外置硬盘上。
安装包含将 UEFI 与 Ubuntu 结合使用的实用程序的启动修复。
关闭笔记本电脑。
从外部 HD 启动
安装启动重新配对并执行它,您会在互联网上找到帮助您在 Ubuntu 中配置 UEFi 的方法。
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install boot-repair
现在您可以关机了。连接内置硬盘和外置硬盘。使用 F12 启动以配置 uefi,以便也使用 Ubutnu 外置硬盘中的 Windows 10 uefi 和 efi。
重启。从 Ubuntu 外部硬盘启动。
现在开始使用 Virtual Box 从 Ubuntu 进行 Windows 10 内部安装的神奇操作。
您需要做的是所谓的“创建原始磁盘”文件,该文件指向现有硬盘。稍后,您将使用该文件创建一个新的 Virtual Box 虚拟机,然后使用现有安装从 Ubuntu 启动 Windows 10。不要忘记在 Virtual Box 虚拟机配置上单击 UEFI 选项。
下面是从 Ubuntu 映射到 /dev/nvme0n1 的现有硬盘创建原始文件虚拟硬盘的示例:
VBoxManage internalcommands createrawvmdk -filename /home/luis/virtualmachines/Windows10/windows10.vmdk -rawdisk /dev/nvme0n1 -relative
这些只是一点点帮助。您可能会发现您可能需要使用 sudo 来使用 Virtual Box,但经过一些讲座和几个小时的努力,您可能会找到让普通用户使用它的方法。
答案2
我通过以下方式解决了这个问题这些步骤由...提供ptetteh227. 这基本上就是奥尔德弗雷德上面建议过,但我需要详细信息。这些步骤是为 Ubuntu 15.10 提供的,但将它们应用于 Ubuntu 20.10 时效果完美。请注意,我没有遵循“为 Ubuntu 创建自定义启动项以指向外部硬盘上的 efi”的步骤,因此我无法确定它们的持续有效性。
如果您不想点击上面的链接,请按照以下步骤操作:
将 Grub 安装到已安装 Ubuntu 的外部硬盘上
启动 Ubuntu live USB 并连接外部硬盘。
列出所有设备的分区:
lsblk
从 的结果中
lsblk
,识别外部硬盘的 linux 分区和 efi 分区,即/dev/sdXY1
和/dev/sdXY2
。将XY1
和替换XY2
为您自己的分区名称。特殊挂载linux分区:
sudo mount /dev/sdXY1 /mnt
挂载关键虚拟文件系统:
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
chroot
进入您挂载的 Linux 分区:sudo chroot /mnt
您现在位于外部硬盘驱动器的 Linux 文件系统中。
创建 grub 安装其文件的目录:
mkdir -p /boot/efi
如果已经存在,则跳至步骤 8。
挂载步骤 3 中的 efi 分区:
mount /dev/sdXY2 /boot/efi
将 grub 安装到外部硬盘:
grub-install /dev/sdX
更新 grub:
update-grub
找到 efi 分区(又名“vfat”)的 UUID 并记下来:
blkid
或者
ls -l /dev/disk/by-uuid
现在我们需要告诉 fstab 在启动时挂载该 efi 分区:
cp /etc/fstab /etc/fstab.bak sudo nano /etc/fstab
将以下两行添加到 fstab,用步骤 11 中的 UUID 替换 xxxx-xxxx:
#my modified fstab to mount external hard drive's esp UUID=xxxx-xxxx /boot/efi vfat umask=0077 0 1
确保注释掉 Windows esp 的 fstab 条目,以免发生冲突。
退出 chroot:
exit
重新启动电脑:
sudo reboot
此时,当您重新启动并从 EFI 启动管理器中选择外部设备时,它将启动到 grub。
为了使 Ubuntu 在插入外部设备时自动启动,并且使 Windows 在未插入外部设备时自动启动,您必须为 Ubuntu 创建自定义启动项,以指向外部驱动器上的 efi:
为 Ubuntu 创建自定义启动项以指向外部硬盘上的 efi
从 Windows简易UEFI可以添加或删除启动项。
从 Linux启动管理器可以添加或删除启动项。
替代方案 #1– 使用 EasyUEFI
在 Windows 中下载 EasyUEFI,安装并运行。
选择EFI 选项管理器
选择创建“新条目”带有 + 符号
选择Linux 或其他操作系统并在描述框中为其命名
选择包含 grub 引导加载程序的外部驱动器上的 FAT32 EFI 分区
选择浏览
导航/efi/ubuntu/shimx64.efi或者/efi/ubuntu/grubx64
节省
将其移至启动项列表的顶部
重新开始
替代方案 #2- 使用efibootmgr
列出启动菜单项:
efibootmgr
创建启动项:
efibootmgr -c [-L label] [-d /dev/sdX]
例如:
efibootmgr -c -L myubuntu -d /dev/sdX
该启动项将自动成为第一个项。
/dev/sdX
是带有 grub 引导加载程序的外部硬盘驱动器。现在你可以重新启动,无需你的干预,Ubuntu 将在插入外部硬盘时自动启动。当未插入外部硬盘时,PC 将跳过我们的Ubuntu启动项到下一个项,可能是Windows 启动管理器。