linux 启动协议分析 由boot.txt翻译而来
在x86平台上,linux内核用了一个比较复杂的启动协议规范,主要由于历史原因,早期想把内核做成可启动映像,复杂的计算机内存模型和由于实模式DOS成为主流操作系统而影响的.
现在有下列启动协议存在:
旧版内核:只支持zImage和Image.
2.00:增加bzImage和initrd支持,也拥有了一种正规化的方法来实现启动装载器(* boot
loader)和内核间的通信。setup.S建造了一块可移动,但是仍旧可写的传统的安装程序加载区域。
2.01:增加了一些溢出警告
2.02:这是新的命令行协议。它降低了常规的内存使用上限(* 见以下MEMORY
LAYOUT内存布局介绍)。没有覆盖传统的安装程序区域,因此对于那些使用了来自SMM或者32位BIOS入口地址的EBDA(* Extended BIOS
Data Area,拓展BIOS数据域)的系统,这样做可以使得启动更加安全。
2.03:明确了高端的initrd地址可被 bootloader 使用.
2.04:扩展syssize
域到四个字节
2.05:使得保护模式下的 内核可被重定位,增加 relocatable_kernel
和kernel_alignment
域.
2.06:增加一个域存放 boot command line 的大小.
2.07:增加半虚拟化启动协议,在load_flags
中 增加 hardware_subarch
和 hardware_subarch_data
和 KEEP_SEGMENTS
标志.
2.08:增加CRC32校验和ELF格式的有效载荷。增加
payload_offset 和payload_length 域 用于定位有效载荷(payload)
2.09:增加一个64位的物理指针指向setup_data结构体的单链表.
2.10:增加了init_size 和 pref_address 域.
传统的用于早期的Image和bImage的Memory的映射图:
100000
图形接口卡信息和BIOS自身
0A0000 +------------------------+ 从这一下的640K称为基本内存
| Reserved for
BIOS | 未使用,被BIOS EBDA保留
09A000 +------------------------+
|
Command line |
| Stack/heap |
被实模式下的内核代码所使用
098000 +------------------------+
| kernel
setup &nb
相关文档:
Resources on the site
• Interactive map of GNU/Linux OS and FOSS
• "GNU/Linux is my home" - map of GNU/Linux system
• Interactive map of Linux kernel
• Linux inside
• Linux Technology Reference (single page view)
• Linux kernel diagram
• Li ......
http://linux.chinaitlab.com/safe/794893.html
许多刚接触Linux的网络管理员发现,他们很难由指向点击式的安全
配置界面转换到另一种基于编辑复杂而难以捉摸的文本文件的界面。本文列出七条管理员能够也应该可以做到的步骤,从而帮助他们建立更加安全
的Linux服务器
,并显著降低他们所面临的风险。
&nbs ......
陈莉君
:http://www.lupaworld.com/26540/viewspace-45751.html
从
99
年开始带学生分析
Linux
内核,一路走来,积累了不少资料,也编写和翻译了近
10
本相关书籍,一直在摸索怎样才能使大家尽快走入内核,但似乎没有捷径。尤其是内核版本的不断更新,更是不少内核爱好者无所适从。
我们初次接触的内核资料是&ldq ......
关于linux图形界面的基本知识
作者:GuCuiwen email:win2linux@163.com
很多Linux初学者分不清楚Linux和X之间, X和Xfree86之间, X和KDE, GNOME等之间是什么关系. 常常混淆概念,我想以比较易于理解的方式说明一下X,X11,XFREE,WM,KDE,GNOME等之间的关系.由于本人水平有限可能存在错误,请高手指正 ......
无论什么编程语言都离不开条件判断。SHELL也不例外。
if list then
do something here
elif list then
do another thing here
......