Linux系统裁剪(1)之Linux系统启动流程

这段时间在学校Linux系统内核的相关知识,本来想要学一点写一点日记,但是后来发现这段知识对我来说比较抽象,所以花了两三天的时间才搞明白,又反复裁剪实验了数十次,现在终于可以在半小时之内完成系统裁剪,与模块的装载卸载等操作。现在就总结一下如何只使用Linux内核来制作一个小型的操作系统,当然在此之前我需要先总结一下Linux系统的启动流程。

1.Linux系统启动流程

POST(加电自检)——>BIOS(Boot Sequence)——>MBR(BootLoader(前446字节):一般分阶段1,阶段1.5以及阶段2,其中阶段1,即stage1是存放在MBR中,stage1.5和stage2都是存储在/boot中的,这个分区是在跟文件系统没有挂载时的另一个独立小分区)——>Kernel(加载vmlinuz和initrd或者initramfs)——>/sbin/init(其配置文件是 /etc/inittab)

过程大概就是,先加电自检,然后CPU会到指定的区域上读取代码,一般是ROM中,自检完成后根据BIOS上的Boot Sequence选择启动设备,然后到该设备上第一个扇区上的446字节中去获取系统需要加载的内核vmlinuz,以及设备的基础驱动文件initrd或者initramfs,这样就可以挂载根文件系统,挂载完成以后就开始初始化系统,即启动第一个用户进程/sbin/init(这也是为什么init的PID永远为1的原因),根据init的配置文件/etc/inittab来进行系统的初始化流程,启动用户空间,定义系统启动级别等等。

如下图(图片选自网络):



2.init配置文件的主要作用

init的配置文件是/etc/inittab,主要作用有

a.设置默认运行级别

b.定义运行的初始化脚本(rhel5中是/etc/rc.d/rc.sysinit)

c.启动指定级别下的S开头的服务,关闭以K开头的服务

d.定义CrtlAltDel组合键功能,默认是3分钟后重启系统,一般需要注释掉或者修改掉

e.启动字符终端

f.启动图形终端


3.CentOS5.X的init配置文件

#
# inittab       This file describes how the INIT process should set up
#               the system in a certain run-level.
#
# Author:       Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
#               Modified for RHS Linux by Marc Ewing and Donnie Barnes
#

# Default runlevel. The runlevels used by RHS are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
# 
<span style="background-color: rgb(255, 255, 255);"><span style="color:#ff0000;">id:5:initdefault:<span style="white-space: pre;">	</span>//设置系统默认运行级别</span></span>

# System initialization.
<span style="color:#ff0000;">si::sysinit:/etc/rc.d/rc.sysinit<span style="white-space:pre">	</span>//指定系统初始化使用脚本</span>

<span style="color:#ff0000;">l0:0:wait:/etc/rc.d/rc 0</span>
<span style="color:#ff0000;">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<span style="white-space:pre">	</span>//这7行中都有一个关键字wait,表示一旦切换或者启动至该级别,就会让相应目录下所有以S开头的服务启动,并结束所有以K开头的服务</span>

# Trap CTRL-ALT-DELETE
<span style="background-color: rgb(204, 204, 204);"><span style="color:#ff0000;">ca::ctrlaltdel:/sbin/shutdown -t3 -r now<span style="white-space: pre;">	</span>//定义同时按下ctrl+alt+del组合键的操作为3分钟之后重启系统</span></span>

# When our UPS tells us power has failed, assume we have a few minutes
# of power left.  Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly.  
<span style="color:#ff0000;">pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"<span style="white-space:pre">	</span>//定义UPS电源相关选项,一般不需要设置</span>

# If power was restored before the shutdown kicked in, cancel it.
<span style="color:#ff0000;">pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"<span style="white-space:pre">	</span>//定义电源选项,一般不需要设置</span>


# Run gettys in standard runlevels
<span style="color:#ff0000;">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<span style="white-space:pre">	</span>//以上6行定义了是一种虚拟登录接口,关键字respawn表示一旦该服务别关闭,马上重启。这也是为什么我们一旦登录出来系统,马上又可以登录进去,因为这个登录服务又被启动了</span>

# Run xdm in runlevel 5
<span style="background-color: rgb(255, 255, 255);"><span style="color:#ff0000;">x:5:respawn:/etc/X11/prefdm -nodaemon<span style="white-space: pre;">	</span>//我现在还不太清楚该项代表的含义,有知道的朋友麻烦跟我说一下,非常感谢。</span></span>


4.系统初始化脚本rc.sysinit

该脚本位于/etc/rc.d/rc.sysinit,该脚本的主要功能有:

a.设定主机名

b.激活selinux和udev

c.挂载文件系统

d.激活swap

e.以读写方式重新挂载文件系统

f.设置内核参数

g.读取系统时钟

h.键盘映射

i.加载额外的驱动程序


 5.于是整个系统的启动流程图就如下图所示(图片选自网络


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值