为了为了实验,我正在尝试记录 Mac Mini 上 14.04 纯 EFI 启动的最小程序。
这涉及在硬盘上安装一个基本系统(使用 Mac 风格的服务器安装 ISO),但是不是将 GRUB 安装到 MBR。GRUB是安装到硬盘的第一个分区,但直到我手动设置 EFI 启动分区,系统才能够启动。
有没有办法使用 USB 安装程序上的引导加载程序手动引导到已安装的系统?我可以访问安装程序上的“高级选项”(即引导加载程序命令行),但我不知道它是什么引导加载程序,因此我找不到它的完整文档。
答案1
不要使用 Mac 专用的安装程序。使用普通(服务器、桌面)安装程序,使用所有默认设置安装系统(避免使用 LVM 除外),然后重新启动。
再次启动 USB 安装程序,但当您看到 GRUB 菜单时,按下C以调出 GRUB 控制台。
查找安装的驱动器
在 GRUB 控制台中,执行
grub> ls
(memdisk) (hd0) (hd0,msdos) (hd1) (hd2) (hd2,gpt3) (hd2,gpt2) (hd2,gpt1)
您可能不会得到与此完全相同的结果,但您将有一些选择。您要查找新安装,而不是安装程序/实时系统。我建议找到一个包含新用户主目录的分区:
grub> ls (hd2,gpt2)/home
jason/
继续尝试这个模式直到找到它。
查找安装的启动分区
如果您知道已将所有内容安装到一个分区,那么您就大功告成了 — 只需使用上一步的结果即可(hdX,gptY)
。如果您不知道,或者您不确定,请保留该hdX
部分,但浏览所有gptY
选项以查找/boot/grub
目录:
grub> ls (hd2,gpt1)/boot/grub
error: file `/boot/grub' not found.
不,不是那个。
grub> ls (hd2,gpt2)/boot/grub
unicode.pf2 [...] grub.cfg
找到了!
现在您想将其设置为进一步命令的根:
grub> set root=(hd2,gpt2)
弄清楚启动命令
我发现仅有的正确启动的方法是使用驱动器的 UUID(即没有快捷方式/dev/sdaX
!) - 所以让我们得到:
grub> ls -l (hd2,gpt2)
Partition hd2,gpt2: Filesystem type ext* [...snip...] UUID e86c20b9-83e1-447d-a3be-d1ddaad6c4c6 - Partition start at [...]
请记下 UUID 字符串!你的会有所不同。现在告诉 GRUB Linux 在哪里:
grub> linux /boot/vmlinuz[...tab here!...].efi.signed root=UUID=<the UUID from above>
GRUB 控制台可以完成tab补全,因此如果您只输入部分vmlinuz
并点击tab,然后点击.并tab再次... 您就不必输入整个文件名。但一定要确保该.efi.signed
位在那里!是的,您必须输入整个 UUID。
现在设置initrd
(初始 RAM 磁盘):
grub> initrd /boot/initrd[...tab here!...]
启动
类型:
grub> boot
您会发现自己已启动到安装状态!
我不是 GRUB 专家,因此我欢迎任何关于如何减少此时间的提示。尤其是 UUID 部分,这有点令人发指。