Linux 0.11内核之旅(一) :bootsect.s

linux 0.11内核是Linus大神写的很早的一个版本的内核,麻雀虽小五脏俱全,总共代码不过两万多行,很适合linux内核入门者拿来对比学习。

下面记录本人阅读的第一个源文件也是内核上电执行的第一个文件bootsect.s.

 

启动流程(bootsect.s)

1.开机

2.BOIS会读取软盘的第一个扇区(512Byte),里面放着bootsect.s,读取到内存中0x07C0:0000的位置,然后跳转至此处执行

3.开始执行bootsect.s,将自身从0x07C0:0000搬运至0x9000:0000[长度512Byte]

4.跳转至0x9000:0000处执行,设置堆栈段和堆栈指针 ss:sp=0x9000:FF00

5.从磁盘读取setup.s到0x9000:0200[长度512Byte * 4]

6.从软盘读取每磁道扇区数,放到cs:sector 变量里。

7. 调用BOIS打印中断,打印 msg1:""Loading my system ..."

8.从软盘读取system.img到1000:0000[长度3000:0000]

9.关闭软盘电机,已提示读取完成

10.判断根文件系统所在的分区是/dev/PS0 还是/dev/at0 或者是用户自定义/dev/ha1?,结果保存至相应内存中

11.跳转至0x9000:0200处执行(执行setup.s)

 

总结

显然bootsect.s的主要工作就自身以及后续的镜像搬运至合理的位置,然后跳至后续程序继续执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值