我得到了其中一台默认安装了 64 位 Intel 处理器和 Windows 8 64 位的笔记本电脑。
首先,我想在这台机器上安装 32 位 Ubuntu 14.04。
我最终了解到我应该从 BIOS 中关闭 SecureBoot 以及 FastBoot (Is disabing Secure Boot required for Ubuntu 14.04 dual-boot with Windows 8 UEFI);然后我尝试使用 UEFI 启动 USB 拇指驱动器(我不记得它是否有效);最终启动了 live USB 14.04 32 位。
我首先尝试保留 Windows 恢复分区,并且只安装在主分区上,但在所有这些都失败之后,我擦除了磁盘并设置了一个新的分区表 - 我可以安装 Ubuntu 32 位。显然成功了-但是在那之后尝试从安装启动时,我会得到:
Reboot and select proper Boot Device
or Insert Boot Media in selected Boot device
干净的 Ubuntu 13.04 安装后的“重新启动并选择正确的启动设备”错误中也注意到了这一点- 在找到Ubuntu 的干净安装不会启动 [重新启动并选择正确的启动设备]之后,我注意到了这一点:
如果您的计算机有 EFI 或 UEFI 固件或预装了 Windows 8,则必须选择 Ubuntu 64 位版本。32 位版本将无法使用。
然后我用 Ubuntu 64 位替换了我的 USB 拇指驱动器上的 Ubuntu 32 位安装程序,最后都可以成功完成安装 - 并让这个安装的版本从系统的主分区启动。
到目前为止,一切都很好——但我想有时我可能需要一个 32 位系统来进行调试等。所以,由于我对 UEFI 之类的知识很差,我想问一下(在我浪费时间之前,在发现不可能之前):
假设我已经在这台计算机的主驱动器上安装了可运行的 64 位 UEFI,如果我决定:缩小 64 位分区以腾出空间,是否会变得更容易;然后为32位系统新建一个分区;最后,从这个分区上的 USB 拇指驱动器安装 Ubuntu 32 位?
我在https://help.ubuntu.com/community/UEFI中看到:
使用 Ubuntu 的 64 位磁盘。(Ubuntu32bit 不能在 UEFI 模式下轻松安装。如果 32 位 UEFI 是您的计算机可以启动的唯一方式,例如,如果您有一台基于 Intel Atom 的现代笔记本电脑,那么这是一个问题。在这种情况下,您将需要一个复杂的工作 -大约。)
...但是,我不确定这些说明是否仅适用于在系统上首次安装 Ubuntu(或者可能与 Windows 并排安装)。
我有点希望在我的情况下,我想要一个 64 位和一个 32 位的 Ubuntu(而不是 Windows)会更容易:我的理由是已经成功安装了 64 位,安装过程已经适当地设置了引导分区、“可引导”标签等 - 然后,当安装 32 位版本时,它会检测机器上的 Grub,它会简单地将自己添加为条目,而不是尝试从头开始安装引导加载程序(即使安装程序总是明确询问应该在哪个设备上安装引导加载程序,这让我担心 32 位安装过程可能会覆盖正确的 64 位引导加载程序,从而造成混乱东西)。
所以 - 以前有没有人尝试过这个,并且在这种情况下可以期待一个更简单(即简单)的安装过程;或者如果之后尝试并排安装 32 位安装,是否应该预期正在工作的 64 位安装损坏?
简单的方法
做你想做的最简单的方法是不直接启动 32 位 Ubuntu;相反,将其安装在虚拟机中(例如,在 VirtualBox、QEMU 或 VMware 中)。根据您的确切需求,这可能就是您所需要的,而且这比尝试正确地进行多引导要容易得多。OTOH,如果您正在开发计算机硬件的驱动程序,那么虚拟机可能无法满足您的需求。
艰难的道路
从广义上讲,我可以想到三种方法来做你想做的事(除了使用虚拟机的简单解决方案):
/boot/efi/EFI/refind/refind.conf
:取消注释该scanfor
行并确保它hdbios
在选项中。结果是 rEFInd 将使您能够以 EFI 模式启动 Windows 或 64 位 Ubuntu,并且它将显示一个灰色菱形图标,该图标将从 32 位 Ubuntu 安装启动 BIOS 模式 GRUB。此 GRUB 将依次启动 32 位 Ubuntu。(它最终也可能会选择并显示在 BIOS 模式下启动 64 位 Ubuntu 的选项。)理论上,这些选项中的任何一个都应该有效。在实践中,它们在设置过程中都存在缺陷,并且任何可能被固件怪癖或其他问题所阻止。因此,在开始工作之前,您可能需要尝试其中的两个甚至全部三个。
好的,试过了,它有效 - 但有一些警告,所以这是我的笔记:
这台 PC 上的 BIOS 为我提供了两种启动 Ubuntu 14.04 32 位桌面可启动 USB 拇指驱动器的选项:UEFI 和非 UEFI 一种。UEFI 选择只是重新启动了 BIOS,所以我不得不使用非 UEFI 的。USB 拇指驱动器启动后,选择 Try Ubuntu。
从这里,我运行
gparted
(或gparted-pkexec
),然后缩小 Ubuntu 14.04 64 位的主分区,然后将未分配的空间变成一个新ext4
分区。此时,可以看到 64 位安装程序为引导创建了一个单独的分区 - 请注意这一点以备后用。此时,我从实时 32 位运行中运行了 Install Ubuntu 图标。当涉及到安装类型屏幕(请参阅http://www.ubuntu.com/download/desktop/install-ubuntu-desktop),这里选择“其他”,然后只需双击上一步中创建的分区, “使用”它作为 ext4,并将其作为安装点
/
(根),然后继续设置。关于这里你会得到“Reserved BIOS boot area”提示(“..如果你不返回分区菜单并更正这个错误,..”,请参阅我应该创建保留的BIOS引导区分区吗?) - 你可以忽略这一点并继续,正如我们之前亲眼看到的那样
gparted
,已经存在这样的引导分区。当 32 位安装完成并重新启动 PC 时,您会注意到启动时没有 Grub 菜单,而是 PC 直接启动到 64 位操作系统。在这里,根据我在启动期间无法显示 grub 菜单,我进行了更改
GRUB_HIDDEN_TIMEOUT
等(请参阅https://www.gnu.org/software/grub/manual/html_node/Simple-configuration.html和Bug #1258597 “警告:将 GRUB_TIMEOUT 设置为非零值 ...” ) 中的值/etc/default/grub
,然后运行sudo update-grub
- 我认为这是找到 32 位安装分区的原因,并且它的菜单条目被添加到 Grub 菜单中。当此运行最终重新启动时,Grub 菜单应在启动时显示 - 如果没有,请尝试在 BIOS 屏幕过去后立即按住/点击 Shift。现在我可以在新安装的 32 位中启动,我运行
apt-get update
+dist-upgrade
因为有一个新内核,新内核已安装,现在 Grub 菜单中应该有一个额外的条目,因此update-grub
自动以 32 位模式运行apt-get dist-upgrade
,并且不幸地会使引导过程变得一团糟。下次我们重新启动时,如果我们想通过 Grub 菜单进入 32 位操作系统,我们会遇到诸如“找不到文件”和“未对齐指针”之类的 Grub 错误。幸运的是,此时 64 位进程的 Grub 入口仍然没有损坏,所以我们可以在 64 位系统中启动,这里发出
sudo update-grub
来纠正 Grub 启动。现在,在这一点上有两个小故障。首先,Grub 菜单中显示的名称类似于 64 位(第一个)安装的“Ubuntu”,以及 32 位安装的“Ubuntu with kernel xxxx on /dev/sdxy”。我宁愿使用“Ubuntu 64 位”和“Ubuntu 32 位”之类的名称,但这显然很难做到(如何编辑我的 Grub 引导加载程序条目(隐藏、重命名、删除)?最好手动进行,而不是程序,Bug #439538 “Grub2 don't provide a option for rename menuentry on /etc/default/grub”),因为 Grub2 似乎从脚本中自动生成这些名称。
然后,启动顺序也由 Grub2 脚本设置,因此如果您需要将默认操作系统启动为 32 位,则必须计算 Grub2 启动菜单中显示的所需条目的顺序,然后
GRUB_DEFAULT=x
在/etc/default/grub
(如何更改 GRUB 引导顺序?)中使用sudo update-grub
- 再次,严格在 64 位操作系统中运行!显然,每次在任何一个操作系统中有内核更新时,都必须格外小心,可能会重新调整这些东西......
可以在launchpad上找到有关此问题的错误报告。据说 Debian 有32 位 EFI的测试版。从链接:
可能值得尝试将其复制到 Ubuntu ISO 并尝试一下。