linux启动流程

linux组成

Linux: kernel+rootfs
kernel: 进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能

rootfs:程序和glibc
库:函数集合, function, 调用接口(头文件负责描述)
过程调用:procedure,无返回值
函数调用:function
程序:二进制执行文件

内核设计流派:
单内核(monolithic kernel):Linux
把所有功能集成于同一个程序
微内核(micro kernel):Windows, Solaris

Linux内核特点:
支持模块化:.ko(内核对象)
如:文件系统,硬件驱动,网络协议等
支持内核模块的动态装载和卸载
每种功能使用一个单独子系统实现

组成部分:
核心文件:/boot/vmlinuz-VERSION-release
ramdisk:辅助的伪根系统
CentOS 5: /boot/initrd-VERSION-release.img
CentOS 6,7: /boot/initramfs-VERSION-release.img
模块文件:/lib/modules/VERSION-release

CentOS6启动流程

linux启动流程

1.加载BIOS的硬件信息,获取第一个启动设备
2.读取第一个启动设备MBR的引导加载程序(grub)的启动信息
3.加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备
4.核心执行init程序,并获取默认的运行信息
5.init程序执行/etc/rc.d/rc.sysinit文件
6.启动核心的外挂模块
7.init执行运行的各个批处理文件(scripts)
8.init执行/etc/rc.d/rc.local
9.执行/bin/login程序,等待用户登录
10.登录之后开始以Shell控制主机

1. POST:Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、串并行接口、键盘、CD-ROM光驱等硬件情况的检测。
ROM:BIOS,Basic Input and Output System,保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、开机加电自检程序和系统启动自举程序等。
RAM:CMOS互补金属氧化物半导体,保存各项参数的设定
按次序查找引导设备,第一个有引导程序的设备为本次启动设备

bootloader: 引导加载器,引导程序
windows: ntloader,仅是启动OS
Linux:功能丰富,提供菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核
LILO:LInux LOader
GRUB: GRand Unified Bootloader
GRUB 0.X: GRUB Legacy, GRUB2

2.MBR

第一阶段

一部分grub文件存放在MBR的前446字节中,用来驱动——bootloader
这一部分的grub驱动无法驱动/boot,因为它的文件类型是ext4,其驱动模块 etx4.ko的大小为633k

第一点五阶段

在MBR中的512字节后续空间中,存在一个1.5阶段,来解决ext4.ko的驱动问题,也就说,先通过grub来解决挂载/boot的问题,然后进入下一阶段来解决挂载根的问题

第二阶段

在第1.5阶段加载内核后,进入该阶段来挂载根。
         ramdisk:
内核中的特性之一:使用缓冲和缓存来加速对磁盘上的文件访问,并加载相应的硬件驱动
ramdisk –> ramfs 提高速度
CentOS 5: initrd
工具程序:mkinitrd
CentOS 6,7: initramfs
工具程序:mkinitrd, dracut
系统初始化:
POST –> BootSequence (BIOS) –> Bootloader(MBR) –> kernel(ramdisk) –> rootfs(只读) –> init(systemd)
系统启动流程
         1. 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
          2.启动流程
/sbin/init CentOS6之前 
运行级别:为系统运行或维护等目的而设定;0-6:7个级别
0:关机
1:单用户模式(root自动登录), single, 维护模式
2: 多用户模式,启动网络功能,但不会启动NFS;维护模式
3:多用户模式,正常模式;文本界面
4:预留级别;可同3级别
5:多用户模式,正常模式;图形界面 ——默认开机会进入该模式下,但也可以手动修改
例如将5改成3,那么开机就会自动进入3模式,也就是字符界面模式

6:重启 ——如果将默认模式改为6,那么开机机会重启,始终无法进入界面。
修复方案时:在重启机器时,按a键进入修改模式,然后输入1进入单用户模式,打开配置文件——/etc/inittab,将默认模式改回5或3模式,然后init3或5重新进入界面
切换级别:init # ——在图形界面中输入init 3就会进入字符界面

查看级别:runlevel ; who -r
       3.init初始化
init读取其初始化文件:/etc/inittab
初始运行级别(RUN LEVEL)
系统初始化脚本
对应运行级别的脚本目录
捕获某个关键字顺序
定义UPS电源终端/恢复脚本
在虚拟控制台生成getty
在运行级别5初始化X
            4.  CentOS 5的inittab文件
 配置文件:/etc/inittab
每一行定义一种action以及与之对应的process id:runlevel:action:process
id:runlevel:action:process
action:
wait: 切换至此级别运行一次
respawn:此process终止,就重新启动之
initdefault:设定默认运行级别;process省略
sysinit:设定系统初始化方式,此处一般为指定
/etc/rc.d/rc.sysinit
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
id:3:initdefault:
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
                 5.  CentOS 6 /etc/inittab和相关文件
/etc/inittab
设置系统默认的运行级别
id:3:initdefault:
示例:
破解CentOS5和6的root口令
/etc/init/control-alt-delete.conf
/etc/init/tty.conf
/etc/init/start-ttys.conf
/etc/init/rc.conf
/etc/init/prefdm.conf
或者重启机器,在开机界面进入单用户模式,就可以直接进入界面,相当于破解了root密码,登陆后可以通过passwd直接修改新的密码,破解了原来的root密码,这种方法无法通过远程来实现
            6.  启动流程顺序
/etc/rc.d/rc.sysinit: 系统初始化脚本
(1) 设置主机名
(2) 设置欢迎信息
(3) 激活udev和selinux
(4) 挂载/etc/fstab文件中定义的文件系统
(5) 检测根文件系统,并以读写方式重新挂载根文件系统
(6) 设置系统时钟
(7) 激活swap设备
(8) 根据/etc/sysctl.conf文件设置内核参数
(9) 激活lvm及software raid设备
(10) 加载额外设备的驱动程序
(11) 清理操作
     说明: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

       7.  chkconfig命令

chkconfig命令 
查看服务在所有级别的启动或关闭设定情形: chkconfig [–list] [name]

添加:
SysV的服务脚本放置于/etc/rc.d/init.d (/etc/init.d)
chkconfig –add name
#!/bin/bash
#LLLL 表示初始在哪个级别下启动,-表示都不启动
# chkconfig: LLLL nn nn
删除:
chkconfig –del name
修改指定的链接类型
chkconfig [–level levels] name <on|off|reset>
–level LLLL: 指定要设置的级别;省略时表示2345
ntsysv命令
       8.xinetd服务
service 命令:手动管理服务
service 服务 start|stop|restart
service –status-all
瞬态(Transient)服务被xinetd进程所管理
进入的请求首先被xinetd代理
配置文件:/etc/xinetd.conf、/etc/xinetd.d/<service>
与libwrap.so文件链接
用chkconfig控制的服务:
chkconfig tftp on
注意:正常级别下,最后启动一个服务S99local没有链接至/etc/rc.d/init.d一个服务脚本,而是指向了/etc/rc.d/rc.local脚本
不便或不需写为服务脚本放置于/etc/rc.d/init.d/目录,且又想开机时自动运行的命令,可直接放置于/etc/rc.d/rc.local文件中
/etc/rc.d/rc.local在指定运行级别脚本后运行
可以根据情况,进行自定义修改

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/90694

(0)
曲吉福曲吉福
上一篇 2018-01-01
下一篇 2018-01-01

相关推荐

  • N22-妙手-第三周博客作业

    1、列出当前系统上所有已经登录的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# who | cut -d' ' -f1 | uniq -c     &nb…

    Linux干货 2016-09-19
  • 马哥教育网络20期+第六周课程练习

    请详细总结vim编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; :%s/^[[:space:]]/#&/ 2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白…

    Linux干货 2016-07-07
  • 文件权限特殊管理之ACL

    ACL:access control list 权限访问列表 应用范围:所属主和所属组和其他用户之外的他叔用户 ACL是Linux系统权限额外支持的一项功能,需要文件系统的支持,例如:ReiserFS , EXT2 , EXT3 , EXT4 , JFS , XFS等都支持ACL功能 centos7 中:安装系统分区和装完系统之后自己手动添加的分区自动支持a…

    Linux干货 2016-08-05
  • N25-第四周

    一、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。     [root@localhost ~]# cp -r /etc/skel /home/tuser1      [root@localhost ~]# chmo…

    Linux干货 2017-01-09
  • zabbix之报警功能的实现

    一、注册微信公众号 首先申请微信公众平台https://mp.weixin.qq.com/一个人最多申请5个公众号,所以还是可以的 申请完之后就可以根据腾讯的提示使用微信公众号了,然后用你自己的微信扫描关注微信号。 就可以看到用户数了,接下来的就要使用的用户的微信ID号了。点击用户查看用户的微信ID号。在浏览器查看用户的微信ID号。就是那个红色的ID了。 h…

    2014-11-12
  • CentOS 6开机启动流程实验篇

    CentOS 6开机启动流程实验篇 centos 系统的启动流程 grub 破坏Linux的核心文件再修复体验系统启动流程 CentOS 6开机启动的具体详情请参见理论篇! 了解了系统启动的基本流程,以下我们通过“破坏式实验”,即破坏系统启动过程中的一些关键环节,使系统无法启动,然后我们再通过修复这些文件使得系统正常重启,进而体验Linux系统的启动流程,这…

    Linux干货 2016-09-19