(2021年10月28日打卡第一天)
打卡第一天:通过GRUB启动我们自己的操作系统HelloOS
1、安装nasm
通过命令
sudo apt-get install nasm
安装nasm:
2、把windows主机上的源码复制到虚拟机ubuntu中
3、通过make自动编译操作系统HelloOS
在源码lesson02目录空白处右击鼠标,点击Openin Terminal打开一个命令窗口,输入命令make回车即可:
4、拷贝编译生成的HelloOS.bin到boot目录下
5、修改/etc/default/grub
- 我们可以看到该文件的属性是只读的,不能直接用vim或者gedit修改,怎么办呢?
在该界面空白处右击鼠标,打开一个命令窗口,输入命令
sudo chmod 777 grub
修改该文件权限,然后就可以用gedit grub打开该文件进行修改了。
我们可以看到此时grub文件的属性就是可读可写了。
备注:当修改保存的时候,如果提示无法修改该只读文件的时候,要么通过sudo chmod 777 /etc/default/grub修改该文件权限,要么在上图vim中输入命令
:w !sudo tee %
强制修改该只读文件,按照提示输入大写字母O,按回车,输入命令!q退出vim,再次more或者cat该文件可以发现已经修改成功。
6、更新grub配置
sudo update-grub
7、修改/boot/grub/grub.cfg,增加HelloOS启动项
//install.md
menuentry 'HelloOS' {
insmod part_msdos
insmod ext2
set root='hd0,msdos4' #注意boot目录挂载的分区,这是我机器上的情况
multiboot2 /boot/HelloOS.bin
boot
}
把install.md中的内容复制到/boot/grub/grub.cfg中的启动选项后面(其中msdos4按照本机实际情况改为msdos1,具体参考下面** 9、通过命令ls验证系统GRUB引导在硬盘的哪个分区的内容):
备注:当修改保存的时候,如果提示无法修改该只读文件的时候,要么通过sudo chmod 777 /boot/grub/grub.cfg修改该文件权限(具体参考上面5、修改/etc/default/grub**的内容),要么在上图vim中输入命令
:w !sudo tee %
强制修改该只读文件,按照提示输入大写字母O,按回车,输入命令!q退出vim,再次more或者cat该文件可以发现已经修改成功。
8、重启虚拟机
在命令行中输入sudo reboot,或者sudo shutdown -r now重启虚拟机后,显示如下界面:
9、通过命令ls验证系统GRUB引导在硬盘的哪个分区
按C键进入命令模式:
注意,输入上图所示的ls (hd0,msdos1)之后,按一下tab键,该命令尾部会自动加上反斜线/:
然后再按tab键,即可列出该分区下的目录名,看是否有boot目录:
确认该分区存在boot目录后,输入命令ls (hd0,msdos1)/boot,按下tab键,自动补上反斜线/:
然后再按tab键,即可列出boot目录下的所有文件,查看是否有我们生成的HelloOS.bin文件:
找到我们生成的HelloOS.bin文件后,确认该分区与/boot/grub/grub.cfg文件中的
set root='hd0,msdos1' #注意boot目录挂载的分区
一致,按esc键返回启动选项界面,选中最后一行HelloOS选项按回车键,成功启动我们自己的 Hello OS:
- 如果要关机或者重启,通过虚拟机电源选项进行: