我在一台旧的 MacBook Pro(2009 年的 MacBookPro5,2,Core 2 Duo)机器上进行了 Ubuntu 22.04 的全磁盘安装,并在此过程中彻底擦除了 OS X。
我现在面临的是启动时 30 秒白屏延迟的已知问题。我已经弄清楚我必须使用 OS Xbless
命令将 Ubuntu 设置为启动分区。我的问题是我必须传递哪些命令行参数?互联网上的所有示例都使用了该--legacy
选项并讨论了 BIOS 模式,但据我所知,我的 Ubuntu 安装使用的是 EFI (目录/sys/firmware/efi
存在)。
那么,我是否可以假设在祝福分区时不应使用该--legacy
选项?此外,我必须祝福哪个分区?那个/dev/sda1
?
df -h
这是在 Ubuntu 中运行时的输出:
t30@macbook:~$ df -h
tmpfs 770M 1,7M 768M 1% /run
/dev/sda2 457G 12G 423G 3% /
tmpfs 3,8G 0 3,8G 0% /dev/shm
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
/dev/sda1 511M 6,1M 505M 2% /boot/efi
tmpfs 770M 52K 770M 1% /run/user/1000
那么我是否应该bless
像这样调用(/dev/sda1
用其下安装的任何内容替换bless
)?
bless --device /dev/sda1 --setBoot
尝试了不同的变化后,结果如下:
bless --device /dev/disk0s1 --setBoot
似乎什么都没做。白屏上仍然长时间超时。之后系统仍在启动。
bless --device /dev/disk0s2 --setBoot
同上。
bless --device /dev/disk0s1 --setBoot --legacy
白屏上仍长时间超时。之后系统进入黑屏,无法启动 Ubuntu。
fdisk 中只列出了/dev/disk0s1
和。我假设是,但我不知道。/dev/disk0s2
/dev/disk0
/dev/disk0s1
/boot/efi
答案1
总结:一个可能的命令是bless --folder /Volumes/EFI --file /Volumes/EFI/EFI/ubuntu/grubx64.efi --setBoot
。
由于问题还涉及启动时间,因此我列出了启动时间和我的 Mac 的规格。我预计楼主的 Mac 会比我的 Mac 慢。
我的 Mac 具有以下规格:
- iMac(21.5 英寸,2011 年中)
- 2.5 GHz 英特尔酷睿 i5
- 16 GB 1333 MHz DDR3
- 1 TB SATA II (3 Gb/s) 内置硬盘
下表显示了我的 Mac 上当前安装的操作系统。
操作系统 | 版本 | 建筑学 | 启动方式 | 地点 |
---|---|---|---|---|
Windows 11 专业版 | 22H2 | AMD64 | BIOS | 内置硬盘 |
macOS High Sierra | 10.13.6 | AMD64 | 电喷 | 内置硬盘 |
Ubuntu | 22.04.1 LTS | AMD64 | 电喷 | 内置硬盘 |
我按照以下步骤使用命令bless
来测试将 Ubuntu 设置为默认启动操作系统。
- 启动 Mac 并按住该option键直到出现 Mac 启动管理器图标。
- 选择从内部驱动器上的 macOS High Sierra 恢复卷启动。
- 已将唯一的 EFI 卷 (
/dev/disk0s1
) 挂载于/Volumes/EFI
。 - 在终端窗口中输入以下命令。†
bless --folder /Volumes/EFI --file /Volumes/EFI/EFI/ubuntu/grubx64.efi --setBoot
- 重新启动 Mac,启动 GRUB,然后启动 Ubuntu。
†这是 OP 在评论。
启动时间表如下所示。这里,GRUB 配置为等待 10 秒,并且 Ubuntu 已打开自动登录。
事件 | 期间 | 总时间 |
---|---|---|
开机到白屏启动之间 | 6.75 | 6.75 |
可见白屏 | 8.74 | 15.50 |
白屏结束和桌面出现之间 | 1:35.65 | 1:51.16 |
/etc/default/grub
以下是我的 Mac 上当前文件的内容。
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
GRUB_TERMINAL=console
GRUB_DISABLE_OS_PROBER=true