《Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理》——2.1 设置根设备、硬盘-阿里云开发者社区

开发者社区> 华章出版社> 正文
登录阅读全文

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

简介: 本节书摘来自华章计算机《Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理》一书中的第2章,第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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: