liyux中bootsect.s文件(0.01 kernel)

本文详细解析了PC机启动过程,包括ROM BIOS自检后如何加载引导扇区至内存特定位置,随后加载setup模块和system模块的过程。文章还介绍了如何确定根文件系统设备号,并解释了硬盘逻辑设备号的构成及其对应的设备文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    PC机加电ROM BIOS自检后,引导扇区(包含bootsect)由BIOS加载到内存0x7C00处,然后将自己移动到内存0x90000处。然后将setup模块(由setup.s编译成)从磁盘加载到内存,紧接着bootsect的后面位置(0x90200),然后利用BIOS中断0x13取磁盘参数表中当前启动引导盘的参数,接着在屏幕上显示"Loading system..."字符串,再将system模块从磁盘加载到内存0x10000开始的地方。随后确定根文件系统的设备号,若没有指定,则根据所保存的引导盘的每磁道扇区数判别出盘的类型和种类并保存其设备号于root_dev(引导块的508地址处),最后长跳转到setup程序的开始处(0x90200)执行setup程序。执行过程表示如下:

注:在程序中硬件设备命名方式如下:1-内存,2-磁盘,3-硬盘,4-ttyx,5-tty,6-并行口,7-非命名管道。由于一个硬盘可以有1~4个分区,因此硬盘还依据分区的不同用此设备号进行指定分区,因此硬盘的逻辑设备号由以下方式构成:设备号=主设备号*256 + 次设备号。两个硬盘的所有逻辑设备号如下表:

逻辑设备号

对应设备文件

说明

0x300

/dev/hd0

代表整个第一个硬盘

0x301

/dev/hd1

表示第1个硬盘的第一个分区

0x304

/dev/hd4

表示第一个硬盘的第4个分区

0x305

/dev/hd5

代表整个第2个硬盘

0x306

/dev/hd6

表示第2个硬盘的第1个分区

0x309

/dev/hd9

表示第2个硬盘的第4个分区

说明:要熟悉系统调用号,及其中断时寄存器设置。。。

下面将进行setup.s的分析。。。。:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值