无忧启动论坛
标题:
初学系统启动过程,做了个总结拿来交流
[打印本页]
作者:
yjfok961
时间:
2007-12-20 20:26
标题:
初学系统启动过程,做了个总结拿来交流
初学系统的启动,对自己这两天的学的作个总结。发上来是希望交流下,如果有地方有误、有缺,或需要补充的请各位大大指出,好让小弟知而后改,也避免误导大家。
每个阶段及其小阶段都蕴含着很多关联的知识,
LZ
只能列举小部分(从网上搜的,一般是自己不明白的地方),想了解更多的,只有靠各位自己去搜了。
预引导阶段:
POST
上电自检:
是微机接通电源后,系统进行的一个自我检查的例行程序。这个过程通常称为
POST——
上电自检(
Power On Self Test
)。对系统的几乎所有的硬件进行检测。
系统启动自举程序:
在完成
POST
自检后,
ROM BIOS
将按照系统
CMOS
设置中的启动顺序搜寻软硬盘驱动器及
CDROM
、网络服务器等有效的启动驱动器
,读入操作系统引导记录,然后将系统控制权交给引导记录,由引导记录完成系统的启动。
BIOS
中断调用:
即
BIOS
中断服务程序,它是微机系统软、硬件之间的一个可编程接口,用于程序软件功能与微机硬件实现的衍接。
引导程序:
Boot Sector[1]
工作。
主引导记录(MBR)
[2]
被装入内存,并且程序开始执行,
活动分区
的引导扇区被装入内存
。NTLDR从引导扇区被装入并初始化。
引导阶段:
1
、初始引导加载器阶段:
NTLDR
:
1、
NTLDR
将计算机微处理器从实模式转换为32位平面内存模式
2
、
NTLDR
开始运行适当的小文件系统驱动程序(
mini-file system drivers
)。小文件系统驱动程序是建立在NTLDR内部的,使NTLDR可以识别每一个用NTFS或者FAT文件系统格式化的分区
2
、操作系统选择阶段:
计算机显示器会显示一个操作系统选单,这是
NTLDR
读取
boot.ini[3]
的结果。
NTLDR
装载所选操作系统
*
如果
NT/XP
被选择,
NTLDR
运行
Ntdetect.com
;对于其他的操作系统,
NTLDR
装载并运行
Bootsect.dos
然后向它传递控制。
3
、硬件检测阶段:
Ntdetect.com
搜索计算机硬件并将列表传送给
NTLDR
,
以便将这些信息写进注册表的
HKEY_LOCAL_MACHINE\HARDWARE
中
4
、配置选择阶段:
计算机含有多个
硬件配置文件
[4]
列表,可以通过按上下按钮来选择。如果只有一个硬件配置文件,计算机不显示此屏幕而直接使用默认的配置文件加载系统
加载内核阶段:
ntldr
加载称为
Windows XP
内核的
ntokrnl.exe
[5]
。
接着
ntldr
加载
硬件抽象层
[6]
(
HAL
,
hal.dll
),然后,系统继续加载
HKEY_LOCAL_MACHINE\system
键,
NTLDR
读取其下的
select
键来决定哪一个
Control Set
(控制集)
[7]
将被加载。(
NTLDR
加载该控制集
\service\...
下
start
键值为
0
的最底层设备驱动;同时,加载并初始化
start
键为
1
的设备驱动
)
。当作为
Control Set
镜像的
Current Control Set
被加载时,
ntldr
传递控制给内核,初始化内核阶段就开始了。
初始化内核阶段:
在初始化内核阶段开始的时候,彩色的
Windows XP
的
logo
以及进度条显示在屏幕中央,在这个阶段,系统完成了启动的
4
项任务:
1
、内核使用在硬件检测时收集到的数据来创建了
HKEY_LOCAL_MACHINE\HARDWARE
键。
2
、内核通过引用
HKEY_LOCAL_MACHINE\system\CurrentControlSet
的默认值复制
Control Set
来创建了
Clone Control Set
。
Clone Control Set
配置是计算机数据的备份,不包括启动中的改变,也不会被修改。
3
、系统完成初始化以及加载设备驱动程序。
内核初始化那些在加载内核阶段被加载的底层驱动程序,然后内核扫描
HKEY_LOCAL_MACHINE\system\CurrentControlSet\service\...
下
start
键值为
1
的设备驱动程序,对有错的设备进行报错。
4
、
Session Manager
启动了
Windows XP
高级子系统以及服务。
Session Manager
启动控制所有输入、输出设备以及访问显示器屏幕的
Win32
子系统以及
Winlogon
进程,初始化内核完毕。
登陆
PS
:
由于刚学启动部分不是很懂操作系统内部的注册表和内核工作,所以加载内核和初始化内核阶段编辑的很模糊,自己也不是很懂,看了个大概,勉强可以看吧。。。。
一些名词解析及补充:
[1]
Boot Sector
也就是硬盘的第一个扇区
,
它由
MBR (Master Boot Record), DPT (Disk Partition Table)
和
Boot Record ID
三部分组成
.
MBR
又称作主引导记录
,
存放系统主引导程序
(
它负责从活动分区中装载并运行系统引导程序
). DPT
即主分区表占用
64
个字节
(0x1BE to 0x1FD),
记录了磁盘的基本分区
信息
.
主分区表分为四个分区项
,
每项
16
字节
,
分别记录了每个主分区的信息
(
因此最多可以有四个主分区
).
Boot Record ID
即引导区标记占用两个字节
(0x1FE and 0x1FF),
对于合法
引导区
,
它等于
0xAA55,
这是判别引导区是否合法的标志
[2]
一般多系统引导程序
(
如
SmartFDISK, BootStar, PQBoot
等
)
都是将标准主引导记录(
MBR
)替换成自己的引导程序
,
在运行系统启动程序之前让用户选择要启动的分区。
而某些系统自带的多系统引导程序
(
如
lilo, NT Loader
等
)
则可以将自己的引导程序放在系统所处分区的第一个扇区中
,
在
Linux
中即为
SuperBlock (
其实
SuperBlock
是两个扇区
)
。
对于做多系统
启动,我想应该也就从这个MBR和boot.ini进行心动的吧。如果系统间是兼容的应该两个都可以,不兼容的话就是用前
者
[3]
Windows XP
主要依赖
Boot.ini
文件来确定计算机在重启(引导)过程中显示的可供选取的操作系统类别。
Boot.ini
在缺省状态下被设定为隐含和系统文件属性
,
并且被标识为只读文件。
从“运行”里输入“
c:\boot.ini
”,
可打开
boot.ini
文件。其常见格式如下:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(X)disk(Y)rdisk(Z)partition(Q)\WINDOWS="Microsoft Windows XP Professional" /fastdetect
SCSI(X)disk(Y)rdisk(Z)partition(Q)\WIN98="Microsoft Windows 98" /fastdetect
现在来解释下里面的内容:
该文件分为
Boot loader
(引导加载)和
Operating systems
(操作系统)两大部分。
在引导加载部分,
timeout=xx
表示等待用户选择操作系统的时间,默认是
30
秒,用户可以根据需要自行更改。
default=xxxx
表示缺省情况下系统默认要加载的操作系统路径,表现为启动时等待用户选择的高亮条部分。现在说下
“multi(0)disk(0)rdisk(0)partition(1)”
的意思:
实际上这是根据
ARC
规则命名的,它是
x86
或
RISC
计算机中用于标识设备的一种通用方法。
ARC
名字指向存放操作系统文件的分区,对于磁盘设备
, ARC
名字的构成如下:
Component(X)disk(Y)rdisk(Z)partition(Q)
Component
(
X
)
部分有两种有效值,即
multi
和
SCSI
,它用于标明硬件适配器。
multi
表示一个非
SCSI
硬盘或一个由
SCSI BIOS
访问的
SCSI
硬盘,而
SCSI
则表示一个
SCSI BIOS
禁止的
SCSI
硬盘。
X
值表示操作系统的系统根目录所在的分区所在的硬盘所在的磁盘控制器在同一磁盘控制器上的序号(
X
从
0
开始)。
disk(Y)
:
对于
SCSI
硬盘来说,
Y
值表示操作系统的系统根目录所在的分区所在的硬盘在同一个磁盘控制器上的硬盘序号
(Y
从
0
开始
)
;对于
multi
来说,
Y
值无任何意义,恒为
0
。
rdisk(Z)
:
对于
multi
来说,
Z
值表示操作系统的系统根目录所在的分区所在的硬盘在同一个磁盘控制器上的硬盘序号
(Z
从
0
开始
)
;对于
SCSI
硬盘来说,
Z
值无意义,恒为
0
。
partition(Q)
:
Q
值表示操作系统的系统根目录所在的分区在同一硬盘上主分区的序号(
Q
从
1
开始)。
后面的参数简述:
/basevideo
强制系统进入640x480/16色VGA模式
/bootlog
将引导日志写入
%SystemRoot%
\Ntbtlog.txt中
/fastdetect
不检查并行和串行端口, 让即插即用驱动程序完成这个任务
/nodebug
禁用内核调试器, 可以加速引导过程, 但可能会导致蓝屏死机
/noserialmice:comx
禁用对指定COM端口的鼠标端口检查
[4]
所谓硬件配置文件
,是指在启动计算机时告诉
Windows
应该启动哪些设备,以及使用每个设备中的哪些设置的一系列指令。当用户第一次安装
Windows
时,系统会自动创建一个名为
“Profile 1”
的硬件配置文件,缺省设置下,在
“Profile 1”
硬件配置文件中启用了所有安装
Windows
时安装在这台计算机上的设备。
从
“
系统属性
”“
硬件
”
对话框中,可以看到这里有一个
“
硬件配置文件
”
的按钮,点击后会打开所示的窗口,在
“
可用的硬件配置文件
”
列表中显示了本地计算机中可用的硬件配置文件清单。
硬件配置文件的作用
仅加载硬件配置文件中的设备驱动程序
在
“
可用硬件配置文件
”
下,使用箭头按钮可以将需要作为默认设置的硬件配置文件移到列表的顶端,这样
Windows
启动时就只会加载所选配置文件中启用的硬件设备。一旦创建了硬件配置文件,我们就可以使用设备管理器禁用和启用配置文件中的设备,这样在下一次启动计算机时就不会加载该设备的驱动程序,从而提高系统启动速度。
快速切换不同的工作环境
前面已经提到,我们可以同时创建多个不同的硬件配置文件,以适应不同的工作环境,只要在
“
硬件配置文件选择
”
小节上选中
“
等待用户选定硬件配置文件
”
项即可,以后启动计算机时就会出现与多重启动菜单相类似的
“
硬件配置文件
”
选择菜单,届时就可以任意切换不同的工作环境了。
对笔记本电脑用户而言,硬件配置文件将是非常实用的,因为大多数笔记本电脑都是在移动的场合使用,当用户将笔记本电脑从一个地方移动到另一个地方时,硬件配置文件允许用户更改计算机使用的设备,例如我们可以创建多个适用于不同场合的硬件配置文件,这样切换起来就非常方便了。
提高启动速度
如果你并未创建多个不同的硬件配置文件,或者希望启动期间自动加载默认的硬件配置文件而不显示列表项,那么请将
“
硬件配置文件选择
”
小节中的
“
秒
”
中输入
“0”
。当然,即使你仍然从列表中选择不同的硬件配置文件,只要在启动时按住空格键就会显示列表了。
恢复缺省配置
如果硬件更改超过一定限度,
Windows XP
可能会要求用户重新激活系统,这是非常麻烦的。不过,如果我们在每次安装或更改硬件之前备份了原来的硬件配置文件,只要从窗口中点击
“
复制
”
按钮,然后在所示的
“
复制配置文件
”
对语框中键入一个新的文件名就可以了,以后出现问题时,就可以重新导入这个事先备份下来的硬件配置文件。
这里要说明的是,上述操作必须以系统管理员的身份登录才行。
[5]
操作系统内核是计算机硬件的第一次扩充,内核执行操作系统与硬件关系密切、执行频率高的模块,常驻内存。
操作系统内核一般包括下述功能:
一、支撑功能,包括中断处理、时钟管理、原语操作;
二、资源管理功能,包括进程管理、存储器管理、设备管理。
[6]
硬件抽象层隐藏特定平台的硬件接口细节
,
为操作系统提供虚拟硬件平台
,
使其具有硬件无关性
,
可在多种平台上进行移植。
硬件抽象层大概分为以下几点
HAL
:
*
上层软件
*
虚拟驱动
,
设置管理模块
*
内部通信
SERVER
*
内部以太网
*
内部通信
CLIENT
*
用户接入口
[7]
控制集中包含设备的驱动程序以及需要加载的服务。
作者:
lvyanan
时间:
2007-12-21 13:55
MBR位于硬盘的0柱面0头1扇区上,C: 盘上的操作系统引导扇位于硬盘的0柱面1头1扇区上,当系统从硬盘开始引导时,首先被BIOS装入的是MBR上的引导程序,然后再由该程序装入操作系统引导扇上的引导程序继续引导,真正的操作系统引导文件的装入,是由操作系统引导扇程序寻址并装入的,至此,操作系统引导才真正开始。
作者:
yjfok961
时间:
2007-12-21 14:17
和“预引导阶段”中,MBR引导,然后活动分区上的系统引导程序引导一样
作者:
luckyboy8879
时间:
2007-12-28 23:49
看不太明白
高深了点
作者:
guohj
时间:
2007-12-29 08:50
学习了。确实不错。谢谢
作者:
o306336202
时间:
2010-5-27 09:36
多谢分享!!看看!!!
作者:
yunzhang
时间:
2010-5-27 22:05
学习学习,懂点基本的东西好做事。
欢迎光临 无忧启动论坛 (http://wuyou.net/)
Powered by Discuz! X3.3