抄写Linux源码(Day10:在 qemu_x86_64 上打印字符串)

根据 Day9 阅读的 Shell 程序分析

为了支持 shell 程序的执行,我们需要提供:
1.缺页中断(不理解为什么要这个东西,只是闪客说需要,后边再说)
2.硬盘驱动、文件系统 (shell程序一开始是存放在磁盘里的,所以需要这两个东西)
3.fork,execve, wait 这三个系统调用,也可以说是 进程调度 (否则无法 halt shell 程序并且启动另外的程序)
4.键盘驱动、VGA/console/uart 驱动、中断处理 (支持键盘输入和屏幕显示)

这些东西毫无疑问都需要在内核层上开发

milestone1: 所以,我们第一个目标是在内核层上打印 Hello World,随后才能在内核层进行更高难度的开发

回顾之前的笔记

  1. 抄写Linux源码(Day6:读闪客文章第一回 “最开始的两行代码”)
  2. 抄写Linux源码(Day7:读闪客文章第二回 “自己给自己挪个地儿”)
  3. 抄写Linux源码(Day5:能够打印字符串的 MBR)

我们能够轻松地实现在内核层上打印 Hello World 的功能

已知 Intel CPU 在上电后会加载 MBR 到 0x7c00 并执行,那么我们只要把打印字符串的代码写在磁盘的 MBR 上,在让 qemu-x86_64 加载这块磁盘就可以了

具体操作可以在 3. 抄写Linux源码(Day5:能够打印字符串的 MBR) 里找到

这样一来,我们自己的 OS 就终于有了第一段代码,仓库可见:https://github.com/YinhuaChen-cloud/cnix

你可能感兴趣的:(抄写Linux内核源码,linux,运维,服务器)