BIOS
:
位于主板上只读存储器上的微型操作系统。
a.
POST
系统自检:对系统进行整体检查, 确保各个核心组件存在并正常运行。
b.
设备初始化:初始化核心设备驱动程序, 分配系统资源。
c.
引导设备选择:选择引导设备。
d.
移交执行权:将引导设备第一个数据块(通常是
MBR512
字节)装入内存,并转移执行权。任何引导磁盘的第一个数据块都必须含有一个小的可执行文件(引导程序)。
Bootloader
:
(两个阶段)
第一阶段:
MBR
中前
446
个字节中的小的可执行文
(
引导加载程序第一阶段
)
负责访
问
/boot
分区, 并载入引导加载程序第二阶段。
第二阶段:
加载并执行存储于磁盘中的
Linux
内核。
准备初始化内存磁盘
(Initial RAM Disk, initrd)
环境
,
将
initrd
解压到
RAM
。
Kernel
:
(
对内部结构和设备驱动程序进行初始化, 提供初始化文件系统, 启动
init)
执行
Linux kernel
启动并移交执行权给
init
。
INIT
:
(/sbin/init)
对机器进行初始化
,
启动、停止和监控其他进程。
负责后续启动工作, 并建立用户登录环境。
1.
启动
init
后会读取
etc/inittab
文件设置运行级别, 确定初始化脚本。
/etc/inittab
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set init
default to this)
# 1 - Single user mode root as default user, no network and most demons.
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
used as network server.
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
…
2. /etc/rc.d/rc.sysinit:
初始化
Linux
系统环境。
根据
/etc/inittab
中相关行
si::sysinit:/etc/rc.d/rc.sysinit
启动执行
rc.sysinit
脚本。
rc.sysinit
脚本。
a.
脚本开始查看
/etc/sysconfig/network,
为系统确定主机名, 接着在启动进程初期
proc
文件系统被挂载在
/proc
挂在点上。
b.
查看
/etc/red-hat-release
文件, 查看并显示欢迎信息。
c.
从
BIOS
调用硬件时间, 并用
/sbin/hwclock
命令初始化系统时间。
注:双系统用户经常发现硬件时间和系统时间不对应, 可以用
hwclock
命令
进行同步。
d.
系统初始化
RAID
磁盘。
e.
若有
LVM
等存储技术在此进行初始化。
f.
将根分区挂载为只读, 可以用
fsck
命令进行操作、修复。
g.
将根分区挂载为读写模式, 仍为单一挂载分区。
h.
挂载剩余文件系统。
i.
清除守护进程留下来的各种
PID
文件, 并把各种应用程序留下来的文件和套
接字保留下来。
j.
重新激活交换空间, 为满足系统使用含有根分区位置以外的交换文件。
k.
将最新的引导记录保存到
/var/log/dmesg
中。
3. /etc/rc.d/rc*.d:
建立并初始化
Runlevel
环境。
$ ls /etc/rc.d/
init.d rc0.d rc2.d rc4.d rc6.d rc.sysinit
rc rc1.d rc3.d rc5.d rc.local
根据
/etc/inittab
中设置确定用哪些脚本文件对系统进行初始化。
响应目录下均为指向
../init.d/
目录下脚本文件的软链接。
4. /etc/rc.d/rc.local:
定制初始化计划。
可以添加自己的脚本文件。