问题描述:
在Ubuntu虚拟机下运行HelloOS报错。
错误提示为:
- 未找到’hd0,msdos3’磁盘
- 需要先加载内核
启动项代码如下:
menuentry 'HelloOS' {
insmod part_msdos #GRUB加载分区模块识别分区
insmod ext2 #GRUB加载ext文件系统模块识别ext文件系统
set root='hd0,msdos3' #注意boot目录挂载的分区,这是我机器上的情况
multiboot2 /boot/HelloOS.bin #GRUB以multiboot2协议加载HelloOS.bin
boot #GRUB启动HelloOS.bin
}
原因分析:
出现该错误的原因是boot目录挂载的分区不正确,并不是上面启动项代码中的(hd0,msdos3)。
解决方案:
在系统选择界面选中Ubuntu,并按’e’键进入编辑模式。
在编辑模式中按Ctrl-c或F2进入命令行模式
依次输入如下命令:
grub> ls #查看所有分区
grub> ls (每个分区)/boot #依次检查/boot是否挂载在该分区下。
从上图可以看到,我的boot目录所挂载的分区为(hd0,gpt3),而不是一开始写的(hd0,msdos3)。
至此,修改/boot/grub/grub.cfg中HelloOS的启动项(即文章开始的代码),再运行HelloOS。
运行成功!
版权声明:本文为m0_49579715原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。