Quantcast
Channel: CodeSection,代码区,Linux操作系统:Ubuntu_Centos_Debian - CodeSec
Viewing all articles
Browse latest Browse all 11063

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

$
0
0

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

(以 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 )


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

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 )


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

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

1 、 CentOS6 的启动流程:


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

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 ,分区文件


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

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


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

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


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

将 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 解压可以得到

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


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

启动流程步骤说明:( 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

Viewing all articles
Browse latest Browse all 11063

Trending Articles