操作系统的引导
实验目的
熟悉hitoslab实验环境;
建立对操作系统引导过程的深入认识;
掌握操作系统的基本开发过程;
能对操作系统代码进行简单的控制,揭开操作系统的神秘面纱。
实验内容
此次实验的基本内容是:
1. 阅读《Linux内核完全注释》的第6章,对计算机和Linux0.11的引导过程进行初步的了解;
2. 按照下面的要求改写0.11的引导程序bootsect.s
3. 有兴趣同学可以做做进入保护模式前的设置程序setup.s。
改写bootsect.s主要完成如下功能:
1. bootsect.s能在屏幕上打印一段提示信息“XXXisbooting...”,其中XXX是你给自己的操作系统起的名字,例如LZJos、
Sunix等(可以上论坛上秀秀谁的OS名字最帅,也可以显示一个特色logo,以表示自己操作系统的与众不同。)
改写setup.s主要完成如下功能:
1. bootsect.s能完成setup.s的载入,并跳转到setup.s开始地址执行。而setup.s向屏幕输出一行"NowweareinSETUP"。
2. setup.s能获取至少一个基本的硬件参数(如内存参数、显卡参数、硬盘参数等),将其存放在内存的特定地址,并输
出到屏幕上。
3. setup.s不再加载Linux内核,保持上述信息显示在屏幕上即可。
实验报告
在实验报告中回答如下问题:
1. 有时,继承传统意味着别手蹩脚。x86计算机为了向下兼容,导致启动过程比较复杂。请找出x86计算机启动过程中,
被硬件强制,软件必须遵守的两个“多此一举”的步骤(多找几个也无妨),说说它们为什么多此一举,并设计更简洁
的替代方案。
评分标准
bootsect显示正确,1020%
bootsect正确读入setup,10%
setup显示正确,10%
setup获取硬件参数正确,5%
setup正确显示硬件参数,5%
tools/build.c修改正确,1020%
实验报告,5060%
实验提示
操作系统的boot代码有很多,并且大部分是相似的。本实验仿照Linux0.11/boot目录下的bootsect.s和setup.s,以剪裁它们为主
线。当然,如果能完全从头编写,并实现实验所要求的功能,是再好不过了。
同济大学赵炯博士的《Linux内核0.11完全注释(修正版V3.0)》(以后简称《注释》)的第6章是非常有帮助的参考,实验
中可能遇到的各种问题,几乎都能找到答案。可以在“资料和文件下载”中下载到该书的电子版。同目录中,校友谢煜波撰写