启动
1. lilo
2. kernel
3. init 1/2/3/5
important files:
/etc/inittab
/etc/rc.d/...
4. xdm (graphics interface)
important file:
/etc/X11/xinit/xsession
It seemed that different distribution has differrent xsession.
5. see how /etc/X11/xinit/xsession is written.
some related files:
Xclients, xinitrc,
.xsession, .Xclients, .xinitrc
开机过程指的是从打开计算机电源直到Linux显示用户登录画面的全过程。分析LINUX
开机过程也是深入了解LINUX核心工作原理的一个很好的途径。在不同的计算机平台上,
LINUX的开机过程稍有不同,本节以X386微机系统为例,介绍LINUX的开机过程。
1. 开机自检
在刚开机时,根据X386CUP的特性,代码段(CS,CODE SEGMENT)寄存器的值为全1,
指令计数器(IP,INSTRUCTION POINTER)的值为全0,即CS=FFFF、IP=0000。这时CPU根据
CS和IP 的值执行FFFF0H处的指令。由于FFFF0H已经到了基本内存的高地址顶端,所以,
FFFF0H处的指令一般总是一个JMP指令,以便CPU能够跳到比较低的地址去执行那里的代码,
这个地址通常是ROM BIOS 的入口地址。接着,ROM BIOS 进行开机自检,如检查内存,键
盘等。在自检过程中,ROM BIOS会在上位内存(UMB,UPPERMEMORY BLOCK)中进行扫描,
看看是否存在合法的设备控制卡ROM BIOS(如:SCSI卡上的ROM),如果有,就执行其中的
一些初始化代码。最后,ROM BIOS 读取磁盘上的第一个扇区并将这个扇区的内存装入内存。
2. 预引导
假定硬盘是系统的启动磁盘。硬盘的第一扇区称为主引导记录(MBR, MASTER BOOTRECORD)。
MBR 的长度为512字节。可分为两部分:第一部分为引导(PRE-BOOT)区,占了446个字节;
第二部分为分区表(PARTITION PABLE),共有66个字节,记录硬盘的分区信息。预引导
区的作用之一是找到标记为活动(ACTIVE)的分区,并将活动分区的引导区读入内存。
如果用软盘启动计算机,ROM BIOS 读入的是软盘的引导区,即软盘的第一个扇区。
3. 核心映像装入
在LINUX系统中,人们通常把LILO(LINUX LOADER)放在MBR或某个分区的超级块
(SUPERBLOCK)中。假定LILO在MBR中,读取MBR后,LILO就会被首先执行。此时,屏幕上
出现“BOOT:”字样,接下来的工作是装入LINUX核心映像。如果LILO安装在某个分区的超
级块中,通常还会有一个管理开机的程序,这个管理开机的程序负责读取LILO,进而进行
核心映像的装入工作。
4. 核心启动
核心装入完毕后,CPU的控制权就交给了核心启动代码。此时,核心首先进行硬件的
检测和设备驱动程序的初始化,然后运行INIT。INIT 是LINUX核心启动的第一个用户进程,
其进程号为1,是系统其它用户进程的祖先。
5. 系统初始化
INIT进程负责进行一系列系统初始化程序和脚本文件,/ETC/INITTAB中包含了INIT所
做的所有工作。
6. 等待用户登录
系统初始化完毕后,INIT 切换到多用户模式,并为每一个虚拟控制台和串行终端启
动一个GETTY进程。GETTY进程负责接受和检验用户的登录要求。
至此,LINUX系统的启动工作全部完成。不同核心版本的LINUX 的启动过程有一定的
差异,不同发行版本的LINUX 的启动也可能稍有不同,但基本过程是类似的。另外,在
“BOOT:”后,利用“LINUX SINGLE”命令可以迫使LINUX进入单用户模式,除不要求用
户登录和不启动虚拟终端以外,启动过程的其它部分也基本类似。
(出处:http://www.sheup.com)