Linux启动过程

1.Linux组成

(1)Linux: kernel+rootfs
  • kernel:
进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能
  • rootfs:存放操作系统和应用有关的相关程序
    包括:
库:函数集合, function, 调用接口(头文件负责描述)。.so动态库文件.a静态库文件
过程调用:procedure,无返回值
函数调用:function
程序:二进制执行文件
(2)内核设计流派:

单内核(monolithic kernel): 把所有功能集成于同一个程序eg:Linux
微内核(micro kernel):每种功能使用一个单独子系统实现eg:Windows, Solaris

2.内核

(1)Linux内核特点:

支持模块化:.ko(内核对象)
如:文件系统,硬件驱动,网络协议等
支持内核模块的动态装载和卸载

(2)组成部分:

1.核心文件:/boot/vmlinuz-VERSION-release(就是我们常说的内核)
2.ramdisk:
辅助的伪根系统(又叫伪文件系统,放有ext4驱动,相当于开机时模拟一个磁盘)
开机识别,进入boot,识别boot文件系统ext4,进而挂载根

只存放与文件相关的文件
CentOS 5: /boot/initrd-VERSION-release.img
CentOS 6,7: /boot/initramfs-VERSION-release.img
centos6,7文件分开放置
CentOS 6,7: /boot/initramfs-VERSION-release.img只放启动相关文件
模块文件:/lib/modules/VERSION-release
Paste_Image.png
Paste_Image.png

3.CentOS6启动流程

Paste_Image.png

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控制主机

  • POST:Power-On-Self-Test
加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、
显示子系统、串并行接口、键盘、CD-ROM光驱等硬件情况检测。
  • ROM:BIOS,Basic Input and Output System
保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、
开机加电自检程序和系统启动自举程序等。
  • RAM:
CMOS互补金属氧化物半导体,保存各项参数的设定
定义引导设备的顺序,第一个有引导程序的设备为本次启动设备
  • bootloader: 引导加载器,引导程序
windows: ntloader,仅是启动OS
Linux:功能丰富,提供菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装载到内存
中的特定空间中,解压、展开,并把系统控制权移交给内核
  • MBR:
446: bootloader, 64: 分区表, 2: 55AA标记位
  • GRUB:引导计算机程序
stage1:grub有一部分放在BootLoader446字节里,用来引导计算机程序,称为grub的第一阶段 

stage1.5:第一阶段只有446字节,不足以引导文件系统,所以会用得到1.5阶段,用于加载boot分区的文件系统,负责boot问题

stage2:进入boot目录,可以进入boot/grub/grub.conf这个配置文件,这个文件包括计算机启动所用的程序,非常重要。包括内核kernel和伪文件系统文件,负责挂载根(该开机时会把boot识别为根)

grub负责进入boot,initramfs负责挂载根
刚挂载时,会把boot认为是根,然后启动内核后,以/为根,chroot切根
  • kernel:
自身初始化:
探测可识别到的所有硬件设备
加载硬件驱动程序(借助于ramdisk加载驱动)
以只读方式挂载根文件系统
运行用户空间的第一个应用程序:/sbin/init
  • ramdisk:
内核中的特性之一:使用缓冲和缓存来加速对磁盘上的文件访问,并加载相应的硬件驱动
ramdisk --> ramfs 提高速度
CentOS 5: initrd
工具程序:mkinitrd
CentOS 6,7: initramfs
工具程序:mkinitrd, dracut
  • 系统初始化:
POST --> BootSequence (BIOS) -->Bootloader(MBR) --> kernel(ramdisk) --> rootfs(只读) --> init(systemd)

4.init程序的类型:

 CentOS 5之前:
                第一个进程: init,
                配置文件:/etc/inittab
CentOS 6:
               第一个进程:init,
               配置文件:/etc/inittab, /etc/init/*.conf
  CentOS 7:
               第一个进程:systemd,
               配置文件:/usr/lib/systemd/system
                       /etc/systemd/system
CentOS6之前  /sbin/init 
运行级别:为系统运行或维护等目的而设定;0-6:7个级别
            0:关机
            1:单用户模式(root自动登录), single, 维护模式
            2 : 多用户模式,启动网络功能,但不会启动NFS;维护模式
            3:多用户模式,正常模式;文本界面
            4:预留级别;可同3级别
            5:多用户模式,正常模式;图形界面
            6:重启
 默认级别: 3, 5
 切换级别:init #
 查看级别:runlevel ; who -r

5.init初始化

(1)init读取其初始化文件:/etc/inittab
(2)初始运行级别(RUN LEVEL)
(3)系统初始化脚本
(4)对应运行级别的脚本目录
(5)捕获某个关键字顺序
(6)定义UPS电源终端/恢复脚本
(7)在虚拟控制台生成getty
(8)在运行级别5初始化X

Paste_Image.png

6.CentOS 5的inittab文件

 配置文件:/etc/inittab
 每一行定义一种action以及与之对应的process
id:runlevel:action:process

action:动作
wait: 切换至此级别运行一次
respawn:此process终止,就重新启动之
initdefault:设定默认运行级别;process省略
sysinit:设定系统初始化方式,此处一般为指定


Paste_Image.png

7.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

/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##(开机启动):##运行次序;数字越小,越先运行;数字
越小的服务,通常为被依赖到的服务,数字的优先级比字母要高
按照字符排序

eg:

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
Paste_Image.png
Paste_Image.png

8.chkconfig命令

(1)查看服务在所有级别的启动或关闭设定情形:

chkconfig [--list] [name]

(2)添加:

SysV的服务脚本放置于/etc/rc.d/init.d (/etc/init.d)
chkconfig --add name
#!/bin/bash
#LLLL 表示初始在哪个级别下启动,-表示都不启动
# chkconfig: LLLL nn nn

编写一个测试的服务:
chkonfig:- 默认开机时所有模式下都不开启


Paste_Image.png
Paste_Image.png

(3)删除:

chkconfig --del name
Paste_Image.png

(4)修改指定的链接类型

chkconfig [--level levels] name <on|off|reset>
--level LLLL: 指定要设置的级别;省略时表示2345

Paste_Image.png

(5)ntsysv命令 一次只能修改一个级别
Tab键选择OK或者Cencel
空格键选择有没有*号,如果有星号,则启动,
如果没有则在次级别下不启动

Paste_Image.png
Paste_Image.png

9.xinetd管理的服务

(1)service 命令:手动管理服务

service 服务 start|stop|restart
service --status-all

(2)瞬态(Transient)服务(非独立服务)被xinetd进程所管理

进入的请求首先被xinetd代理
(配置文件:
/etc/xinetd.conf 总配置文件
/etc/xinetd.d/<service>)
与libwrap.so文件链接
用chkconfig控制的服务:chkconfig tftp on

Paste_Image.png
Paste_Image.png

可以进入文件可以更改非独立服务状态,改过之后重启服务


Paste_Image.png
Paste_Image.png
Paste_Image.png

注意:

(1)正常级别下,最后启动一个服务S99local没有链接至/etc/rc.d/init.d一 个服务脚本,而是指向了/etc/rc.d/rc.local脚本
(2)不便或不需写为服务脚本放置于/etc/rc.d/init.d/目录,且又想开机时自动 运行的命令,可直接放置于/etc/rc.d/rc.local文件中
• /etc/rc.d/rc.local在指定运行级别脚本后运行
• 可以根据情况,进行自定义修改


Paste_Image.png
Paste_Image.png
 1:2345:respawn(激活):/usr/sbin/mingetty tty1
 2:2345:respawn:/usr/sbin/mingetty tty2
 ...
 6:2345:respawn:/usr/sbin/mingetty tty6
mingetty会自动调用login程序
 x:5:respawn:/etc/X11/prefdm -nodaemon
Paste_Image.png

总结:

/sbin/init --> (/etc/inittab) --> 设置默认运行级别 --> 运行系统初始脚本、完成系统初始化 --> (关闭对应下需要关闭的服务)启动需要启动服务 --> 设置登录终端
 CentOS 6 init程序为: upstart, 
其配置文件:/etc/inittab, /etc/init/*.conf
配置文件的语法遵循upstart配置文件语法格式,和CentOS5不同
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,012评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,589评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,819评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,652评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,954评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,381评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,687评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,404评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,082评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,355评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,880评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,249评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,864评论 3 232
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,007评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,760评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,394评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,281评论 2 259

推荐阅读更多精彩内容