C++ grub mkrescue无法创建可引导CD映像
我有这个iso图像,显然VirtualBox无法读取。我目前正在使用GRUB,并在下面的教程和OS-VM安装一集中进行介绍。我已经在屏幕上记录了错误,因为我在这里完成了以下步骤: 以下是我当前的文件: 生成文件:C++ grub mkrescue无法创建可引导CD映像,c++,x86,virtualbox,osdev,bootable,C++,X86,Virtualbox,Osdev,Bootable,我有这个iso图像,显然VirtualBox无法读取。我目前正在使用GRUB,并在下面的教程和OS-VM安装一集中进行介绍。我已经在屏幕上记录了错误,因为我在这里完成了以下步骤: 以下是我当前的文件: 生成文件: GPPARAMS = -m32 -Iinclude -fno-use-cxa-atexit -nostdlib -fno-builtin -fno-rtti -fno-exceptions -fno-leading-underscore -Wno-write-strings ASP
GPPARAMS = -m32 -Iinclude -fno-use-cxa-atexit -nostdlib -fno-builtin -fno-rtti -fno-exceptions -fno-leading-underscore -Wno-write-strings
ASPARAMS = --32
LDPARAMS = -melf_i386
objects = kernel.o loader.o
all:
g++ -m32 -Iinclude -fno-use-cxa-atexit -nostdlib -fno-builtin -fno-rtti -fno-exceptions -fno-leading-underscore -Wno-write-strings -o kernel.o -c kernel.cc
as $(ASPARAMS) -o loader.o loader.S
BoneOS.bin : linker.ld $(objects)
ld $(LDPARAMS) -T $< -o $@ $(objects)
install: BoneOS.bin
sudo cp $< /boot/BoneOS.bin
clean:
rm $(objects)
rm -rf iso
qemu_compile: all BoneOS.bin qemu
qemu:
qemu-system-i386 -kernel BoneOS.bin
BoneOS.iso: BoneOS.bin
mkdir iso
mkdir iso/boot
mkdir iso/boot/grub
cp BoneOS.bin iso/boot/BoneOS.bin
echo 'set timeout=0' > iso/boot/grub/grub.cfg
echo 'set default=0' >> iso/boot/grub/grub.cfg
echo '' >> iso/boot/grub/grub.cfg
echo 'menuentry "My Operating System" {' >> iso/boot/grub/grub.cfg
echo ' multiboot /boot/BoneOS.bin' >> iso/boot/grub/grub.cfg
echo ' boot' >> iso/boot/grub/grub.cfg
echo '}' >> iso/boot/grub/grub.cfg
grub-mkrescue -o BoneOS.iso iso
iso/boot/grub/grub.cfg:
set timeout=0
set default=0
menuentry "My Operating System" {
multiboot /boot/BoneOS.bin
boot
}
由于某种原因,当通过VirtualBox运行上述代码时(上面的视频向您展示了我是如何做到这一点的),我收到了错误“错误:无法从可引导介质读取”。我们将不胜感激
编辑
不过,这里的问题是,出于某种原因,当我这样做时,它对qemu有效:
qemu-system-i386 -kernel BoneOS.bin
但不显示菜单选项
与Qemu合作
当我运行命令时:
qemu-system-i386 -cdrom BoneOS.iso
我没有像Virtual Box那样的可引导设备,下面是一个viedo演示:
好多了!这一次,这个问题很有意义。@MichaelPetch我只是键入了“virtualbox”。我在命令上有点快。对不起。如果你想让QEMU从ISO启动,试试这个:
QEMU-system-i386-cdrom BoneOS.ISO
Edited question@MichaelPetch。没有任何可引导设备感觉到BSS段中的堆栈大小(2mb)可能导致GRUB工作不正常。尝试将堆栈大小更改为更小的大小。请使用.space 16*1024
尝试16kb。
set timeout=0
set default=0
menuentry "My Operating System" {
multiboot /boot/BoneOS.bin
boot
}
qemu-system-i386 -kernel BoneOS.bin
qemu-system-i386 -cdrom BoneOS.iso