系统启动和内核管理(一)

系统启动和内核管理(一)

 

(以CentOS5/6为例)

一、Linux的组成:

1、Linux:kernel+rootfs

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

rootfs:程序和glibc

库:函数集合,function,调用接口(头文件负责描述);

过程调用,procedure,无返回值;

函数调用,function;

程序,二进制执行文件

2、内核设计流派:单内核,把所有的功能集成于同一个程序;微内核,每种功能使用一个单独子系统实现。

3、Linux的内核:

   (1)内核特点:支持模块化(.ko,内核对象);支持内核模块的动态装载和卸载

   (2)组成部分:核心文件,/boot/vmlinuz-3.10.0-327.el7.x86_64  (CentOS7)

 blob.png                                            

ramdisk:辅助的伪根系统

CentOS 5: /boot/initrd-VERSION-release.img

CentOS6,7: /boot/initramfs-VERSION-release.img

   (3)模块文件:/lib/modules/3.10.0-327.el7.x86_64/  (CentOS6)

    blob.png

二、Linux的启动流程及功能模块讲解:

1、CentOS6的启动流程:

blob.png

MBR:446: bootloader,64: 分区表, 2: 55AA  (破坏其中的一个字节都启动不了,命令#dd if=/dev/zero of=/dev/sda bs=1 count=1,请谨慎操作该命令)

GRUB:primary boot loader :1st stage,1.5 stage;secondary boot loader :2nd stage,分区文件

blob.png

kernel:自身初始化;探测可识别到的所有硬件设备;加载硬件驱动程序(可能借助于ramdisk加载驱动);以只读方式挂载根文件系统;运行用户空间的第一个应用程序:/sbin/init

blob.png

由下图中的红色框标示的程序解决加载启动时跟文件系统的格式模块问题:

blob.png

将initramfs-2.6.32-642.el6.x86_64.img重命名成initramfs-2.6.32-642.el6.x86_64.img.gz后,使用gunzip命令解压,得到还是initramfs-2.6.32-642.el6.x86_64.img,使用命令file可以看出该文件是cpio压缩文件,使用命令cpio -id 解压可以得到

如下图的解压文件,相当于一个根(虚拟根)结构文件:

blob.png

blob.png

启动流程步骤说明:(1)加载BIOS的硬件信息,获取第一个启动设备。

  (2)读取第一个启动设备MBR的引导加载程序(grub)的启动信息

  (3)加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备。

  (4)核型执行init程序并获取运行信息。

  (5)Init执行/etc/rc.d/rc.sysinit文件。

  (6)启动核心的外挂模块(/etc/modprobe.conf)。

  (7)Init执行运行的各个批处理文件(scripts).

  (8)Init执行/etc/rc.d/rc.local.

  (9)执行/bin/login程序,等待用户登录。

  (10)登录之后开始以Shell控制主机。

2、POST:加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、串并行接口、键盘、CD-ROM光驱等硬件情况的检测。

ROM:BIOS,Basic Input and Output System,保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、开机加电自检程序和系统启动自举程序等。

RAM:CMOS互补金属氧化物半导体,保存各项参数的设定

按次序查找引导设备,第一个有引导程序的设备为本次启动设备

3、bootloader:引导加载器,引导程序

   Windows:ntloader,仅是启动OS

   Linux:功能丰富,提供菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核

4、init程序的类型:

  SysV:init, CentOS 5之前;配置文件:/etc/inittab

  Upstart:init,CentOS6;配置文件:/etc/inittab, /etc/init/*.conf

  Systemd:systemd, CentOS 7;配置文件:/usr/lib/systemd/system,/etc/systemd/system

5、ramdisk:

 内核中的特性之一:使用缓冲和缓存来加速对磁盘上的文件访问

ramdisk–> ramfs提高速度

CentOS 5: initrd, 工具程序:mkinitrd(修复工具)

CentOS 6: initramfs,工具程序:mkinitrd, dracut

注:修复initramfs-2.6.32-642.el6.x86_64.img,先挂载光盘,进入救援模式;执行命令#mkinitrd /boot/initramfs-`uname -r`.img `uname -r` 即可(CentOS5,将initramfs改成initrd)

6、运行级别:(/sbin/init CentOS6之前)

运行级别:为系统运行或维护等目的而设定;0-6:7个级别

0:关机

1:单用户模式(root自动登录), single, 维护模式

2: 多用户模式,启动网络功能,但不会启动NFS;维护模式

3:多用户模式,正常模式;文本界面

4:预留级别;可同3级别

5:多用户模式,正常模式;图形界面

6:重启

           默认级别:3, 5

          切换级别:init #

          查看级别:runlevel; who -r

7、init初始化:

init读取其初始化文件:/etc/inittab

初始运行级别(RUN LEVEL)

系统初始化脚本

对应运行级别的脚本目录

捕获某个关键字顺序

定义UPS电源终端/恢复脚本

在虚拟控制台生成getty

在运行级别5初始化X

8、CentOS5的inittab文件

(1)配置文件:/etc/inittab,每一行定义一种action以及与之对应的process

(2)格式:id:runlevel:action:process

         级别格式定义如下:

         id:3:initdefault:     默认级别模式为3,字符界面

si::sysinit:/etc/rc.d/rc.sysinit    无论是任何级别模式,系统都需要读取初始化文件

l0:0:wait:/etc/rc.d/rc0

l1:1:wait:/etc/rc.d/rc1…

……………………

l6:6:wait:/etc/rc.d/rc6         

(3)action选项:wait: 切换至此级别运行一次

respawn:此process终止,就重新启动之

initdefault:设定默认运行级别;process省略

(4)sysinit:设定系统初始化方式(脚本),此处一般为指定/etc/rc.d/rc.sysinit

     A、 设置主机名;B、设置欢迎信息;C、激活udev和selinux

   D、挂载/etc/fstab文件中定义的文件系统

   E、检测根文件系统,并以读写方式重新挂载根文件系统

  F、设置系统时钟;G、激活swap设备;H、根据/etc/sysctl.conf文件设置内核参数

    I、激活lvm及software raid设备;K、加载额外设备的驱动程序;L、清理操作

(5)快捷键关机(Ctrl+Alt+Delete):ca::ctrlaltdel:/sbin/shutdown -t3 -r now   (建议注销掉该项)

9、CentOS6 /etc/inittab和相关文件

/etc/inittab:设置系统默认的运行级别

id:3:initdefault:

/etc/init/control-alt-delete.conf

/etc/init/tty.conf

/etc/init/start-ttys.conf

/etc/init/rc.conf

/etc/init/prefdm.conf

三、服务启动流程:

1、当系统默认启动的级别是3的时候,会读取/etc/rc.d/rc3.d;该目录下存放的都是服务程序。

blob.png

无论是任何的一种启动模式,其对应目录下的服务都是软链接指向:

blob.png

(K开头的服务的关闭的;S开头的是开启运行的)

K*: K##*:##运行次序;数字越小,越先运行;数字越小的服务,通常为依赖到别的服务

S*: S##*:##运行次序;数字越小,越先运行;数字越小的服务,通常为被依赖到的服务

# cat /etc/rc.d/rc

blob.png

2、chkconfig命令:

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

(2)添加/删除服务命令:chkconfig –add name;chkconfig –del name(移除服务后,原文件不会被删除,需要到/etc/init.d目录下手动删除相应的文件)

(3)服务脚本的顶头格式设置:

     #!/bin/bash

     #

     #chkconfig:– 91 35

     #description:服务名称 script

  #LLLL 表示初始在哪个级别下启动,–表示都不启动。(eg:# chkconfig: LLLL nn mm,nn表示的是以S开头的数字,mm表示的是以K开头的数字)

(4)ntsysv命令:字符界面修改当前模式下的服务启动与停止;命令修改当前模式下指定的服务启动与停止,命令#chkconfig[–level levels] name <on|off|reset>;字符界面指定修改那个模式下的服务,命令#ntsysv –level=#

blob.png

四、xinetd管理的服务:

blob.png

#chkconfig telnet on  其实修改的是下图的文件:

blob.png

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

注意:

正常级别下,最后启动一个服务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在指定运行级别脚本后运行

可以根据情况,进行自定义修改

五、tty终端设置:

1:2345:respawn:/usr/sbin/mingettytty1

2:2345:respawn:/usr/sbin/mingettytty2

 …

6:2345:respawn:/usr/sbin/mingettytty6

mingetty会自动调用login程序

x:5:respawn:/etc/X11/prefdm –nodaemon (图形界面)

  

总结:/sbin/init–> (/etc/inittab) –> 设置默认运行级别–> 运行系统初始脚本、完成系统初始化–> (关闭对应下需要关闭的服务)启动需要启动服务–> 设置登录终端

CentOS 6 init程序为: upstart, 其配置文件:

/etc/inittab, /etc/init/*.conf,配置文件的语法遵循upstart配置文件语法格式,和CentOS5不同

 

破解root密码:将机器重启(前提是在机器面前),启动界面开始时按任意键,输入“a”,然后再输入1(选择1模式)或者s或者S或者single

 

演示服务添加与删除:

(1)在/etc/init.d目录下新建个脚本testscript,并赋予执行权限

blob.png

(2)添加脚本到服务中:

blob.png

(3)测试添加的服务:

blob.png

(4)删除添加的服务:

blob.png

blob.png

原创文章,作者:Aaron_wang,如若转载,请注明出处:http://www.178linux.com/44677

赞 (0)
Aaron_wangAaron_wang
上一篇 2016-09-10 08:14
下一篇 2016-09-10 08:15

相关推荐

  • 第三周作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可 who |cut -d ' ' -f1 |sort|uniq 2、取出最后登录到当前系统的用户的相关信息 last|head -1 3、取出当前系统上被用户当作其默认shell的最…

    Linux干货 2016-12-26
  • shell脚本1

    shell脚本基础 shell脚本: 包含一些命令或声明,并符合一定格式的文本文件 格式要求:首行shebang机制 #!/bin/bash #!/usr/bin/python #!/usr/bin/perl shell脚本的用途有: 自动化常用命令 执行系统管理和故障排除 创建简单的应用程序 处理文本或文件 创建shell脚本 第一步:使用文本编辑器来创建…

    2017-08-05
  • linux特殊权限管理

    特殊权限:SUID, SGID, STICKY 正常情况下:  1、进程以某用户的身份运行; 进程是发起此进程用户的代理,因此以此用户的身份和权限完成所有操作; 2、权限匹配模型: (1) 判断进程的属主,是否为被访问的文件属主;如果是,则应用属主的权限;否则进入第2步; (2) 判断进程的属主,是…

    Linux干货 2015-12-19
  • Python函数式编程指南(四):生成器

    生成器是迭代器,同时也并不仅仅是迭代器,不过迭代器之外的用途实在是不多,所以我们可以大声地说:生成器提供了非常方便的自定义迭代器的途径。 这是函数式编程指南的最后一篇,似乎拖了一个星期才写好,嗯…… 转载请注明原作者和原文地址:) 4. 生成器(generator) 4.1. 生成器简介 首先请确信,生成器就是一种迭代器。生成器拥有next方法并且行为与迭代…

    Linux干货 2015-03-11
  • MBR与GPT分区结构的不同及磁盘分区命令总结

    一、MBR分区结构 主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区,是目前比较流行的一种分区结构。磁盘的0磁道0扇区称为MBR,它的大小是512字节,这个区域被分为三个部分: 第一部分为boot loader(主引导程序),占446字节; 第二部分为Partition table(分区表),即DPT,占64字节,每个分区项…

    Linux干货 2016-08-29
  • Linux 基础(6)—— 权限

    修改所属人,所属组                文件的 r w x 权限            修改文件的权限chmod          umask &nb…

    2017-07-27

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-10 08:40

    总结的很好,但对于一些关键词,希望能通过一些通俗易懂的话描述出来,这会让文章更具有可读性。