Ove*_*erv 5 linux boot virtualbox grub
我正在尝试使用该grub-mkrescue
命令生成救援磁盘。我这样调用它:
grub-mkrescue -o grub.iso
Run Code Online (Sandbox Code Playgroud)
这会生成 .iso 文件,但是当我尝试使用 VirtualBox 从它启动时,它说无法读取启动介质。当我用归档程序打开文件时,.iso 原来只有一个空的 /boot/grub 目录。
我还注意到有些人使用这样的命令:
grub-mkrescue -o grub.iso /boot/grub
Run Code Online (Sandbox Code Playgroud)
但随后它抱怨该目录不存在。(也许我在 Debian VPS 上制作它是相关的,因为我目前无法访问实际的 Linux PC。)
什么可能导致这个问题?是否缺少要存储到可引导映像中的 GRUB 文件,或者我是否以错误的方式使用该命令?
以下步骤为我生成了一个工作图像:
创建一个 Multiboot hello worldmain.elf
文件。GRUB 知道如何引导这些文件(GRUB 也知道如何引导 Linux 内核,即使它不是多重引导)
创建一个iso/boot/grub/grub.cfg
包含以下内容的文件:
menuentry "main" {
multiboot /boot/main.elf
}
Run Code Online (Sandbox Code Playgroud)
广场main.elf
下iso/boot/
在 Ubuntu 17.10 上,在 UEFI 机器上:
sudo apt-get install grub-pc-bin
Run Code Online (Sandbox Code Playgroud)
正如在https://wiki.osdev.org/Bare_Bones 中提到的那样,否则它根本不起作用,你也没有办法。
TODO OMG真的吗?!我必须学习从源代码构建 GRUB 以摆脱这种疯狂。
生成图像并运行它:
grub-mkrescue -o main.img iso
qemu-system-x86_64 -hda main.img
Run Code Online (Sandbox Code Playgroud)我已经发布了这个例子的确切代码:https : //github.com/cirosantilli/x86-bare-metal-examples/tree/d217b180be4220a0b4a453f31275d38e697a99e0/multiboot/hello-world
事实证明,当您运行此命令的系统没有(可访问)/boot/grub
目录时,就会发生这种情况。它会默默地失败并生成一个空的 ISO 文件。
在正常的 Linux 桌面安装上运行相同的命令时,该命令会生成一个工作的可启动映像。
归档时间: |
|
查看次数: |
4836 次 |
最近记录: |