我最近在亚洲旅行时买了一台新的华硕 U24a。我设法通过 UEFI 设置克服了困难,现在终于有了可以正常工作的 GRUB。
然而,我无法绕过“加载初始 ramdisk”。
如果我启动实时 CD-USB(仅在 BIOS 传统模式下),我就会得到一个运行良好的 Ubuntu。
我最终设法在硬盘上安装了 UEFI(没有传统 BIOS 启动选项,否则我会立刻到达那里!),并且可以以 UEFI 模式启动到 GRUB2。
但是...我无法跳过“加载初始 ramdisk”。看来磁盘驱动程序出现故障(此后没有磁盘活动)。
有想法吗?来自 boot-repair 的 pastebin 位于:http://paste.ubuntu.com/1290011/
最好的,-托尼
新 (2012 年 10 月 22 日):嗯,问题之一似乎是当我在 UEFI 模式下启动时,引导加载程序无法识别硬盘。这是一个标准的 GPT 格式的磁盘,但引导加载程序(grub 命令行或 shell.efi)似乎找不到它。您知道要加载什么才能识别它吗?我尝试加载 part_gpt 和其他类似的明显候选文件,但有人有我可以学习的“安装”看不见的磁盘的咒语吗?
所以,真正让我烦恼的是——如果我从 USB 启动到传统兼容模式,我会得到所有文件系统(hd0、hd1),但如果我以 UEFI 模式启动,我只会得到 USB 记忆棒。这是否与安全的 UEFI 安全模式有关?还是其他什么?
答案1
我不断看到有报告称 GRUB 2 的 EFI 支持最近有所改善,但每次我尝试时,它都很糟糕。我还没有尝试过 Ubuntu 12.10,所以我不知道它包含的 GRUB 2 版本是否有所改善。如果没有,我怀疑您遇到了 GRUB 2 问题;但也有可能我对 GRUB 2 的糟糕体验影响了我对问题的理解。
无论如何,如果我是对的,我的建议是安装另一个引导加载程序并尝试使用它。您的 Boot Info Script 输出表明您已经设置了 ELILO 配置,因此您可以尝试复制您的 Ubuntu 内核和 initrd 文件并进行编辑elilo.conf
(可能在EFI/debian
您的 ESP 上/dev/sda1
),以启动 Ubuntu。但是,如果您的 ELILO 不工作,您可以尝试rEFInd,它能够直接启动 Linux 3.3.0 或更高版本的内核,Ubuntu 12.10 提供了该内核。(但是,这假设 Ubuntu 已在其内核中包含 EFI 存根加载程序支持。我不知道他们是否这样做了。)rEFInd 文档包含有关启动 Linux 的部分。简而言之,您将:
- 根据其文档安装 rEFInd。
- 创建一个
refind_linux.conf
包含内核选项的文件。(根据您的启动信息脚本输出,root=UUID=1de654ef-3c5e-4d17-8fc8-8490926d8d76 ro quiet splash i915.modeset=0 xforcevesa
应该可以工作。有关文件格式的详细信息,请参阅 rEFInd 文档refind_linux.conf
。)将此文件放在 ESP 上内核所在的位置(下一步复制)。 - 将你的内核 (
vmlinuz-*
) 和 initrd (initrd*
) 文件从 Ubuntu/boot
目录复制到EFI/ubuntu
ESP(你的/dev/sda1
)上的目录,并重命名内核文件,使其名称以 结尾.efi
。
当您重新启动进入 rEFInd 时,您应该会在菜单中看到一个用于启动 Ubuntu 的新选项。如果此过程有效,您可以采取一些步骤来确保 rEFInd 自动获取您未来的内核更新。(最简单的方法是重新配置您的系统以将 ESP 挂载为/boot
并更改refind.conf
为取消注释该scan_all_linux_kernels
选项。)
另一个观察结果:您/dev/sda4
的分区表中错误地将分区标记为 ESP。这不太可能导致您当前的问题,但可能会在将来造成困难。我建议您修复它。您可以在 GNU Parted 或 GParted 中通过从boot
分区中删除标志来执行此操作,或者通过gdisk
将类型代码从 EF00 更改为 8300 来执行此操作。后者在双启动系统上更可取,因为您的 libparted 可能会为分区提供不正确的 Windows 类型代码,而不是 Linux 类型代码。(此错误将在本月发布的下一版 libparted 中修复。)