-
linux系统启动流程
CentOS(5、6)系统启动流程
具体流程:
-
加载BIOS的硬件信息与进行自我测试,并依据设置取得第一个可启动的设备;
-
读取并执行第一个启动设备内MBR的boot Loader
-
依据boot Loader的设置加载Kernel,Kernel会开始检测硬件与加载驱动程序
-
硬件驱动成功后,Kernel会主动调用init进程,而init会取得run-level信息;
-
init执行/etc/rc.d/rc.sysinit文件来准备软件执行的操作环境。
-
init执行run-level的每个服务启动;
-
init执行/etc/rc.d/rc.local文件;
-
init执行终端模拟程序启动login程序,等待用户登录
-
Linux内核特点:
-
支持模块化:.ko(内核对象)
-
如:文件系统,硬件驱动,网络协议等
-
支持内核模块的动态装载和卸载
-
组成部分:
-
核心文件:/boot/vmlinuz-VERSION-release
-
ramdisk:辅助的伪根系统
-
CentOS 5: /boot/initrd-VERSION-release.img
-
CentOS6,7: /boot/initramfs-VERSION-release.img
-
模块文件:/lib/modules/VERSION-release
-
POST:Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、串并行接口、键盘、CD-ROM光驱等硬件情况的检测。
-
ROM:BIOS,Basic Input and Output System,保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、开机加电自检程序和 系统启动自举程序等。
-
RAM:CMOS互补金属氧化物半导体,保存各项参数的设定 按次序查找引导设备,第一个有引导程序的设备为本次启动设备
-
bootloader: 引导加载器,引导程序
-
功能:
-
提供菜单:用户可以选择不同的启动选项。
-
加载内核文件:直接向可启动的程序区段来开始操作系统。
-
转交其他loader:将引导装载功能转交给其他loder负责。
-
加载内核检测硬件与initrd功能
-
内核会以自己的功能重新检测硬件。
config-2.6.32-642.el6.x86_64←内核被编译时选择的功能与模块配置文件
grub←引导装载程序grub相关数据目录
initrd-2.6.32-642.el6.x86_64kdump.img←虚拟文件系统文件
System.map-2.6.32-642.el6.x86_64←内核功能放置到内存地址的对应表
vmlinuz-2.6.32-642.el6.x86_64←内核文件
-
init程序的类型:
-
SysV: init, CentOS 5之前
-
配置文件:/etc/inittab
-
Upstart: init,CentOS 6
-
配置文件:/etc/inittab, /etc/init/*.conf
-
Systemd:systemd, CentOS 7
-
配置文件:/usr/lib/systemd/system /etc/systemd/system
-
第一个进程与配置文件/etc/inittab
-
/sbin/init CentOS 5
-
运行级别:为系统运行或维护等目的而设定;0-6:7个级别
-
默认级别: 3, 5
-
切换级别:init #
-
查看级别:runlevel ; who -r
-
init启动后所做的事情:
-
读取/etc/inittab来读取默认级别
-
执行初始化系统脚本 /etc/rc.d/rc.sysinit 来初始化脚本
-
然后执行 /etc/rc.d/rc 脚本
-
/etc/inittab的内容与用法
-
0:关机
-
1:单用户模式(root自动登录), single, 维护模式
-
2: 多用户模式,启动网络功能,但不会启动NFS;维护模式
-
3:多用户模式,正常模式;文本界面
-
4:预留级别;可同3级别
-
5:多用户模式,正常模式;图形界面
-
6:重启
-
格式如id:5:initdefault:
-
执行初始化系统脚本 /etc/rc.d/rc.sysinit 来初始化脚本
-
/etc/rc.d/rc.sysinit: 系统初始化脚本
-
设置主机名
-
设置欢迎信息
-
激活udev和selinux
-
挂载/etc/fstab文件中定义的文件系统
-
检测根文件系统,并以读写方式重新挂载根文件系统
-
设置系统时钟
-
激活swap设备
-
根据/etc/sysctl.conf文件设置内核参数
-
激活lvm及software raid设备
-
加载额外设备的驱动程序
-
清理操作
-
说明:rc N –> 意味着读取/etc/rc.d/rcN.d/
-
K*: K##*:##运行次序;数字越小,越先运行;数字 越小的服务,通常为依赖到别的服务
-
S*: S##*:##运行次序;数字越小,越先运行;数字 越小的服务,通常为被依赖到的服务
-
for srv in /etc/rc.d/rcN.d/K*; do
$srv stop
done
for srv in /etc/rc.d/rcN.d/S*; do
$srv start
done
-
执行/etc/rc.d/rc.local脚本,此脚本是启动过程中最后启动的一个脚本。最后会执行 /bin/login 登录用户。至此系统启动过程完成。
-
总结:/sbin/init –> (/etc/inittab) –> 设置默认运行级 别 –> 运行系统初始脚本、完成系统初始化 –> (关闭对应 下需要关闭的服务)启动需要启动服务 –> 设置登录终端
-
CentOS 6 init程序为: upstart, 其配置文件: /etc/inittab, /etc/init/*.conf,配置文件的语法遵循upstart配置文件语法格式,和CentOS5不同。
-
根据系统启动原理破解密码
-
CentOS6
1重启
2敲任意键
3按a键,修改内核参数
4输入1 | S | s | single 进入单用户模式
5进入系统后修改密码
-
计划任务练习
1 、每周2, 4, 7备份/var/log/messages文件至/logs目录中,文件名形如“messages-yyyymmdd”
10 0 * * 0,2,4 root /bin/cp /log/message /logs/messages-`date %F`
2 、每两小时取出当前系统/proc/meminfo文件中以S或M开头的信息追加至/tmp/meminfo.txt文件中
0 2 * * * root /bin/cat /proc/meminfo | /bin/grep '^[S|M].*' >> /tmp/meminfo.txt
原创文章,作者:502795641,如若转载,请注明出处:http://www.178linux.com/45436