Linux开机管理流程

来源:岁月联盟 编辑:exp 时间:2011-09-06

自检与引导
由于操作系统的文件系统格式不相同,所以要一个开机管理程序来处理加载
核心,这个核心称为 BOOT Loader ,它存在于第一个扇区内,也就是MBR(主
引导记录)。BIOS通过硬盘的中断INT13来读取MBR。
每种操作系统都有自己的Boot loader ,每个文件系统或分区都会保留一块启动扇区
提供操作系统安装boot loader。
多重操作系统中的boot loader功能:提供选单,载入核心档案,转交其他loader。
加载核心侦测硬件与initrd的功能
由boot loader 读取核心文件后,linux将核心解压缩到主存储器当中,利用核心的
功能测试与驱动设备。
核心文件存放在: /boot 里面 文件名为:/boot/vmlinuz-2.6.18-164.el5
linux为了方便开发商,可以透过动态加载核心模块(/lib/modules)。
为了开机时不影响文件系统,开机过程中根目录是以只读方式挂载。
当核心无法识别磁盘时,而磁盘驱动在/lib/modules内,无法挂载根目录就不能读取驱动
。这时可以利用虚拟文件系统来解决。
虚拟文件系统,文件名:/boot/initrd-2.6.18-164.el5.img ,它能通过boot loader加载到内存中
,然后被解压并在内存中仿真一个根目录,这个仿真根目录能够提供可执行的程序,通
过这个程序来加载开机过程中所要的核心模块。核心模块通过是USB,RAID,LVM,SCSI等文
件系统的驱动,完成后,重新呼叫/sbin/init继续。。。
init及/etc/inittab与runlevel
核心呼叫的第一个程序,/sbin/init(PID=1)最主要的功能准备软件执行的环境,包括系统的主机名、网络
设定、语系处理、文件系统格式及其他服务。所有的动作的都通过init的配置即/etc/inittab来规划。
runlevel规定使用不同的服务,使用不同的环境。有七个等级,分别是:
0-halt        1-single user mode        2- Multi-user,without NFS
3-Full multi-user mode        4-unused        5-X11
6-reboot
init设定处理流程:
1.取得runlevel等级如5        2.使用/etc/rc.d/rc.sysinit进行系统初化
3.根据取得5的runlevel,进行l5:5:wait:/etc/rc.d/rc 5         4.设定 ctrl+alt+del 组合键功能
5.设定UPS的pf,pr机制        6.启动mingetty的六个终端机
7.最终以/etc/x11/perfdm -nodaemon启动图形接口
init处理系统初始化流程/etc/rc.d/rc.sysinit
在/etc/inittab 中si::sysinit:/etc/rc.d/rc.sysinit 利用/etc/rc.d/rc.sysinit来设定好系统环境。
启动系统服务与相关启动配置文件
经过以上流程,系统顺利工作,但还要启动相关的服务。依据/etc/inittab里的runlevel设定值来
决定启动的服务项目。如用 runlevel 3
id:3:initdefault:       #runlevel 设定
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3        #根据这个设定启动
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
即启动/etc/rc3.d文件夹里的服务
[root@lyy grub]# cd /etc/rc3.d/
[root@lyy rc3.d]# ll
总计 4
lrwxrwxrwx 1 root root 17 12-16 21:04 K01dnsmasq -> ../init.d/dnsmasq
lrwxrwxrwx 1 root root 24 12-16 21:04 K02avahi-dnsconfd -> ../init.d/avahi-dnsconfd
lrwxrwxrwx 1 root root 24 12-16 21:04 K02NetworkManager -> ../init.d/NetworkManager
——————————以下略——————————————————————————
特点:
文件全部以Sxx或Kxx,其中xx为数字,数字在档案之间是有相关性的
全部是连续档,连结到stand alone 服务启动目录/etc/init.d去
用户自定义开机启动程序
/etc/rc.d/rc.local这个文件可以执行自己想要执行的系统指令。
根据/etc/inittab设定加载终端机或x-window接口
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
以上代表在runlevel 2345 时会执行六个/sbin/mingetty,所以我们有六个文字终端。
如果想在开机时只提供三个,可以修改以上内容,把tty3-5用#注释
至于如果runlevel5除了提供六个文字终端外还执行/etc/X11/prefdm -nodaemon那个指令
run level 的切换
以run level 5系统的,切换到 run level 3。系统会:
先对比/etc/rc3.d及/etc/rc5.d内的K与S开头的档案;
在新的runlevel 即/etc/rc3.d内有多的K开头档案关闭;
在新的runlevel 即/etc/rc3.d内有多的S开头档案启动。

作者“Liyy学习笔记”