1 尝尝鲜:从一个Hello到另一个Hello

环境:Windows下的Ubuntu 18.04虚拟机

实践一下

🎯目标:让自己的系统输出"Hello OS"

下载源码

  1. 可在系统任意位置,打开终端执行以下命令,下载源码到虚拟机上
git clone https://gitee.com/lmos/cosmos.git

生成bin文件

  1. 在库中具体位置:/lesson02/HelloOS下,编译源码,生成HelloOS.bin
  • 首先,需要安装工具gcc、make、nasm,默认只有nasm没有,其它工具如没有再安装
sudo apt update
sudo apt install nasm
  • 然后,执行编译即可,默认按照Makefile里的规则,生成HelloOS.bin
make

移动bin文件

  1. 将HelloOS.bin放到/boot/目录下
mv HelloOS.bin /boot/

修改grub启动配置⭐

  1. 修改/boot/grub/grub.cfg文件
  • 使用sudo权限,用vim打开
sudo vim /boot/grub/grub.cfg
  • 在最后位置插入以下代码,注意修改两个地方:set root、multiboot2
menuentry 'HelloOS' {
     insmod part_msdos            # GRUB加载分区模块识别分区
     insmod ext2                  # GRUB加载ext文件系统模块识别ext文件系统
     set root='hd0,msdos4'        # 注意boot目录挂载的分区
     multiboot2 /boot/HelloOS.bin # GRUB以multiboot2协议加载HelloOS.bin
     boot                         # GRUB启动HelloOS.bin
}
  • 修改内容参考此步骤,再打开一个终端,观察df /boot/的结果,关注两个地方:文件系统、挂载点
image-20210515092657939
  • 文件系统⭐
    • 若为/dev/sda1,即1对应修改set root='hd0,msdos1'
    • 如果不是sda [其它系统环境],还需看情况修改 [看课程评论]
  • 挂载点⭐
    • 若为/boot,对应修改multiboot2 /HelloOS.bin
    • 若为/,则无需修改

PS:使用:w!保存,使用:q退出编辑

image-20210515092718504

重启机器

  1. 重启机器,在加载系统前疯狂按shift键 [也可能是其他键,如esc键],进入grub引导界面
image-20210515092730798
  • 选择自己的系统,按enter键
image-20210515092740876
  • 如果此处报错,主要涉及系统类型(物理机、其它虚拟机系统)、系统分区类型(UEFI)、分区表类型(GPT)等因素,可参考以下参考内容👇

参考内容

如果在其他环境下运行,可参考课程里的评论和相关博客

课程链接

扫码即可加入:

image-20210523213829681