2017 08-28 启动和内核管理

  • CentOS 5和6的启动流程 
  • 服务管理 
  • Grub管理

一.Linux组成

(1)Linux: kernel+rootfs——内核及其他应用程序组成
kernel: 进程管理、内存管理、网络管理、驱动程序、文件系统、安
全功能
rootfs:程序和glibc 库:函数集合, function, 调用接口(头文件负责描述) 过程调用:procedure,无返回值 函数调用:function 程序:二进制执行文件 
(2)内核设计流派:
单内核(monolithic kernel):Linux 把所有功能集成于同一个程序

ldd /bin/ls——查看执行的命令是否调用了静态库或是动态库
image.png

ls /boot
image.png

微内核(micro kernel):Windows, Solaris 每种功能使用一个单独子系统实
(3)内核
  • Linux内核特点: 支持模块化:.ko(内核对象)——驱动模块
    如:文件系统,硬件驱动,网络协议等 支持内核模块的动态装载和卸载 
    组成部分: 核心文件:/boot/vmlinuz-VERSION-release
  • ramdisk:辅助的伪根系统 ——存放在该initramfs-2.6.32-696.el6.x86_64.img系统文件中
    作用:解决开机启动的中间顺序问题。
    在开机启动时,首先要进入/boot中,来启动vmlinuz-VERSION-release,
    但是由于/boot的文件系统类型是ext4,它的驱动模块存放在/lib/modules/2.6.32-696.el6.x86_64/kernel/fs/ext4/ext4.ko,而如果想要调用该库文件就必须要进入内核进行加载,所以进入了一个死循环阶段。
    因此加入ramdisk来解决该问题,在initramfs-2.6.32-696.el6.x86_64.img文件中,存有ext4.ko驱动,这样就可驱动/boot/,来加载内核,从而进入根目录,执行接下来的动作
  • CentOS 5: /boot/initrd-VERSION-release.img
  • CentOS 6,7: /boot/initramfs-VERSION-release.img ——"initramfs-2.6.32-696.el6.x86_64.im"
  • 模块文件:/lib/modules/VERSION-release

    locate ext4.ko
    image.png

    实现功能模块化,将硬件的相关功能功存放在模块中,而不是内核中

二.CentOS6启动流程

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程序,等待用户登录 1
    0.登录之后开始以Shell控制主机

(1) POST

  • Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分。
    负责完成对CPU、主板、内存、硬盘子系统、显示子系统、串并行接 口、键盘、CD-ROM光驱等硬件情况的检测。
    按顺序检查由哪个硬件来驱动引导计算机的开启:硬盘、u盘、光盘、网卡都可以来引导计算机的开启,一般情况下用硬盘来引导
  • 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

    centos6——
    image.png

    centos7——
    image.png

(2)MBR

  • 第一阶段
    一部分grub文件存放在MBR的前446字节中,用来驱动——bootloader

    这一部分的grub驱动无法驱动/boot,因为它的文件类型是ext4,其驱动模块 etx4.ko的大小为633k
    image.png
    ,
    所以无法驱动。
  • 第1.5阶段
    在MBR中的512字节后续空间中,存在一个1.5阶段,来解决ext4.ko的驱动问题,也就说,先通过grub来解决挂载/boot的问题,然后进入下一阶段来解决挂载根的问题
  • 第2阶段
    在第1.5阶段加载内核后,进入该阶段来挂载根,cat grub.conf


    image.png

    根的启动文件系统程序存在于initramfs-2.6.32-696.el6.x86_64.img这个文件中,而该文件系统又存在于/boot 中,也就是说先启动/boot,才能启动根。

(3)ramdisk: 

  • 内核中的特性之一:使用缓冲和缓存来加速对磁盘上的文件 访问,并加载相应的硬件驱动
    ramdisk --> ramfs 提高速度 ——该方式直接访问文件体系统上的数据,而不需要先进入磁盘中,再访问文件系统
    CentOS 5: initrd ——模拟磁盘
    工具程序:mkinitrd
    CentOS 6,7: initramfs ——模拟文件系统
    工具程序:mkinitrd, dracut——用来修复initramfs文件
    rm -f initramfs-2.6.32-696.el6.x86_64.img ——删除该文件
    或者删除直接重启,进入就救援模式来修复
    mkinitrd initramfs-2.6.32-696.el6.x86_64.img——修复该文件
    系统初始化: POST --> BootSequence (BIOS) --> Bootloader(MBR) --> kernel(ramdisk) --> rootfs(只读) -> init(systemd)

二.系统启动流程

(一)init程序的类型: 

  • SysV: init, CentOS 5之前
    配置文件:/etc/inittab 
    *Upstart: init,CentOS 6
    image.png

    配置文件:/etc/inittab, /etc/init/
    .conf 
    image.png

    默认模式可以更改,将5改变成其他数字,那么开机就会进入修改后的模式中。
    **Systemd:systemd,
    image.png

    CentOS 7 配置文件:/usr/lib/systemd/system /etc/systemd/system
    image.png

(二)启动流程

  • /sbin/init CentOS6之前 
    运行级别:为系统运行或维护等目的而设定;0-6:7个级别
    0:关机
    1:单用户模式(root自动登录), single, 维护模式
    2: 多用户模式,启动网络功能,但不会启动NFS;维护模式
    3:多用户模式,正常模式;文本界面
    4:预留级别;可同3级别

    5:多用户模式,正常模式;图形界面 ——默认开机会进入该模式下,但也可以手动修改
    image.png

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

(三)init初始化

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

(四)CentOS 5的inittab文件

配置文件:/etc/inittab 
每一行定义一种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:默认进入3模式
    si::sysinit:/etc/rc.d/rc.sysinit:开机会先运行该初始化脚本,无论在哪个模式,都会先运行脚本
    l0:0:wait:/etc/rc.d/rc 0——进入0模式,就会运行rc0.d脚本
    l1:1:wait:/etc/rc.d/rc 1——进入1模式,就会运行rc1.d脚本
    l6:6:wait:/etc/rc.d/rc 6——进入6模式,就会运行rc6.d脚本
    image.png

(五)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密码,这种方法无法通过远程来实现

(六)启动流程顺序

  • /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

image.png

K与S的排列顺数:数字的优先级高于字母,注意按数字排列最大为99,而不是100
image.png

(七)chkconfig命令

chkconfig命令 

查看服务在所有级别的启动或关闭设定情形: chkconfig [--list] [name]
image.png

image.png

添加: SysV的服务脚本放置于/etc/rc.d/init.d (/etc/init.d)
chkconfig --add name
删除: chkconfig --del name 

修改指定的链接类型 chkconfig [--level levels] name <on|off|reset> --level LLLL: 指定要设置的级别;
image.png
image.png

省略时表示2345 ——chkconfig --level atd on,不写模式,自动默认开启2345模式
ntsysv命令
image.png

例子:

chkconfig --level 5 atd off——关闭5模式的atd功能
此时查看ls K*


image.png

重新开启——chkconfig --level 5 atd on
ls S*
image.png

小练习

在/etc/init.d中编辑一个服务
vim testsrv
1 #!/bin/bash
2 #chkconfig:2345 96 07——必须写明,2345代表在这些模式下,开启testsrv功能,96代表开启编号为96 07代表关闭时的编号,相当于创建了一个软连接


image.png
image.png
image.png

3 #description service testsrv 在五中必须加入描述,六中可写可不写
4 . /etc/init.d/functions——调用脚本
5 case $1 in
6 start)
7 touch /var/lock/subsys/testsrv
8 action " testsrv is start..." :
9 ;;
10 stop)
11 rm -f /var/lock/subsys/testsrv
12 action "testsrv is stopped" /bin/true
13 ;;
14 restart)
15 rm -f /var/lock/subsys/testsrv
16 action "testsrv is stopped " /bin/true
17 touch /var/lock/subsys/testsrv
18 action "testsrv is start..." :
19 ;;
20 status)
21 [ -f /var/lock/subsys/testsrv ] && echo "testsrv is running"|| echo "testsrv is stopped"
22 ;;
23 *)
24 echo "usage : testsrv start|stop|restart|status"
25 ;;
26 esac


image.png

写完脚本后,通过chkconfig --add testsrv 加入列表中
删除选项——chkconfig --del testsrv

(八)xinetd服务

servce 命令:手动管理服务
service 服务 start|stop|restart service --status-all 
瞬态(Transient)服务被xinetd进程所管理
进入的请求首先被xinetd代理 ,它只是监听,并不是代替工作,唤醒非独立文件后,由非独立文件来进行工作


image.png

配置文件:
/etc/xinetd.conf——会影响所有的非独立文件,属于总的配置服务

/etc/xinetd.d/<service> 与libwrap.so文件链接
image.png

用chkconfig控制的服务: chkconfig tftp on——开启该服务
或者在 vim /etc/xinetd.d/tftp 将disable=no 改为yes,来开启服务
image.png

image.png

修改之后通过service xinetd testart 来是修改文件生效

注意:正常级别下,最后启动一个服务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在指定运行级别脚本后运行 •
可以根据情况,进行自定义修改

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容