OP要求“不涉及现有的Ubuntu安装”。如果您想从外部设备启动,而不仅仅是在其上安装Ubuntu,则需要解决安装程序错误,该错误会在内部驱动器上重写您的引导分区,并且无论在任何情况下都不会在外部设备上安装EFI引导分区。您告诉安装程序。
这是在Ubuntu 18.04、18.10和19.04中对我有效的方法。在Thinkpad T480和P50上测试,双启动Win 10和Ubuntu。我已关闭旧版启动。UEFI已被100%使用。我已经使用我的解决方案将Ubuntu和引导加载程序安装到USB记忆棒和驱动器上,至少安装了六次。
安装到第二个驱动器上很麻烦,因为ubuntu安装程序会使用它看到的第一个EFI分区,即内部硬盘驱动器上的分区,无论您尝试为EFI分区指定替代位置如何。因此,当您尝试将引导加载设备设置为目标USB驱动器时,将被忽略。这是一个相当老的错误,但是当我们进入19.04版本时,仍然存在。
https://bugs.launchpad.net/ubuntu/+source/ubiquity/+bug/1396379
摘要:要解决此问题,请在开始安装之前立即使用gparted编辑其标志来禁用内部EFI分区。然后安装程序将找不到它,并且该错误不会被触发。稍后,重新启用标志。这是一个微不足道的步骤。物理上断开内部驱动器几乎等同于逻辑,这当然也可以解决安装程序错误。
我采取的步骤:
开始安装之前:
您将需要标准的ubuntu live USB设备和要安装的目标驱动器。
以“先尝试”模式引导到Ubuntu live USB。
使用gparted(您可能必须先安装它,有时Ubuntu不会将它包含在活动磁盘上,尽管它已包含在18.04.1中):...
- 用GPT分区表重新分区目标外部驱动器。
制作一个500MB分区类型FAT32。您也可以为Ubuntu安装设置所需的分区。您可能会发现为所需的/分区加上标签很方便,因为在安装时,您将拥有三个驱动器:内部驱动器,实时映像安装程序驱动器和目标驱动器。
应用这些更新后,更改刚刚创建的500MB小型分区上的标志。右键单击小分区,然后单击“管理标志”。这些更改将立即执行(但请注意,您必须首先完成上一步实际上首先创建分区)勾选以打开启动,esp和隐藏状态。
安装
按照正常的ubuntu安装,您已使用活动磁盘USB映像启动。因此,您有两个USB设备:您的目标设备和活动磁盘USB驱动器。
编辑内部驱动器上的EFI分区标志,并取消选中在目标设备EFI分区上设置的相同的三个标志。
这是在gparted中进行标记编辑的简短视频:https ://youtu.be/sdgrmylH6pc
现在,当您安装时,安装程序将在目标设备上仅看到一个EFI分区。这是我在其他地方未见过的新颖的步骤。
开始安装ubuntu。继续操作,直到看到安装程序的磁盘设置选项卡。您当然希望在分区阶段使用完全手动的方法“其他”。
如果目标驱动器安装为sdc,而您创建的EFI分区为sdc1,则将引导加载程序安装到设备sdc上,而EFI分区将为sdc1。
滚动查找该分区。在“类型”列中应显示“ efi”。单击“更改”以确保:安装程序应显示“用作:EFI系统分区”。您实际上不会进行任何更改。无需格式化。
在分区中滚动时,请查看“类型”列。由于您关闭了内部驱动器EFI分区上的分区标志,因此内部驱动器上不应有EFI分区。当然,该分区仍然显示为FAT32分区。没关系。
您还将看到从其引导进行安装的活动磁盘的EFI分区,这没关系。
将所需的目标分区挂载为/(可能是sdc2),然后进行常规安装。
安装后
恢复内部EFI分区上的标志
安装后,重新启动到新安装。您将需要使用BIOS的“选择启动设备”选项。在我的Thinkpad上,F12是BIOS菜单此部分的快捷方式。
您应该在启动菜单中看到几个选择,其中之一是外部驱动器。一些BIOS菜单将默认标签显示为“ ubuntu”,因此多次看到它会有些混乱。有时更改引导设备会导致BIOS引导重新启动(这在我的Thinkpad上进行),看起来好像发生了一些不好的事情,但是可以。
稍后,当您在没有USB记忆棒引导的情况下,BIOS应该足够聪明,可以还原到最后一个已知的良好EFI设备(您的内部设备),但是您可能需要手动重新选择EFI启动选项。
提示:重新标记USB引导条目,以避免重复的“ ubuntu”条目
如果您得到重复的标有ubuntu的EFI引导选项,则可以对其进行修复。重新标记EFI菜单选项非常方便,但有些棘手。
确保您启动到外部驱动器上的安装,然后
sudo efibootmgr -v
您从列表的第一行启动。
记下用于引导的文件名,并记下分区号。我的第一个条目的输出是:
HD(1,GPT,...) .... File(\EFI\ubuntu\shimx64.efi)
然后看看这个线程:https : //www.kubuntuforums.net/showthread.php/68851-Labels-on-UEFI-Boot-Entries-using-efibootmgr-L
我这样做是为了重新标记我的“ owcUbuntu”:
efibootmgr -c -d /dev/sdb -p 1 -L owcUbuntu -l \\EFI\\ubuntu\\shimx64.efi
知道引导驱动器是sdb,并且由于我首先创建了EFI分区,所以-p参数的值是1。注意:请检查实际的引导磁盘是什么:)使用gparted或df
一些“怪异”的东西。正确完成后,此过程将不会影响内部驱动器上现有的引导加载程序。但是,当您连接了外部驱动器并从内部驱动器正常启动时,grub更新程序将检测到外部驱动器上的ubuntu安装并将其添加到可引导选项列表中。这可能会造成一些混乱,但是重新标记引导项(如上)是有帮助的