2009-12-04

最近在看grub2的代码,于是就想自己写一个很微型的kernel玩玩。于是就去读multiboot规范。可是它的最近的文档是5年前写的,而multiboot2仅仅是草稿。grub2的multiboot loader在启动的时候,也是优先查找第一版的magic number。

multiboot 只是把kernel载入进内存,即便kernel是elf64,此时的机器状态也是在32位的保护模式下,并且没有开PG。

之后需要漫长的过程,打开PAE、设置MSR、把cr3指向PML4、开启PG等等。我从网上抄了些代码总算是能运行了,摆脱汇编进入C语言的main函数。并且写了个hello world。这应该是我写过的最难写的hello world了。哭。

在将要睡的时候,终于找到了freebsd的这段实现:/usr/src/sys/amd64/amd64/mpboot.S 依然是一如既往的精巧。明天再读吧!

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥