《Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理》——2.1 设置根设备、硬盘...

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所示。

image

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值