您的位置:首页 > 运维架构 > Linux

linux启动过程浅析

2010-05-29 20:41 253 查看


BIOS[/b]:[/b]位于主板上只读存储器上的微型操作系统。
a. POST系统自检:对系统进行整体检查, 确保各个核心组件存在并正常运行。
b. 设备初始化:初始化核心设备驱动程序, 分配系统资源。
c. 引导设备选择:选择引导设备。
d. 移交执行权:将引导设备第一个数据块(通常是MBR512字节)装入内存,并转移执行权。任何引导磁盘的第一个数据块都必须含有一个小的可执行文件(引导程序)。
Bootloader[/b]:[/b](两个阶段)
第一阶段: MBR中前446个字节中的小的可执行文(引导加载程序第一阶段)负责访问/boot分区, 并载入引导加载程序第二阶段。
第二阶段: 加载并执行存储于磁盘中的Linux内核。
准备初始化内存磁盘(Initial RAM Disk, initrd)环境, 将initrd解压到RAM。
Kernel[/b]:[/b](对内部结构和设备驱动程序进行初始化, 提供初始化文件系统, 启动init)
执行Linux kernel
启动并移交执行权给init。
INIT[/b]:[/b](/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: 定制初始化计划。
可以添加自己的脚本文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 职场 休闲