我的笔记本电脑预装了 Windows 8 64 位(唯一的存储设备是 128 GB SSD)。由于这是我的学校笔记本电脑/我听说在 Windows 8 旁边创建 Linux 分区不是很明智,所以我将 Ubuntu 安装在了我的外部硬盘上。
我有一块 500GB 的外置硬盘,其分区如下:
Main Partition - NFTS - ~400 GB
Extension Partition
/ - ext2 - ~25gb
/home - ext2 - ~30gb
swap - ext2 - 10gb
/boot - ? - 10gb
? = 不确定分区
使用 PenDriveLinux 安装程序,我在 4GB USB 驱动器上创建了 Ubuntu 12.04 (LTS) 的 LiveUSB 版本。使用这个,我将 Ubuntu 安装到外部硬盘上,没有任何错误(或者至少没有收到任何通知)。
使用 BIOS 设置,我更改了操作系统加载顺序,使其按以下顺序排列:
- 我的外置 USB 硬盘
- Windows 启动加载程序
- 其他一些事情
因此,Ubuntu 应该首先从我的硬盘加载,但事实并非如此。另外,我的硬盘处于工作状态,BIOS 启动时它会亮起(有一个指示灯)。当我启动笔记本电脑时,它直接进入 Windows 8(我也禁用了快速启动设置)。
那么,有什么方法可以设置它,以便当我的硬盘连接时它会自动加载 Ubuntu?提前谢谢!
答案1
您有一台 UEFI 机器,因此情况有所改变。您需要 64 位版本 12.04.2 或更高版本。不幸的是,grub 安装程序尚未正确处理其中一些更改。现在,引导有一个专门用于引导加载程序的特殊分区,它们只是文件,而不是磁盘上的特殊位置。硬盘上的这个分区称为 EFI 分区,实际上根本不需要更改,因为您可以将 Ubuntu 引导加载程序直接放在外部硬盘上,放在它自己的 EFI 分区中。首先,备份现有的 EFI 分区——它们只是文件,但从备份 USB 恢复它们比恢复 Windows 容易得多。可能可以切换模式 UEFI/legacy 并启动外部 msdos 分区磁盘,但无论运行什么,将一切保留在 UEFI 模式都会更方便。在您的外部硬盘上(假设现在没有任何东西,否则先备份),删除所有内容并将分区表重新制作为 gpt 分区表而不是 msdos。第一个分区创建一个 300M FAT(Meg,它很小!)EFI 分区。使用 gparted,它可以理解 gpt 分区。接下来放置 boot、root、swap 和 home。gpt 分区都是主分区,因此无需担心扩展/逻辑分区。您可以手动设置 EFI 启动文件,或者查看安装程序在看到 gpt 磁盘和真正的 EFI 目标分区后会做什么。 (您应该将实际的 EFI 分区作为引导加载程序的位置,而不是像以前那样将磁盘作为位置,但安装程序可能仍然会忽略这一点,并将 ubuntu 文件放入硬盘的 EFI。新文件将全部位于 /EFI/ubuntu 下。如果发生这种情况,您可以将所有内容复制到目标的 EFI 分区。现在,由于目标是“可移动媒体”,因此使用的实际引导加载程序不是 /EFI/ubuntu 中的引导加载程序,而是 /EFI/Boot/bootx64.efi 中的引导加载程序。您可以选择所需的引导加载程序,shim.efi(用于安全启动)或 grubx64.efi(如果您实际上可以在没有安全启动的情况下启动 Windows)。将引导加载程序重命名为“bootx64.efi”。如果您使用 shim 作为引导加载程序,您还需要在同一个 /EFI/Boot 目录中的 grubx64.efi(签名)副本。(在 /usr/lib/grub(?)中查找 grub 的签名版本,其名称以“.signed”结尾。现在,您只需要在 /EFI/ubuntu 中有一个 grub.cfg 文件,就可以启动了。12.04 可能没有获得 grub.cfg 文件更新,它只是从 /boot/grub 中提取维护的 grub.cfg,但要开始,只需完整复制该文件即可。grub 安装程序所做的其他坏事可能不会真正发生在您身上,因为您的硬盘上(或 NVRAM 中)没有 ubuntu 的副本。祝你好运