学习笔记之centos系统启动流程


CentOS 系统的启动流程:简介:(内核级别)POST -读取-> BootSequence(在BIOS中) –> BootLoader(在MBR中)–> Kernel(借助ramdisk完成根文件系统的加载)–> rootfs(readonly)–> /sbin/init (用户空间的第一个程序)接下面 (用户空间的启动流程): /sbin/init (读取/etc/inittab) 【centos5,6,7在此略有区别】 设置默认运行级别(1) –> 运行系统初始化脚本,完成系统初始化(2) –>关闭对应级别下需要停止的服务,启动对应级别下需要开启的服务(3)–> 设置登录终端(4) [–> 启动图形终端](5并非必须的)细说内核级别的系统启动: POST:加电自检; ROM:CMOS(互补金属氧化物) BIOS:Basic Input and Output System(基本输入输出系统) ROM+RAM Boot Sequence: 按次序查找各引导设备,第一个有引导程序的设备即为本次启动要用到的设备; bootloader:引导加载器,程序; Linux: LILO:LIinux LOader GRUB:Grand Uniform Bootloader(统一引导加载器 GRUB 0.X:Grub Legacy(centos5) GRUB 1.X:Grub2(centos7) 引导加载器的功能:提供一个菜单,允许用户选择要启动的系统或不同的内核版本; 把用户选定的内核装载到RAM中的特定空间中,解压、展开,而后把系统控制权移交给内核;bootloader装载到哪里呢?装载到MBR中(UEFI除外) 附加介绍MBR:Master Boot Record(主引导记录) MBR一共512bytes: 前446bytes:放bootloader 64bytes:fat (分区表) 2bytes:55AA 魔数(如果是55AA表示MBR有效) 加载Kernel: 自身初始化: 探测可识别到的所有硬件设备; 加载硬件驱动程序;(有可能会借助于ramdisk加载驱动) 以只读方式挂载根文件系统; 运行用户空间的第一个应用程序:/sbin/init 注:内核init启动之后,后面的任务就交给init,内核就不管了(除了有特权操作) init程序的类型: CentOS 5-:SysV init 配置文件:/etc/inittab CentOS 6:Upstart 配置文件:/etc/inittab /etc/init/*.conf CentOS 7:Systemd 配置文件:/usr/lib/systemd/system/, /etc/systemd/system/注:centos启动,内核运行用户空间的第一个应用程序init,之后后面的一切任务都交由用户空间的应用来管理了。 Linux内核的特性之一:使用缓冲和缓存来加速对磁盘上的文件访问; ramdisk -换成-> ramfs(是一种提速机制) 对CentOS 5ramfs: initrd 可由工具程序创建:mkinitrd CentOS 6,7: initramfs 工具程序:dracut, mkinitrd总结:内核级别的系统初始化如下: 系统初始化流程(内核级别): POST -读取-> BootSequence(在BIOS中) –> BootLoader(在MBR中)–> Kernel(借助ramdisk完成根文件系统的加载)–> rootfs(readonly)–> /sbin/init (用户空间的第一个程序)注:bootloader代码量很小,为了简化简洁期间2,bootloader本身无法驱动逻辑卷,那么很显然他就没办法访问逻辑卷上的文件,因此我们把内核文件放在逻辑卷上bootloader是无法加载的,所以,此时的kernal只能放在基本磁盘上
上面为centos内核级别的启动======================================================================================下面介绍/sbin/init:在各系统上有所差异,所以分别介绍也即用户空间的系统启动流程 CentOS 5: SysV init 基础掌握: 运行级别:为了系统的运行或维护等目的而设定的机制; 0-6:7个级别; 0:关机, shutdown 1:单用户模式(single user),root用户,无须认证;维护模式; 2、多用户模式(multi user),会启动网络功能,但不会启动NFS;维护模式; 3、多用户模式(mutli user),完全功能模式;文本界面; 4、预留级别:目前无特别免费云主机域名使用目的,但习惯以同3级别功能使用; 5、多用户模式(multi user), 完全功能模式,图形界面; 6、重启,reboot 默认级别:3, 5 级别切换:init # 级别查看: who -r runlevel 配置文件:/etc/inittab 每行定义一种action以及与之对应的process(centos5)
id:runlevels:action:process id:一个任务的标识符; runlevels:在哪些级别启动此任务;#,###,也可以为空,表示所有级别; action:在什么条件下启动此任务; process:任务; action: wait:等待切换至此任务所在的级别时执行一次; respawn:一旦此任务终止,就自动重新启动之; initdefault:设定默认运行级别;此时,process省略; sysinit:设定系统初始化方式,此处一般为指定/etc/rc.d/rc.sysinit脚本; 例如: id:3:initdefault: (默认运行级别为3) si::sysinit:/etc/rc.d/rc.sysinit(设定系统初始化方式) 级别 l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 ………… l6:6:wait:/etc/rc.d/rc 6示例:/etc/rc.d/rc 3 意味着去启动或关闭 /etc/rc.d/rc3.d目录下的服务脚本所控制服务,解释如下: K*:要停止的服务;K##*,优先级,数字越小,越是优先关闭;依赖的服务先关闭,而后关闭被依赖的; S*:要启动的服务;S##*,优先级,数字越小,越是优先启动;被依赖的服务先启动,而依赖的服务后启动; rc脚本功用:接受一个运行级别数字为参数; rc脚本框架: for srv in /etc/rc.d/rc#.d/K*; do $srv stop done for srv in /etc/rc.d/rc#.d/S*; do $srv start done 目录/etc/init.d/* (/etc/rc.d/init.d/*)下脚本执行方式:
# /etc/init.d/SRV_SCRIPT {start|stop|restart|status}# service SRV_SCRIPT {start|stop|restart|status}eg:[root@bucktan init.d]# /etc/init.d/network restartShutting down interface eth0: [ OK ]Shutting down loopback interface: [ OK ]Bringing up loopback interface: [ OK ]Bringing up interface eth0: Determining if ip address 172.18.26.6 is chkconfig命令:管控/etc/init.d/每个服务脚本在各级别下的启动或关闭状态; 查看:chkconfig –list [name] 添加:chkconfig –add name表示“name”受chkconfig管理 能被添加的服务的脚本定义格式之一: #!/bin/bash # # chkconfig: LLL(级别) NN(启动优先级) NN(g关) # description: 删除:chkconfig –del name 修改指定的链接类型: chkconfig [–level LEVELS] name –level LEVELS:指定要控制的级别;默认为2345;
注意:正常级别下,最后启动的一个服务S99local没有链接至/etc/init.d下的某脚本,而是链接至了/etc/rc.d/rc.local (/etc/rc.local)脚本;因此,不便或不需写为服务脚本的程序期望能开机自动运行时,直接放置于此脚本文件中即可。 其他示例: tty1:2345:respawn:/usr/sbin/mingetty tty1 … … tty6:2345:respawn:/usr/sbin/mingetty tty6 表示:当我们级别是2345中的任何一种时,会运行mingetty程序,这个程序又是打开终端的 (1)mingetty知识启动终端,对于登录,mingetty会调用登录login程序;从而login程序调用登录 (2)打开虚拟终端的程序除了mingetty之外,还有诸如getty等; 系统初始化脚本:/etc/rc.d/rc.sysinit是做什么,它的功能 注:此脚本是学习脚本的好例子 (1) 设置主机名; (2) 设置欢迎信息; (3) 激活udev和selinux; (4) 挂载/etc/fstab文件中定义的所有文件系统; (5) 检测根文件系统,并以读写方式重新挂载根文件系统; (6) 设置系统时钟; (7) 根据/etc/sysctl.conf文件来设置内核参数; (8) 激活lvm及软raid设备; (9) 激活swap设备; (10) 加载额外设备的驱动程序; (11) 清理操作; 总结(用户空间的启动流程): /sbin/init (读取/etc/inittab) 设置默认运行级别(1) –> 运行系统初始化脚本,完成系统初始化(2) –>关闭对应级别下需要停止的服务,启动对应级别下需要开启的服务(3)–> 设置登录终端(4) [–> 启动图形终端](5并非必须的)注:centos6,7与5的区别在下面介绍 CentOS 6: init程序:upstart,但依然为/sbin/init,其配置文件: /etc/init/*.conf, /etc/inittab(仅用于定义默认运行级别) 注意:*.conf为upstart风格的配置文件; rcS.conf rc.conf start-ttys.conf
CentOS 7: init程序:systemd,配置文件:/usr/lib/systemd/system/*, /etc/systemd/system/* 完全兼容SysV脚本机制;因此,service命令依然可用;不过,建议使用systemctl命令来控制服务; # systemctl {start|stop|restart|status} name[.service] 至此centos系统启动介绍完

相关推荐: MAC地址格式详解

以太网编址在数据链路层,数据帧通常依赖于MAC地址来进行数据交换,它如同公网IP地址一样要求具有全球唯一性,这样才可以识别每一台主机。那么MAC地址如何做到这点?它的格式又是什么?MAC地址,英文全称Medium Ac免费云主机域名cess Control,直…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 01/28 18:03
下一篇 01/28 18:03