实验1:操作系统的引导
实验的准备工作操作
- 解压源码用
tar -zxvf hit-oslab-linux-20110823.tar.gz
可以使用-C
来指定解压路径,tar -zxvf hit-oslab-linux-20110823.tar.gz -C [path]
- 编译linux-0.11的源码,在
linux-0.11
的文件夹下运行make all
或者make
。 - 在oslab文件目录下运行
./run
运行bochs 中的linux-0.11
。 - 访问linux-0.11里面的文件,使用
sudo ./mount-hdc
来装载硬盘,然后在hdc
中访问,卸载硬盘sudo umount hdc
。
实验内容
- 阅读《Linux 内核完全注释》的第 6 章,对计算机和 Linux 0.11 的引导过程进行初步的了解;
- 按照下面的要求改写 0.11 的引导程序 bootsect.s
- 有兴趣同学可以做做进入保护模式前的设置程序 setup.s。
改写 bootsect.s 主要完成如下功能:
- bootsect.s 能在屏幕上打印一段提示信息“XXX is booting…”,其中 XXX 是你给自己的操作系统起的名字,也可以显示一个特色 logo,以表示自己操作系统的与众不同。
改写 setup.s 主要完成如下功能:
- bootsect.s 能完成 setup.s 的载入,并跳转到 setup.s 开始地址执行。而 setup.s 向屏幕输出一行"Now we are in SETUP"。
- setup.s 能获取至少一个基本的硬件参数(如内存参数、显卡参数、硬盘参数等),将其存放在内存的特定地址,并输出到屏幕上。
- setup.s 不再加载 Linux 内核,保持上述信息显示在屏幕上即可。
bootsect.s的修改
bootsect.s
的功能是将自己从0x7c00
处移动到了0x90000
处。显示字符loding system ...
,然后将磁盘上的setup.s
和system
模块加载到内存中来&#x