ucore lab0 实验准备

前言

实现一个操作系统一直是我的一个愿望,当然为了不只是愿望,因此近期开始尝试实现。搜索了相关资料后,计划先从清华大学的ucore操作系统开始,完成其8个实验,之后再进一步修改、添加新功能,逐步实现自己的OS

另外,博客已经很久没更新了,这是时隔3年的第一次更新,之后也会更多通过博客园记录学习过程

内容

完成实验环境的搭建

开发环境

ucore实验与运行需要在Linux上,因为Win还是比较方便,所以我使用的是虚拟机安装Linux,虚拟机使用VMware,Linux发行版使用最新版的Ubuntu 20.04

ucore实验编写时使用Win的VS Code,较为流畅、方便(当然也可以直接在Ubuntu中使用VS Code编辑),但是编译、调试、运行OS时需要使用虚拟机的Ubuntu,为了使得两者无缝切换,可以将Win的相应目录映射到Ubuntu虚拟机/mnt目录下。如图我映射了Win下的整个A盘,映射名称为a,映射到了Ubuntu的/mnt/hgfs/a目录
ucore lab0 实验准备_第1张图片

下载ucore

使用git从github中下载,github地址,如下:

git clone https://github.com/chyyuu/ucore_os_lab.git

由于git clone比较慢,因此我是直接在github上下载的zip压缩包

安装qemu

ucore使用qemu模拟器运行,qemu支持多种cpu架构的模拟,如i386、arm、mips等,通过apt可安装qemu,如下:

sudo apt-get install qemu-system

编译内核

从github下载的ucore_os_lab目录中,ucore_os_lab/labcodes_answer为较为完整的os代码,首先通过编译lab1的代码了解ucore编译过程。

  • 进入ucore_os_lab/labcodes_answer/lab1_result目录
  • 使用make clean清空编译结果
  • 使用make命令编译

编译成功后生成一系列目标文件,主要有:

  • ucore.img:被qemu访问的虚拟硬盘文件
  • kernel: ELF格式的toy ucore kernel执行文,被嵌入到了ucore.img中
  • bootblock: 虚拟的硬盘主引导扇区(512字节),包含了bootloader执行代码,被嵌入到了ucore.img中
  • sign:外部执行程序,用来生成虚拟的硬盘主引导扇区
    ucore lab0 实验准备_第2张图片

编译完成后使用make qemu即可启动内核运行
ucore lab0 实验准备_第3张图片

内核调试

内核开发过程中不可能一次成功,需要反复调试、运行,为了使调试过程更为直观、易操作,使用Ubuntu中的VS Code进行调试。VS Code需要做如下配置:

  • 将lab1_result目录在VS Code中打开
  • 点击运行-创建launch.json文件,选择gdb调试器
    ucore lab0 实验准备_第4张图片
  • VS Code会自动创建该文件模板,在配置项中只需修改和增加下面两个
    ucore lab0 实验准备_第5张图片
"miDebuggerServerAddress": "127.0.0.1:1234",
"program": "bin/kernel"

完成配置后可通过VS Code进行调试

  • 使用make gdb使qemu进入调试模式
  • 在内核代码中添加断点
  • 启动调试
    ucore lab0 实验准备_第6张图片
  • 进行调试
    ucore lab0 实验准备_第7张图片

参考

  • ucore文档 https://chyyuu.gitbooks.io/ucore_os_docs/content/
  • 学堂在线课程 https://next.xuetangx.com/course/THU08091000267/1516699
  • 手把手教你利用VS Code+Qemu+GDB调试Linux内核 https://zhuanlan.zhihu.com/p/105069730

你可能感兴趣的:(ucore lab0 实验准备)