Mr. Process的一生-Linux内核的社会视角 (2)启动
其实这才应该是这一系列文章的第一节,因为这篇文章讲的是盘古开天地的事。话说Mr.
Process是一个现代人,但是,只要是人,总该有个祖先。人们总想知道自己从哪来,然后才可以估摸算一下自己将去向何方。所以咱也要了解一下
Linux的世界里人类的起源。
图1:从上电到BIOS
按下电源开关的那个真实的人就是Linux世界里的上帝,他创造了Linux世界的一切。当他按下机箱上的电源开关时,主板开始供电,CPU上的
Reset
Pin被拉高,这会引起CPU的一系列动作,这些动作是芯片设计时就决定的。CPU中的一些寄存器被置为固定的值,因为这些寄存器可能在启动的过程中要使
用,比如CS(代码段寄存器)和EIP(指针指令寄存器)。这一步完成之后,CPU就可开执行地址为0xfffffff0里的ROM中的程序。这段程序就
是BIOS(Basic Input Output System)。
BIOS完成下面的功能:
1.POST(Power-On Self Test):顾名思名,就是查查有什么设备,这些设备是不是正常。要是CPU有Advanced
Configuration and Power Interface(ACPI
)的支持,也在这个时候进行。ACPI是用来对电源进行管理的,用来节电之类的。
2.初始化设备:确保没有IRQ和IO冲突。
3.寻找OS/Bootloader。这一步后面点再细说
我们在BIOS的设置菜单里能够设置从何处启动,比如软盘,硬盘,光驱…BIOS会按我们设定的顺序搜索OS。
4.把Bootloader复制到RAM里(地址为0×00007c00),然后那个地址开始执行。
什么是Bootloader
?
现在,我们只要关心的是:bootloader
会找到OS
,把OS
内核COPY
到RAM
中。
图2:boot loader的加载
如上图所示,在硬盘的第一个sector,有一个分区表(记录了哪些分区上有操作系统)和一个小版的Bootloader。当这个BIOS被设置为
从这里启动时,这个小版的bootloader被复制到RAM的0×00007c00。然后它会把自己又移动到0×00096a00。在这之后,它再把另
一段Bootloader从硬盘上复制到0×00096c00,然后从那里开始执行。分作两段的原因是因为现在的bootloader太大了,在MBR上
存不完那么多。
Bootloader会把OS的内核映像复制到RAM中。
Bootloader的工作
1. 调用BIOS以显示“Loading Image”的消息。
2. 调用BIOS,把内核映像的前512字节复制到0×00090000,setup()函数在0×00090200。
3. 调用BIOS,把剩下的内核映像加载到0×00010000(小内核zImage)或0×00100000(大内核bzImage)
4. 跳到
相关文档:
PCI是外围设备互联的简称(Peripheral Component
Interconnect)的简称,作为一种通用的总线接口标准,他在计算机系统中得到了广泛的使用。PCI的速度能够达到132M/s。在这里简单的介
绍一下 linux 下PCI驱动的实现。
在编写一个PCI驱动的时候我们先得确定系统中是否有我们的设备。我们可以通过lspci
查看PCI设备。
[roo ......
linux命令大全 cat cd
chmod chown
cp cut
名称:cat
使用权限:所有使用者
使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName
说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案)
参数:
-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n ......
developerWorks 中国
>
Linux
>
Linux 汇编语言开发指南
文档选项
<tr
valign="top"><td width="8"><img alt="" height="1" width="8"
src="//www.ibm.com/i/c.gif"/></td>< ......
主题: linux内核模块的程序结构--模块加载函数(必须),模块卸载函数(必须),模块许可证声明(必须),模块参数(可选),模块导出符号(可选),模块作者的等信息声明(可选)
一个linux内核模块主要由以下几个部分组成。
1、模块加载函数"用module_init()来指定"(必须)
当通过insmod和modprobe命令加载内核模块时 ......
用了近10年的Windows,突然有兴趣去想体验Linux,去感受shell的魅力,体验终端操作的感觉,更重要的是编译使用开源的软件。多少也算是为以后使用服务器或者小型机之类打点基础。于是正装待发开始漫长的linux远征。
战役一: RedHat
我:老板,有Linux的碟么?
&nbs ......