以下使用环境与上一篇相同:Windows10+VirtualBox(新建虚拟机: Ubuntu-64-bit; HelloOS-设置-常规-名称改为Cosmos)
第12讲课程链接:https://time.geekbang.org/column/article/381157 参考评论:大致操作流程如下图:
其实从上讲的启动后的错误提示如下图可以看出,需要一个.eki文件,而grub.cfg文件中配置了这个文件的名字,所以后面需要对应修改该文件配置部分。

1. 不知道第12讲课程代码下的hd.img与第10讲自己生成的有没有不同,最后是将12讲的hd.img直接复制到了win10对应的共享目录D:\HelloOS\VirtualBox_VMs\Cosmos下覆盖了原来的文件。
2. 启动Ubuntu虚拟机,进入到 lesson12/Cosmos 目录下,执行 make vboxtest,如上图评论所述,不需要理会如下图VBox相关的错误提示,因为没有在Ubuntu虚拟机中再安装VBox并创建虚拟机Cosmos。其中生成的Cosmos.eki文件在release目录下

注:上图中此处虽然已经生成了hd.vdi文件,但是经尝试直接用在Cosmos上的结果不对,如下图:(按照下文继续操作最终成功了)

3. 回到虚拟机Cosmos目录即 VirtualBox_VMs/Cosmos 下,注意前面已经将此处替换为12讲目录下的hd.img文件了(之前的不知道行不行),然后执行上一篇中的操作直到grub.cfg文件。
4. grub.cfg文件修改
menuentry 'HelloOS' {
insmod part_msdos
insmod ext2
set root='hd0' #只有一个硬盘,因此设置根目录为hd0(就是hd.vdi)
multiboot2 /boot/Cosmos.eki #加载boot目录下的Cosmos.eki文件----修改了这里,因为前面make vboxtest生成的名字是Cosmos.eki
boot #引导启动
}
set timeout_style=menu
if [ "${timeout}" = 0 ]; then
  set timeout=10 #等待10秒钟自动启动
fi
5. 执行 sudo cp /mnt/...../release/Cosmos.eki /mnt/...../boot/ ,将前面生成的Cosmos.eki文件拷贝到 boot 目录下
注意这一步要在grub安装后执行,如果提前拷贝进去,grub安装后该文件就被没有了。
6. 按上一篇操作继续执行生成 hd.vdi 文件,一直到启动 Cosmos 虚拟机。
7. 启动Cosmos虚拟机,捕获鼠标-按下Enter,运行结果与课程一致: