efibootmgr 与 MacBook Air 上实际使用的不匹配

efibootmgr 与 MacBook Air 上实际使用的不匹配

我使用的是 MacBookAir5,2 (2012),我已经在 Mac OS X 上运行 Ubuntu 一段时间了。我第一次安装 Ubuntu 时使用了 rEFIt,效果很好。

当我开始使用 Docker 时,我的磁盘空间不够了,于是我决定换一个新的 SSD 驱动器。我换了磁盘,然后安装了 Ubuntu 14.10。

在此之后,我摆弄了 rEFInd(因为 rEFIt 没有维护),并且读了很多Rod Smith 的页面

但是,现在我只想要 Ubuntu,不想在这台机器上启动任何其他东西。但不知何故,我告诉它efibootmgr做什么,它却不运行。问题是 rEFInd 在启动后不会运行。我启动系统的唯一方法是在启动时按下 alt 键,然后选择 USB 记忆棒上的 rEFInd。不过,这种方法很好用,没有任何问题 - 只是有点不方便。:-)

如果我在不连接 USB 的情况下启动,则只会看到灰色屏幕,没有任何显示。它会“永远”保持灰色(我等待的时间不超过 20 分钟)。

我的 SSD 包含四个分区:

GPT fdisk (gdisk) 版本 0.8.8

分区表扫描:
  MBR:混合型
  BSD:不存在
  APM:不存在
  GPT:存在

发现具有混合 MBR 的有效 GPT;使用 GPT。
磁盘 /dev/sda:937703088 个扇区,447.1 GiB
逻辑扇区大小:512字节
磁盘标识符 (GUID):B30ED5AD-A6B6-4FF9-9CC4-1F440536FB9F
分区表最多可容纳 128 个条目
第一个可用扇区是 34,最后一个可用扇区是 937703054
分区将按照 8 扇区边界对齐
总可用空间为 264949 个扇区 (129.4 MiB)

编号 起始(扇区) 结束(扇区) 大小 代码 名称
   1 40 409639 200.0 MiB EF00 EFI 系统分区
   2 409640 195722143 93.1 GiB AF00 Macintosh HD
   3 195985408 921180159 345.8 GiB EF00 LINUX
   4 921180160 937701375 7.9 GiB 0700 交换

为了缩小问题范围,我实际上删除了 ESP 中的所有文件。我现在efibootmgr报告的是:

BootCurrent: 0000
Timeout: 5 seconds
BootOrder: 0000
Boot0000* rEFInd Boot Manager   HD(1,28,64000,7fa6ae3f-d9a7-4411-838a-1d0133b9993a)File(\EFI\refind\refind_x64.efi)
BootFFFF*   ACPI(a0341d0,0)PCI(1f,2)SATA(0,0,0)HD(2,64028,e066090,00007690-046d-0000-175e-0000ca5e0000)File(\System\Library\CoreServices\boot.efi)

root@fredrik-mbair:~# tree /boot/efi/ | grep -v png
/启动/efi/
└── 电喷
    │ │ 重新查找
    │ │ 图标
    │ │ ── 按键
    │ │ │ ── altlinux.cer
    │ │ │ │ │ │ │ │ │
    │ │ │ ── fedora-ca.cer
    │ ...
    │ │ │ │ │ │ │ │
    │ │ └── SLES-UEFI-CA-证书.cer
    │ │ ── refind.conf
    │ └── refind_x64.efi
    └── 工具

5 个目录,68 个文件

最后一条信息是:当我在拔下 USB 棒的情况下启动并按下 alt 键时,我会看到一个 (1) 硬盘图标,其下方有 Windows 文本。如果我选​​择该图标,屏幕会变黑,屏幕左上角会出现一个白色闪烁光标(下划线字符),类似于 80x25 线或类似的控制台。之后什么也没发生。“rEFInd Boot Manager”选项不会出现。

我不知道“Windows”选项从何而来,我也不知道FFFF选项是什么。

root@fredrik-mbair:~# efibootmgr -b FFFF -B
invalid hex value FFFF

因为除了单个 Ubuntu 操作系统和 Linux 内核之外我不会使用任何其他东西,所以我可以使用 gummiboot,但我不确定当efibootmgr无法在启动时运行 rEFInd 时它会有什么帮助……

最后一次尝试运行install.sh(从 PPA 安装)给出以下输出:

root@fredrik-mbair:~# /usr/share/refind/install.sh
在 Linux 上安装 rEFInd....
使用 vfat 在 /boot/efi 中找到 ESP
在 /boot/efi/EFI/refind 中找到了 rEFInd 安装;正在升级它。
复制 rEFInd 二进制文件

注意:将现有的图标目录备份为icons-backup。
找到现有的 refind.conf 文件;将示例文件复制为 refind.conf-sample
以避免覆盖您的自定义设置。

rEFInd 已设置为默认启动管理器。
发现现有的 //boot/refind_linux.conf;不覆盖。

安装已成功完成。

我不知道下一步该去哪儿。

答案1

因此,为了达到目的,我做了以下事情:

第一次尝试是这样的:

  • 删除 /boot/efi 下的所有内容
  • 清空混合 MBR(使用gdisk,专家菜单,n然后w
  • /usr/share/refind/install.sh
  • efibootmgr -c -l \\EFI\\refind\\... -L TIRED

这实际上让 rEFInd 在重启后运行。但是,它没有检测到vmlinuz-3.16.0-28-generic.efi.signed我想要运行的内核。它显示了选项,并且都指向No bootable device80x25 控制台。

install.sh啊哈,所以我尝试用重新运行脚本--alldrivers。 重启后,我又回到了灰色屏幕,什么都没显示。

重新启动,从我的 USB 驱动器中获取 rEFInd,然后:

  • 删除了/boot/efi分区
  • 将 U 盘上的所有内容复制到/boot/efi
  • 使用以下方式创建了新条目(删除旧条目)efibootmgr

以及我如何拥有一个工作系统。

细节:

root@fredrik-mbair:~# gdisk -l /dev/sda
GPT fdisk (gdisk) 版本 0.8.8

分区表扫描:
  MBR:保护
  BSD:不存在
  APM:不存在
  GPT:存在

找到具有保护性 MBR 的有效 GPT;使用 GPT。
磁盘 /dev/sda:937703088 个扇区,447.1 GiB
逻辑扇区大小:512字节
磁盘标识符 (GUID):B30ED5AD-A6B6-4FF9-9CC4-1F440536FB9F
分区表最多可容纳 128 个条目
第一个可用扇区是 34,最后一个可用扇区是 937703054
分区将按照 8 扇区边界对齐
总可用空间为 264949 个扇区 (129.4 MiB)

编号 起始(扇区) 结束(扇区) 大小 代码 名称
   1 40 409639 200.0 MiB EF00 EFI 系统分区
   2 409640 195722143 93.1 GiB AF00 Macintosh HD
   3 195985408 921180159 345.8 GiB EF00 LINUX
   4 921180160 937701375 7.9 GiB 0700 交换
/启动/efi/
═── 电喷
│ └── 靴子
│ │ ── bootia32.efi
│ │ ── bootx64.efi
│ │ ── drivers_ia32
│ ...
│ ...
│ ...
│ ...
│ ...
│ ...
│ │ │ │ │ 许可协议.txt
│ │ └── reiserfs_ia32.efi
│ │ ─驱动程序_x64
│ ...
│ ...
│ ...
│ ...
│ ...
│ ...
│ │ │ │ │ 许可协议.txt
│ │ └── reiserfs_x64.efi
│ │ 图标
│ └── refind.conf
── shellia32.efi
└── shellx64.efi

5 个目录,81 个文件
root@fredrik-mbair:~# efibootmgr -v
启动电流:0000
超时:5 秒
启动顺序:0000
Boot0000* COPY HD(1,28,64000,7fa6ae3f-d9a7-4411-838a-1d0133b9993a)文件(\EFI\boot\bootx64.efi)
BootFFFF* ACPI(a0341d0,0)PCI(1f,2)SATA(0,0,0)HD(2,64028,e066090,00007690-046d-0000-175e-0000ca5e0000)文件(\System\Library\CoreServices\boot.efi)

相关内容