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

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

 

(以CentOS5/6为例)

一、Linux的组成:

1Linuxkernel+rootfs

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

rootfs:程序和glibc

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

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

函数调用,function

程序,二进制执行文件

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

3Linux的内核:

   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的启动流程及功能模块讲解:

1CentOS6的启动流程:

blob.png

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

GRUB:primary boot loader 1st stage1.5 stagesecondary 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程序并获取运行信息。

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

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

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

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

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

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

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

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

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

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

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

   Windowsntloader,仅是启动OS

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

4init程序的类型:

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

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

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

5ramdisk

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

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-67个级别

0:关机

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

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

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

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

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

6:重启

           默认级别:3, 5

          切换级别:init #

          查看级别:runlevel; who -r

7init初始化:

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

初始运行级别(RUN LEVEL)

系统初始化脚本

对应运行级别的脚本目录

捕获某个关键字顺序

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

在虚拟控制台生成getty

在运行级别5初始化X

8CentOS5inittab文件

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         

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

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

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

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

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

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

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

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

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

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

9CentOS6 /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

2chkconfig命令:

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

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

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

     #!/bin/bash

     #

     #chkconfig– 91 35

     #description:服务名称 script

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

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

blob.png

四、xinetd管理的服务:

blob.png

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

blob.png

1service 命令:手动管理服务

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
下一篇 2016-09-10

相关推荐

  • Centos网卡bond

    Centos6_Bonding配置: 1.禁用NetworkManager服务  2.创建bonding设备的配置文件 3.添加从属接口1 4.添加从属接口2 5.重启网卡服务 6.查看bond0状态 7.删除bond配置 Centos7_Bonding配置: 1.添加bonding接口 2.添加从属接口1 3.添加从属接口2 4.修改bondin…

    2017-05-17
  • 系统管理之程序包管理(二)yum详解

    系统管理之程序包管理(二)yum详解:     上节向大家介绍了程序包管理的理论和rpm命令的使用,本篇文章接着向大家介绍rpm的前端使用工具,方便大家更快捷的管理,使用rpm包,提高工作效率。 一 概论: Centos:yum,dnf 两个rpm前端工具 YUM :yellow dog, Yellowdog,Upda…

    Linux干货 2016-08-24
  • 起航——学习Linux工具之VMware Workstation

    一:安装VMware(Windows平台) 二:创建一台虚拟机 到此为止我们就创建了一个拥有一颗CPU、1GB内存和一块20GB硬盘的虚拟机,接下来就可以愉快的安装操作系统了 ^_^  

    2018-03-26
  • 第七周作业

    1、创建一个10G分区,并格式为ext4文件系统; (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; ]#mke2fs -t ext4 -b 2048 -L MYDATA -m 2 O acl /dev/sda1 (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件…

    Linux干货 2017-03-11
  • redis主/从配置及基于sentinel的故障转移

    一、NoSQL基础概念: ACID:原子性、一致性、隔离性、持久性;特性:数据量大、数据变化非常大(数据增长化、流量分布变化、数据间耦合结构变化)、数据源很多; CAP、BASECAP C:多个数据节点的的数据一致;A:用户发出请求后的有限时间范围内返回结果;P:network partition,网络发生分区后,服务是否依可用;CAP理论:一个分布式系统不…

    Linux干货 2014-10-15
  • 网卡相关

    ifconfig eth1 IP / ip a a IP dev eth1 修改指定网卡的IP地址   /etc/udev/rules.d/70-persistent-net.rules 设置Mac地址/网卡名配置文件,建议关机修改Mac地址,否则会造成Mac地址不匹配的情况   /etc/sysconfig/network-script…

    2017-12-18

评论列表(1条)

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

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