我得到了一台笔记本电脑,它配备了 64 位英特尔处理器,并且默认安装了 Windows 8 64 位系统。
首先,我想在这台机器上安装 32 位 Ubuntu 14.04。
我最终了解到我应该从 BIOS 中关闭 SecureBoot 以及 FastBoot(Ubuntu 14.04 与 Windows 8 UEFI 双启动是否需要禁用安全启动);然后我尝试使用 UEFI 启动 USB 拇指驱动器(我不记得它是否有效);最终实时 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, 那:
使用 64 位 Ubuntu 磁盘。(Ubuntu32 位无法轻松安装在 UEFI 模式下。如果 32 位 UEFI 是您的计算机启动的唯一方式,则会出现问题,例如,如果您有一台基于现代 Intel Atom 的笔记本电脑。在这种情况下,您将需要一个复杂的解决方法。)
... 但是,我不确定这些说明是否仅适用于首次在系统上安装 Ubuntu(或者可能与 Windows 并行安装)。
我有点希望,就我的情况而言,我想要一个 64 位和一个 32 位 Ubuntu(没有 Windows),这会更容易:我的理由是,已经成功安装了 64 位,安装过程已经设置了启动分区、“可启动”标签等 - 然后,当安装 32 位版本时,它会检测到机器上的 Grub,它会简单地将自己添加为一个条目,而不是尝试从头开始安装引导加载程序(即使安装程序总是明确询问应该在哪个设备上安装引导加载程序,这让我担心 32 位安装过程可能会覆盖 64 位的正确引导加载程序,从而搞砸一切)。
那么 - 是否有人之前尝试过这种方法,在这种情况下是否可以期待一个更简单(即直接)的安装过程;或者,如果随后尝试并行进行 32 位安装,是否应该预期 64 位安装会中断?
答案1
简单的方法
做你想做的事的简单方法是不是直接启动 32 位 Ubuntu;而是将其安装在虚拟机中(例如在 VirtualBox、QEMU 或 VMware 中)。根据您的具体需求,这可能是您所需要的,而且它是很多比尝试让所有东西都正确多重启动更容易。另一方面,如果你正在开发计算机硬件的驱动程序,虚拟机可能不会满足你的要求。
艰难之路
从广义上讲,我可以想到三种方法来实现你想要的效果(除了使用虚拟机这种简单的解决方案):
- 100% 转为 BIOS/CSM/旧版-- 您可以使用兼容性支持模块 (CSM) 清除计算机并安装所有操作系统,该模块可使 BIOS 模式引导加载程序正常工作。这将使它非常像在几年前的计算机上安装。诀窍在于,控制安装介质的引导模式可能很困难,特别是如果您不熟悉用于控制的工具和技术。请参阅我的网页上关于这个主题的内容了解更多信息;但是,该页面旨在阻止混合模式安装,因此有关执行 100% BIOS 模式设置的信息被埋没在其他内容中。此外,如果您想保留 Windows,则需要完成一些奇特的环节或完全重新安装它,而要执行后者,您需要找到适当的安装介质。
- 使用 64 位 EFI 模式 GRUB 启动 32 位内核-- 64 位 EFI 模式 GRUB 2 可以启动 32 位 Linux 内核 - 或者至少其中一些可以。(GRUB 二进制文件的构建方式有很大差异,因此我不能保证所有 64 位 EFI 模式 GRUB 二进制文件都可以完成这项工作。)实际上,要以这种方式工作,您可能需要安装 Windows,然后安装 32 位 Ubuntu(在 BIOS 模式下可以正常工作),然后在 EFI 模式下安装 64 位 Ubuntu。理想情况下,64 位 Ubuntu 的 GRUB 应该检测 32 位 Ubuntu 安装并为其创建单独的菜单项。它们可能没有很好地标记,但它们应该可以工作。如果未检测到它们,则可能可以手动创建条目。
- 使用 rEFInd 启动 64 位 EFI 模式操作系统和 32 位 BIOS 模式操作系统-- 此方法与前一种方法类似;但是,您需要安装我的rEFInd 启动管理器完成 64 位 Ubuntu 安装后。然后,您将编辑
/boot/efi/EFI/refind/refind.conf
:取消注释该scanfor
行并确保该hdbios
行在选项中。结果是 rEFInd 将使您能够以 EFI 模式启动 Windows 或 64 位 Ubuntu,并且它将显示一个灰色菱形图标,该图标将从 32 位 Ubuntu 安装启动 BIOS 模式 GRUB。此 GRUB 将依次启动 32 位 Ubuntu。(它最终可能会选择并显示在 BIOS 模式下启动 64 位 Ubuntu 的选项。)
理论上,任何这些选项都应该有效。实际上,它们在设置过程中都存在陷阱,并且任何选项都可能因固件怪癖或其他问题而受阻。因此,您可能需要尝试其中两个甚至所有三个,才能让某些选项正常工作。
答案2
好的,试过了,它有效 - 但有一些注意事项,所以这是我的笔记:
这台电脑的 BIOS 为我提供了两个启动 Ubuntu 14.04 32 位桌面可启动 USB 拇指驱动器的选项:UEFI 和非 UEFI。UEFI 选项只会重新启动 BIOS,所以我不得不使用非 UEFI 选项。USB 拇指驱动器启动后,选择“尝试 Ubuntu”。
从这里开始,我运行gparted
(或gparted-pkexec
),然后缩小 Ubuntu 14.04 64 位的主分区,然后将未分配的空间设为新ext4
分区。此时,可以看到 64 位安装程序为启动创建了一个单独的分区 - 稍后请注意这一点。
此时,我从实时 32 位运行中运行了 Install Ubuntu 图标。当显示“安装类型”屏幕时(请参阅http://www.ubuntu.com/download/desktop/install-ubuntu-desktop),这里选择“Something Else”,然后双击上一步创建的分区,将其“使用”为 ext4,并将其作为挂载点/
(根),然后继续设置。
在这里,您将获得“保留的 BIOS 启动区域”提示(“。如果您不返回分区菜单并更正此错误,..”,请参阅我应该创建保留的 BIOS 启动区域分区吗?)——您可以忽略这一点并继续,正如我们之前亲眼看到的,gparted
已经存在这样的启动分区。
当 32 位安装完成并且 PC 重新启动时,您会注意到启动时没有 Grub 菜单,而是 PC 直接启动到 64 位操作系统。在这里,按照我无法让 grub 菜单在启动时显示,我改变了GRUB_HIDDEN_TIMEOUT
等等(见https://www.gnu.org/software/grub/manual/html_node/Simple-configuration.html和错误 #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 没有提供在 /etc/default/grub 上重命名菜单项的选项”),因为 Grub2 似乎从脚本自动生成这些名称。
然后,启动顺序也是由 Grub2 脚本设置的,因此如果您需要将默认操作系统启动为 32 位,则必须计算 Grub2 启动菜单中显示的所需条目的顺序,然后GRUB_DEFAULT=x
使用/etc/default/grub
(如何更改 GRUB 启动顺序?) 然后sudo update-grub
- 再次严格在 64 位操作系统中运行!
显然,每次都必须格外小心,因为每次任何一个操作系统有内核更新时都有可能重新调整这些内容……
答案3
关于此问题的错误报告可以在发射台。那里说 Debian 有32 位 EFI。来自链接:
这是什么?
这是包含实验性 EFI 支持的 netinst CD 的第四个版本。我第一次包含了 i386 支持以及 amd64 支持。amd64 映像应该在最近的 amd64 (x86_64) 机器上启动并以 EFI 模式工作,执行以下步骤不同:
boot via UEFI rather than BIOS mode use GPT partitioning on hard disks rather than MSDOS add a FAT-formatted EFI partition for booting install an EFI bootloader rather than lilo/grub-pc
也许值得尝试将其复制到 Ubuntu ISO 并尝试一下。