2.1 设置根设备、硬盘
内核首先初始化根设备和硬盘,用bootsect中写入机器系统数据0x901FC (见1.2.3节)的根设备为软盘的信息,设置软盘为根设备,并用起始自0x90080 的32字节的机器系统数据的硬盘参数表设置内核中的硬盘信息drive_info。
具体执行代码如下:
//代码路径:init/main.c:
…
#define DRIVE_INFO (*(struct drive_info *)0x90080)//硬盘参数表,参看机器系统数据
#define ORIG_ROOT_DEV (*(unsigned short *)0x901FC)//根设备号
…
struct drive_info { char dummy[32]; } drive_info;//存放硬盘参数表的数据结构
void main(void)
{
ROOT_DEV= ORIG_ROOT_DEV; //根据bootsect中写入机器系统数据的信息设置根设备为软盘
drive_info= DRIVE_INFO; //的信息,设置为根设备
…
}
设置根设备为软盘以及设置硬盘参数表完成后的数据在内存中的位置如图2-1所示。