linux i386引导协议

linux i386引导协议

ID:14999536

大小:67.00 KB

页数:12页

时间:2018-07-31

linux i386引导协议_第1页
linux i386引导协议_第2页
linux i386引导协议_第3页
linux i386引导协议_第4页
linux i386引导协议_第5页
资源描述:

《linux i386引导协议》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、LINUX/I386引导协议----------------------------H.彼得安文最后更新于2002-01-01在i386平台上,Linux内核使用一个相当复杂的引导协定。演变至此,这一方面是由于历史方面的原因,另一方面是由于早期要求将内核本身做成可引导镜像、复杂的PC内存模型,以及因实模式的DOS作为主流操作系统的实际消亡而引发的对PC工业的预期发生的转变。现在,存在四个版本的Linux/i386引导协议。旧内核:只支持zImage和Image。有些很早期的内核甚至不支持命令行。2.00

2、协议:(1.3.73内核)添加了对bzImage和initrd的支持,以及引导加载程序和内核之间通信的规范方法。尽管传统的setup区域仍然假定是可写的,但是Setup.S做成了可重定位的了。(译者注:setup区域会被旧内核的实模式代码重写,比如0x9XXXX处的命令行参数。)2.01协议:(1.3.76内核)添加了堆超出警告。2.02协议:(2.4.0-test3-pre3内核)新加的命令行协议。降低了传统的内存顶端地址。禁止重写传统的setup区域,这使得从系统管理模式(SMM)或从32位BIOS调用的入口地址那里使用扩展BI

3、OS数据区(EBDA)的系统安全引导。zImage不建议使用,但依然支持。2.03协议:(2.4.18-pre1内核)显式地给引导加载程序给出initrd的最高可能地址。****内存布局传统的Image或zImage使用的内核加载器的典型内存布局如下:

4、

5、0A0000+------------------------+

6、BIOS保留

7、不要使用。保留给BIOSEBDA。09A000+------------------------+

8、堆栈/堆/命令行

9、内核实模式代码使用。098000+------------------------+

10、

11、内核setup

12、内核实模式代码。090200+------------------------+

13、内核引导扇区

14、内核遗留引导扇区。090000+------------------------+

15、保护模式内核

16、内核镜像块。010000+------------------------+

17、引导加载程序

18、<-引导扇区入口点0000:7C00001000+------------------------+

19、MBR/BIOS保留

20、000800+------------------------+

21、一般由MBR使用

22、000600+------

23、------------------+

24、仅BIOS使用

25、000000+------------------------+当使用zImage时,保护模式的内核要被迁移到0x100000(“高端内存”)处,内核实模式块(引导扇区、setup以及堆栈和堆)被做成可以迁移到从地址0x10000到低端内存地址末尾之间的任何位置。然而,在2.00协议和2.01协议里,命令行依然必须放在0x9XXXX的地址范围,那段范围的内存依然会被早期的内核重写。2.02协议解决了那个问题。最好保持“内存顶端”,即低端内存中被引导加载程序触摸到的最高点,越低越

26、好。因为一些较新的BIOS已经开始在低端内存顶部附近分配一些相当多数量的内存了,称作扩展BIOS数据区(EBDA)。引导加载程序应该用“INT12h”BIOS调用检查有多少低端内存可以用。但是,如果INT21h报告说内存数量不足,那引导加载程序除了给用户报错外什么也干不了了。因此,引导加载程序要设计得当,尽量少占用低端内存空间。zImage或老的bzImage内核需要在0x90000段内写数据,引导加载程序要确保不要使用0x9A000地址以上的内存,有太多的BIOS会闯入那个地址以上。****实模式内核头下文以及内核引导系列的任何地

27、方,一个“扇区”指512字节。和底层媒体的实际扇区大小无关。加载Linux内核的第一步是加载实模式代码(引导扇区和setup代码)然后检测下面的内核头的偏移量0x01f1处。实模式代码最大总共可以有32K,但引导加载程序却可能只选择开始的两个扇区(1K)加载,然后检测启动扇区大小。内核头如下:偏移协议字段名释义/大小01F1/1所有setup_sectssetup以扇区计的大小01F2/2所有root_flags如果设置,表示根文件系统只读挂载01F4/2所有syssize不要使用–仅bootsect.S使用01F6/2所有swap

28、_dev不要使用–已过时01F8/2所有ram_size不要使用–仅bootsect.S使用01FA/2所有vid_mode视频模式控制01FC/2所有root_dev默认根设备号01FE/2所有boot_flag0xAA55幻数02

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。