Ubuntu虚拟机下运行HelloOS报错,提示找不到挂载分区

问题描述:

在Ubuntu虚拟机下运行HelloOS报错。
在这里插入图片描述
在这里插入图片描述错误提示为:

  1. 未找到’hd0,msdos3’磁盘
  2. 需要先加载内核

启动项代码如下:

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版权协议,转载请附上原文出处链接和本声明。