linux0.11--bootsect.s

0.11的bootsect是用as86编写的,其实直到2.4版本才同意用as编写的

bootsect的功能:开机后,ROM BIOS自检后,将引导扇区代码bootsect加载到0x7c00处。

bootsect执行期间:

 

1.将bootsect自己搬到0x90000处

2.将setup(第2-5,共4个扇区)搬到bootsect之后,即0x90200处

3.将system模块加载到0x10000处

4.确定根文件系统所在的设备号,若没有指定,根据每磁道扇区数量判断盘的类型和种类,存放在bootsect的508,509处,此处的数值根据

   自己使用的设备真是情况修改

5.510,511处存放0xaa55表明是引导扇区

 

 

所遇到问题:

1.SYSSIZE = 0x3000表明system模块的长度,真实长度为(0x3000<<16) = 192K

2.ROOT_DEV = 0x306,Linus当年的根文件系统所在第2个硬盘的第1个分区

   Linux系统老式的设备号命名,dev_no = ((major << 8) + minor)

   major的意义,1--内存,2--磁盘,3--硬盘,4--ttyx,5--tty,6--并行口,7--非命名管道

3.子程序read_it的作用为将system加载到0x10000处

4.程序最后使用段间跳jmpi 0, 0x9020调到setup处,至此bootsect结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值