文章目录
搭建实验环境
- 首先点击该篇博文:无法获得锁
完成以上步骤:就安装好了gcc和nasm,此时再安装make
sudo apt install -y gcc nasm make //不安装会报错make: *** 没有规则可以创建目标“menuconfig”
- 克隆代码,进入源码目录
git clone https://gitee.com/lmos/cosmos // 克隆源代码
cd cosmos/lesson02/HelloOS/ //进入源码目录
sudo apt install -y gcc nasm make //记得安装
make # 编译HelloOS内核文件HelloOS.bin
sudo cp HelloOS.bin /boot/HelloOS.bin //拷贝内核文件到grub的引导分区里
- 添加grub启动项
# 编辑grub的配置文件
sudo vim /boot/grub/grub.cfg
# 在键盘上依次按下:
shift + g + o #进入文件,这些都是vim相关的操作
# 把下面内容粘贴到文末
#### BEGIN HelloOS.bin ####
menuentry 'HelloOS' {
insmod part_msdos #GRUB加载分区模块识别分区
insmod ext2 #GRUB加载ext文件系统模块识别ext文件系统
set root='hd0,msdos5' #注意boot目录挂载的分区,这是我机器上的情况
multiboot2 /boot/HelloOS.bin #GRUB以multiboot2协议加载HelloOS.bin
boot #GRUB启动HelloOS.bin
}
#### End /boot/HelloOS.bin ####
#添加的内容保存好,vim的基本操作:wq!
# 在终端重启系统,输入:
reboot
- 重启Ubuntu系统后,在系统启动项菜单里选择 HelloOS,回车
实验问题
1、正在等待缓存锁:无法获得锁:https://blog.csdn.net/qq_44231964/article/details/117002883
- 请跳转搭建实验环境1。
2、make: *** 没有规则可以创建目标“menuconfig”
- 添加命令:sudo apt install -y gcc nasm make //前面写过了哦,我自己在操作的时候没有写这个命令出错的
3、重启选择HelloOS启动后显示 error: file `/boot/HelloOS.bin’ not found.
- 原因就是boot目录挂载的分区写错了,请看问题4.
4、set root=‘hd0,msdos5’ #boot目录挂载的分区,怎么写
-
set root=‘hd0,msdos5’ #注意boot目录挂载的分区 先查看一下自己机器的分区:
java df /boot /
看见自己的数字是几就在BEGIN HelloOS.bin的set root的msdos+你的数字,我的数字是5,所以为set root=‘hd0,msdos5’
5、没有出现引导菜单,让选择HelloOS来启动
原因:
看见hiden了吗,因为你隐藏了,改为menu,下一行的0改为任意一个数只是设置一下menu的大小