许多分析操作系统的书都是从分析软盘的bootloader开始的。
BIOS将软盘的前512个字节的内容copy到内存0x7c00处,然后跳转过去,执行引导扇区代码。
在此之前,BIOS的执行代码,书上基本没有,若对BIOS功能不熟,分析引导扇区代码,会是一头雾水。
OK,现在就开始分析BIOS。 我的环境:
操作系统: Ubuntu 10.04
x86模拟器:JPC,JPC的使用参考我之前的文章:JPC使用
开发环境: Eclipse,在eclipse中打开JPC工程,方便查看运行代码。
下载编译bios:
在ubuntu中apt-get source bochs,就可以得到bochs的bios代码。
我提取了BIOS-bochs-legacy相关代码,下载链接: bios_bios.zip
编译BISO-bochs-legacy命令如下,或者执行压缩包里的build.sh :
将生成的BIOS-bochs-legacy重命名为bios.bin,放置jpc的 resources/bios目录下,然后运行JPC,BIOS启动界面如下: