内核组成部分:

核心文件:/boot/vmlinuz-VERSION-release

ramdisk:辅助的伪根系统

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

CentOS 6,7: /boot/initramfs-VERSION-release.img

initramfs-2.6.32-696.el6.x86_64.img

initramfs-3.10.0-693.el7.x86_64.img

模块文件:/lib/modules/VERSION-release

启动流程

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


Grub

grub的代码分三个阶段被加载.


grub stage 1

存在启动硬盘的0柱面,0磁道,第一个扇区中,即MBR中,MBR的前446个字节为以引导代码,

也就是grub stage 1,所谓的stage1  ,作用只有一个,就是找到grubstage1.5,然后将其加载的

到内存。


grub stage 1.5

它的作用就是用来识别常见的不同类型的文件系统,从而找到"/boot目录所在的分区"对应的文件

系统的驱动,驱动多大、存在于哪些扇区中,这些都是在安装操作系统的时候根据用户的设置自

动生成的,我们有了"/boot目录所在分区"的文件系统驱动,那么/boot/grub/stage2这样的比较

大的文件可以直接操作了。


grub stage 2

grub真正的核心程序,能让用户以菜单方式将操作系统加载、新增参数、修改选项,这些全都是

stage2的功用,  前面的grub stage 1和grub stage 1.5所做的事情就是为了运行grub stage 2

然后由stage 2借助grub.conf再去引导系统启动。


Grub.conf文件格式

1.png

default=0  

timeout=1

其中default=0表示有多个grub引导菜单时,选择哪一个作为默认启动引导菜单,

也就是说,当有多个title时,默认选择哪个title中的配置作为默认引导配置,

default=0表示默认使用第一个title菜单中的配置。

其中timeout=1表示如果5秒以内,用户没有选择任何一个title,

则使用default中指定的title菜单中

的配置进行引导。

root (hd0,0)

root (hd0,0)表示kernel文件和initrd文件所在分区,而不是指"根分区"。

一般指的是/boot

(hd0,0)表示第一块硬盘的第一个分区,也就是我们正在使用的/dev/sda1

splashimage=(hd0,0)/grub/splash.xpm.gz

引导时的背景图片,此项不建议设置,

因为如果此项配置的背景图片并不存在,

那么在引导时会出现

错误

password

启动菜单编辑认证

hiddenmenu

在系统启动时,隐藏所有title菜单,并不让用户直接看到启动菜单,如果用户不做任何干预,则默

认启动default所指定的title

title

系统引导菜单显示的内容,

可以理解为一个grub引导的配置列表,可以存在多个title,

也就是说可以用不同的配置去引导系统,title下面配置项都属于当前title

kernel

/vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=建议写UUID

告诉grub内核文件在哪,这里的root指的是真正的/分区

这里可以接上启动时的内核参数

initrd

/initramfs-2.6.32-696.el6.x86_64.img

告诉grub  initramfs文件在哪,这个文件里面是包含了1.5阶段内核所需要寻找的驱动

 kernel:

自身初始化:

探测可识别到的所有硬件设备

加载硬件驱动程序(借助于ramdisk加载驱动)

以只读方式挂载根文件系统

运行用户空间的第一个应用程序:/sbin/init


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


运行级别

/sbin/init CentOS6之前

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

0:关机

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

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

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

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

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

6:重启

切换级别:init 数字

查看级别:runlevel ; who -r

修改运行级别:

/etc/inittab的这一行,id:3:initdefault:


centos 7 查看与设置运行级别

# systemctl get-default

systemctl set-default 这里写下面2条中的一条

runlevel 3级别:multi-user.target

runlevel 5级别:graphical.target



在引导菜单中中切换运行模式

开机按ESC键引导至此画面,按a

1.png

修改为0-6之间的数字,回车即可。

1.png

修改此文件中/etc/inittab的这一行才能保存下来

id:3:initdefault:


常用系统加载时的配置文件

版本

配置文件

作用

运行时间

6

/etc/rc.d/rc.sysinit

设置主机名,挂栽卷,等操作

启动时运行一次

6

/etc/inittab

设置运行级别


6

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

设置是否按ctrl+alt+delete重启

建议注释

7

/usr/lib/systemd/system/ctrl-alt-del.target

设置是否按ctrl+alt+delete重启

建议注释


/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) 清理操作


chkconfig命令

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

chkconfig [--list] [name]


 添加:

SysV的服务脚本放置于/etc/rc.d/init.d (/etc/init.d)

chkconfig --add name

#!/bin/bash

#LLLL 表示初始在哪个级别下启动,- 表示都不启动

# chkconfig: LLLL nn mm


 删除:

chkconfig --del name

 修改指定的链接类型

chkconfig [--level levels] name <on|off|reset>

--level LLLL: 指定要设置的级别;省略时表示2345

 ntsysv命令


服务脚本中,以下这一行是必须的。

# chkconfig: 2345 10 90

2345 > 指定运行级别

190 > 指定关闭顺序

rc N --> 意味着读取/etc/rc.d/rcN.d/

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

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


xinetd管理的服务

service 命令:手动管理服务

service 服务 start|stop|restart

service --status-all

 瞬态(Transient)服务被xinetd进程所管理进入的请求首先被xinetd代理

配置文件:/etc/xinetd.conf、 /etc/xinetd.d/<service>

service telnet

{

flags           = REUSE

socket_type     = stream

wait            = no

user            = root

server          = /usr/sbin/in.telnetd

log_on_failure  += USERID

disable         = yes

}


与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在指定运行级别脚本后运行

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