2018-09-29

1、简述linux操作系统启动流程

大家都知道Linux内核是一个操作系统中非常重要的一环,它是底层硬件与上层软件链接的枢纽,Linux系统的组成:内核+根文件系统

Linux内核特点:

支持模块化:.ko 

支持模块运行时动态装载或卸载


组成部分:

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


2.ramdisk:(动态创建临时根文件,里面是内核启动加载磁盘文件系统根必须的磁盘驱动程序等,在某些个人计算机上,可以设计无需此帮助,使用缓冲和缓存来加速对磁盘上的文件访问,把内存当硬盘使用)

ramdisk:ramdisk --> ramfs

CentOS 5: initrd    工具程序:mkinitrd

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

(文件位置)CentOS 6,7:/boot/initramfs-VERSION-release.img


3.模块文件:(包含许多内核需要加载的模块文件,如文件系统类型文件存放)

/lib/modules/VERSION-release


如我这里的vmlinuz-3.10.0-327.e17.x86_64 就是内核的核心文件

initramfs-3.10.0-327.el7.x86_64.img 就是相对应的ramdisk文件

而、lib/modules/就是相对应内核版本的模块文件


centos 系统启动流程

1.内核空间

(1)POST:加电自检;ROM:CMOS     BIOS:Basic Input and Output System

ROM+RAM

(2)Boot Sequence:按次序查找各引导设备,第一个有引导程序的设备即为本次启动要用到的设备;


*MBR:Master Boot Record

512bytes:

446bytes:bootloader

64bytes:fat

2bytes:55AA (有效)非55AA(无效)


(3)bootloader:引导加载器,程序 Linux:(放置于MBR中)

LILO:LIinux  LOader

GRUB:Grand Uniform Bootloader

(这个过程是选择操作系统内核,将内核装载到内存特定空间中。把系统控制权给内核)


*GRUB                                                                       

bootloader:1st stage

Partition:filesystem driver, 1.5 stage

Partition:/boot/grub, 2nd stage


(MBR)bootloadder—————(GRUB)Partition(第二阶段,提供交互式界面,选择内核类型)————加载内核


(4)加载内核(kernel)

开始自身初始化

探测可识别的所有硬件设备——加载硬件驱动(可能借助ramdisk)———只读挂载文件系统(读取根文件系统)————运行总父程序init(用户空间的老大)


*init程序的类型:

CentOS 5-:SysV init     配置文件:/etc/inittab

CentOS 6:Upstart        配置文件:/etc/inittab/etc/init/*.conf

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


总结

*内核空间(内核级别的启动流程)

POST(电自检)——Boot Sequence(查找引导设备)——(MBR)bootloadder—————(GRUB)Partition(第二阶段,提供交互式界面,选择内核类型)————加载内核————探测可识别的所有硬件设备——加载硬件驱动(可能借助ramdisk)———只读挂载文件系统(读取根文件系统)————运行总父程序init(用户空间的老大)


2.用户空间(分别从5,6,7版本说明)


centos 5 (级别适用于6,7)

*设置默认运行级别

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

默认级别:3, 5

级别切换:init #

级别查看:(1)who -r   (2)runlevel

配置文件:/etc/inittab

0:关机, shutdown

1:单用户模式(single user),root用户,无须认证;维护模式;

2、多用户模式(multi user),会启动网络功能,但不会启动NFS;维护模式;

3、多用户模式(mutli user),完全功能模式;文本界面;

4、预留级别:目前无特别使用目的,但习惯以同3级别功能使用;

5、多用户模式(multi user), 完全功能模式,图形界面;

6、重启,reboot

目录下的服务脚本所控制服务;

K*:要停止的服务;K##*,优先级,数字越小,越是优先关闭;依赖的服务先关闭,而后关闭被依赖的;

S*:要启动的服务;S##*,优先级,数字越小,越是优先启动;被依赖的服务先启动,而依赖的服务后启动;


inittab服务

配置文件地址:/etc/init.d/服务名

 chkconfig  后台服务管理命令

 /etc/init.d/* (/etc/rc.d/init.d/*)


centos7 init,centos5 inttab服务位置

 脚本框架:#!/bin/bash# (级别)(启动优先级)(关闭优先级) 

                            # chkconfig: LLL NN NN#

 description: (非必要) 

 for srv in /etc/rc.d/rc#.d/K*; do

 $srv stop 

done 

 for srv in /etc/rc.d/rc#.d/S*; do

 $srv start 

done

脚本执行方式:# /etc/init.d/SRV_SCRIPT {start|stop|restart|status}# service SRV_SCRIPT {start|stop|restart|status} 

 每个服务脚本在各级别下的启动或关闭状态;

 查看:chkconfig --list name 

添加:chkconfig --add name

 删除:chkconfig --del name 

修改模式状态chkconfig --level number name <on|off|reset>

*系统初始化脚本:/etc/rc.d/rc.sysinit(相对于centos5来说)

(1) 设置主机名;

(2) 设置欢迎信息;

(3) 激活udev和selinux;

(4) 挂载/etc/fstab文件中定义的所有文件系统;

(5) 检测根文件系统,并以读写方式重新挂载根文件系统;

(6) 设置系统时钟;

(7) 根据/etc/sysctl.conf文件来设置内核参数;

(8) 激活lvm及软raid设备;

(9) 激活swap设备;

(10) 加载额外设备的驱动程序;

(11) 清理操作;

*终端配置文件

tty1:2345:respawn:/usr/sbin/mingetty tty1

... ...

tty6:2345:respawn:/usr/sbin/mingetty tty6

(1)mingetty会调用login程序;

(2)打开虚拟终端的程序除了mingetty之外,还有诸如getty等;


centos 6 服务配置

init程序:upstart,但依然为/sbin/init,其配置文件:

/etc/init/*.conf, /etc/inittab(仅用于定义默认运行级别)

注意:*.conf为upstart风格的配置文件;

rcS.conf

rc.conf

start-ttys.conf

CentOS 7 服务配置

init程序:systemd,配置文件:/usr/lib/systemd/system/*,  /etc/systemd/system/*

完全兼容SysV脚本机制;因此,service命令依然可用;不过,建议使用systemctl命令来控制服务;

# systemctl  {start|stop|restart|status}  name[.service]


centos7全新的rc服务脚本位置

总结

*用户空间(用户级别的启动流程)

/sbin/init——/etc/inttab(访问配置文件)——设置默认运行级别—————运行系统初始化脚本,完成系统初始化————关闭K服务开启S服务————设置登录终端---------启动图形终端(非必要)


合并总结

*内核空间+用户空间(相对于centos5,6而言)

POST(电自检)——Boot Sequence(查找引导设备)——(MBR)bootloadder—————(GRUB)Partition(第二阶段,提供交互式界面,选择内核类型)————加载内核————探测可识别的所有硬件设备——加载硬件驱动(可能借助ramdisk)———只读挂载文件系统(读取根文件系统)————运行总父程序init(用户空间的老大)/sbin/init——/etc/inttab(访问配置文件)——设置默认运行级别—————运行系统初始化脚本,完成系统初始化————关闭K服务开启S服务————设置登录终端---------启动图形终端(非必要)



2、简述grub启动引导程序配置及命令行接口详解


我们知道Linux开机过程中遇到grub交互界面,来选择内核和系统类型,ramdisk等


对于(centos5,6来说)
grub legacy:

stage1: mbr

stage1_5: mbr之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统;

stage2:磁盘分区(/boot/grub/)

配置文件:/boot/grub/grub.conf <-- /etc/grub.conf

stage2及内核等通常放置于一个基本磁盘分区;

功用:

(1) 提供菜单、并提供交互式接口

e: 编辑模式,用于编辑菜单;

c: 命令模式,交互式接口;

(2) 加载用户选择的内核或操作系统

允许传递参数给内核

可隐藏此菜单

(3) 为菜单提供了保护机制

为编辑菜单进行认证

为启用内核或操作系统进行认证

如何识别设备:

(hd#,#)

hd#: 磁盘编号,用数字表示;从0开始编号

#: 分区编号,用数字表示; 从0开始编号

(hd0,0)

grub的命令行接口

help: 获取帮助列表

help KEYWORD: 详细帮助信息

find (hd#,#)/PATH/TO/SOMEFILE:

root (hd#,#)

kernel /PATH/TO/KERNEL_FILE: 设定本次启动时用到的内核文件;额外还可以添加许多内核支持使用的cmdline参数;

例如:init=/path/to/init, selinux=0

initrd /PATH/TO/INITRAMFS_FILE: 设定为选定的内核提供额外文件的ramdisk;

boot: 引导启动选定的内核;

手动在grub命令行接口启动系统:

grub> root (hd#,#)

grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE

grub> initrd /initramfs-VERSION-RELEASE.img

grub> boot

配置文件:/boot/grub/grub.conf

配置项:

default=#: 设定默认启动的菜单项;落单项(title)编号从0开始;

timeout=#:指定菜单项等待选项选择的时长;

splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片文件路径;

hiddenmenu:隐藏菜单;

password [--md5] STRING: 菜单编辑认证;

title TITLE:定义菜单项“标题”, 可出现多次;

root (hd#,#):grub查找stage2及kernel文件所在设备分区;为grub的“根”;

kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核

initrd /PATH/TO/INITRAMFS_FILE: 内核匹配的ramfs文件;

password [--md5] STRING: 启动选定的内核或操作系统时进行认证;

grub-md5-crypt命令 

内核保护密码设置明文,来是登入输入密码加载内核

进入单用户模式:

(1) 编辑grub菜单(选定要编辑的title,而后使用e命令);

(2) 在选定的kernel后附加

1, s, S或single都可以;

(3) 在kernel所在行,键入“b”命令;

安装grub:

(1) grub-install

grub-install --root-directory=ROOT /dev/DISK

(2) grub

grub> root (hd#,#)

grub> setup (hd#)

练习:

1、新加硬盘,提供直接单独运行bash系统;

2、破坏本机grub stage1,而后在救援模式下修复之;

3、为grub设置保护功能;

编辑开机grub信息


我在这里不仅添加bash,还添加了ls命令

使用镜像修复(紧急救援模式)


为grub设置保护功能



3、实现kickstart文件制作与光盘镜像制作



为了将Linux系统内的文件传输到window中,我通过QQ邮箱来,但是通过下载包rz命令,可以通过window向Linux传输文件


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

推荐阅读更多精彩内容