2018-12-04

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

1.启动流程第一步:通电自检加载BIOS

打开计算机电源时,计算机会首先加载BIOS信息,主要作用是检测设备是否存在并且可以正常运行,例如:CPU、内存、硬盘、键盘等设备是否存在并且能正常运行。自检方式通过BIOS(Basic Input Output System)系统进行,它是装载于CMOS硬件芯片之上的一个设备,加电后由该设备对BIOS提供一些配置信息引导其去读取其他设备信息并检测其是否存在并可以正常启用。

2.第二步:选择顺序启动,读取MBR

其中MBR即Master  Boot Record ,主引导记录,是计算机开机后访问硬盘时所必须要读取的首个扇区,它在硬盘上的三维地址为(柱面,磁头,扇区)=(0,0,1).MBR主引导加载程序是一个512字节大小的映像,其中包含了程序代码和一个小分区表。前446个字节是主引导程序,接下来的64字节是分区表,最后为2个字节的校验码。系统找到MBR后,将其复制放入到0×7c00地址所在的物理内存中。被复制到物理内存的内容就是Boot Loader,在windows下为ntloader,在linux下为Grub(LIinux)、LiLo(LOader)等。

其中Grub 即GRand Unified Bootloader 是一个将引导加载程序安装到主引导记录的程序,它有Stage1,stage1.5,stage2等几个重要文件。

     ----->stage1放在MBR中,在系统启动时用于装载STAGE2并将控制权交给它(446B)

      ----->stage1.5连接stage1和stage2的桥梁(在MBR后面几个扇区)

       ----->stage2是整个GRUB的核心,所有功能由它实现

      引导顺序:stage1--->stage1.5-->stage2

3.第三步:Boot Loader

Boot Loader 就是在操作系统内核运行之前运行的一段小程序。bootloader供一个菜单,允许用户选择要启动的系统或不同的内核版本; 把用户选定的内核装载到RAM中的特定空间中,解压、展开,而后把系统控制权移交给内核。Boot Loader有若干种,其中Grub、Lilo和spfdisk是常见的。

4.第四步:加载内核

boot分区被挂载,grub也完整了,grub继续工作,读取grub.conf文件,grub.conf文件中指定了要加载的内核,加载boot分区中的内核文件到内存,并且在内存中解压,同时还会加载内核所需的驱动程序文件,从而对内核进行挂载以及驱动根文件系统。initrd(Initial RAM Disk)它在stage2这个步骤就被拷贝到了内存中,这个文件是在安装系统时产生的,是一个临时的根文件系统(rootfs)。因为Kernel为了精简,只保留了最基本的模块,因此,Kernel上并没有各种硬件的驱动程序,也就无法识rootfs所在的设备,故产生了initrd这个文件,该文件装载了必要的驱动模块,当Kernel启动时,可以从initrd文件中装载驱动模块,直到挂载真正的rootfs,然后将initrd从内存中移除。并且开始装载第一个进程(用户空间的进程),执行/sbin/init,之后就将控制权交接给了init程序

5.第五步:启动init并根据inittab文件来设定运行等级

内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。

运行级别:

0  关闭所有服务,关机

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

2 多用户模式:(multl user)会启动网络功能 但不会启动NFS

3 多用户模式:(multl user)完全功能模式,文本界面

4 预备级别:目前无特定的使用目的,默认同级别3

5 多用户模式:(multl user),完全功能模式,启用图形界面

6 重启,reboot

6.启动第六步:init进程执行 rc.sysinit

在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。

7.启动第七步:启动内核模块,执行脚本

分别执行/etc/init/rcS.conf、/etc/init/rc.conf、/etc/init/start-ttys.confl来调用命令执行/etc/rc#.d/文件里面定义的是各种服务的启动脚本,可以ls查看,S开头代表开机启动的服务,K开头的是关机要执行的任务。#代表数字,一个数字代表一个运行级别,共7个运行级别

8.启动第八步:执行/etc/rc.d/rc.local文件

init进程加载配置文件/etc/init所有的conf文件,主要的如下:

     ---->rcS.conf---rc.syinit(加载fstab)其中initab获得系统的启动级别。

     ----->rc.conf---根据获得的启动级别调用/etc/rc.d/rc脚本,启动相应级别的目录下的所有软链接(/etc/rc.d/rcN.d)

    ----->rc.local---开机启动文件(2345级别),注意1级别不能调用rc.local

     ----->tty.conf和/etc/init/prefdm.conf---加载相应的终端程序然后登录字符或图形界面。

9.启动第九步:执行/bin/login程序,等待用户的登录。 

执行/bin/login程序,等待用户登录

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

grub启动分为三个部分:

阶段1: stage1用于启动Boot loader 来加载stage2的内容至内存中(mbr中启动)

阶段2:实际为stage1.5阶段,存放在mbr之后的扇区中,主要作用是让在阶段1中启动的Boot loader能够识别并且驱动第三阶段所在分区上的文件系统。

阶段3:应为stage2阶段,这一步提供菜单和编辑时使用的图形界面,一般挂载至/boot/grub目录下,另外,grub有自己的配置文件用以配置其中的选项,位置通常在/boot/grub/brub.conf且通常有个符号链接文件:/etc/grub.conf

命令行接口

help

help COMMAND

root (hd0,0)设定根分区为第一块磁盘的第一个分区

find (hd0,0)/PATH 查找文件

kernel /PATH init=/sbin/init selinux=0 ro root=/dev/DEVICE 设定内核文件

initrd /PATH 设定ramdisk

boot 启动

配置文件

/etc/grub.conf 是/boot/grub/grub.conf的软链接

配置项:

hiddenmenu:隐藏菜单

timeout:超时时间

default:默认启动菜单项,从0开始

splashing:图片

title:标题

password --md5 STRING:编辑内核时要按p输入密码(使用grub-md5-crypt生成)

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

kickstart 文件组成

kickstart文件共分三部分组成

1.命令段

★必备参数

认证方式:authconfig --enableshadow --passalgo=sha512

bootloader位置:bootloader --location=mbr --dirverorder=sda --append="crashkernel=auto rhgb quiet"

键盘:keyboard us 美式

语言:lang en_US.UTF-8

清空mbr:zerombr

清除分区:clearpart --all

boot分区:part /boot --fstype=ext4 --size=500

pv分区:part pv.008002 --size=51200

卷组:volgroup myvg --pesize=4096 pv.008002

lv:logvol / --fstype=ext4 --size=10240 myvg

密码:rootpw --iscrypted (使用openssl passwd -1 -salt `openssl rand -hex 4`生成)

时区:timezone Asiz/Shanghai

★可选参数

install:或upgrade 安装或升级

img文件:url url=http://PATH 或cdrom

文本:text,默认gui

网络:network --onboot yes --device eth0 --bootproto dhcp --noipv6

防火墙:firewall --disabled

selinux:selinux --disabled

安装后命令:halt poweroff reboot

repo源:repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100

程序包段

%packages

@^minimal

@core

chrony

kexec-tools

%end

脚本段

%pre:安装前脚本

%post:安装后脚本

如何制作kickstart文件

制作kickstart文件的方式:

1)直接手动编辑,可以依据某个模板来进行修改;

2)使用kickstart文件创建工具:system-config-kickstart进行配置,同样可以导入某个模板进行修改。

使用[root@zabbix-server wanglei]# yum install system-config-kickstart命令安装图形化kickstart安装界面

在命令行上运行system-config-kickstart命令即可启动窗口界面:

[root@zabbix-server wanglei]# system-config-kickstart


首先完成基本配置(如图),这里可设置语言类型、键盘类型、时区、管理员密码(加密)以及安装的平台类型等选项

  选择安装方式,这里通过网易镜像网站(mirrors.aliyun.com)安装程序包:

  选择安装类型、MBR的安装位置以及向内核传递的参数等:

  设置分区信息:

  网卡配置,可以静态指定也可以使用dhcp动态获取网络属性配置:

  认证方式配置:

  设定是否开启防火墙和selinux功能:

  设置是否安装图形界面:

  选定要安装的程序包:

  安装前要执行的脚本,注意运行环境是安装介质之上的微型Linux系统环境:

  安装后要执行的脚本:

  完成配置之后进行保存:

  用ksvalidator命令检查kickstart文件是否有语法错误:

    [root@walterwong ~]# ksvalidator centosks.cfg

  如无报错信息,至此kickstart文件制作完成。

制作光盘镜像

1)通过 df -h 命令确认光盘是否已挂载:

2)创建目录/data/centiso,并复制光盘的isolinux目录、刚才制作的kickstart文件centosks.cfg 到/data/centiso目录:

3)从光盘复制过来的文件都只有只读权限,需要添加可写权限:

4)修改/data/centiso/isolinux/isolinux.cfg配置文件,向默认启动的label所定义的内核传递参数,执行kickstart文件的存放位置:

 [root@walterwong data]# vim ./centiso/isolinux/isolinux.cfg

注意:无论kickstart文件是存放在待制作的光盘镜像中的哪个路径下,都可以在此处通过向内核追加参数的方式指明kickstart文件位置。

5)节约等待光盘镜像引导安装时间,修改timeout时间:

6)制作光盘镜像:

[root@walterwong data]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6 x86_64 boot" -c isolinux/boot.cat -b isolinux/isolinux.bin -o /data/boot.iso ./centiso/

至此,启动文件制作完毕。

注意:

 1.制作时centos7与centos6  yum库会有所不同,请注意更改repo文件

2.只需要复制isolinux目录即可

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

推荐阅读更多精彩内容

  • cenos6启动流程 加载BIOS的硬件信息,获取第一个启动设备 读取第一个启动设备MBR的引导加载程序(grub...
    毛利卷卷发阅读 1,037评论 0 1
  • "1、简述linux操作系统启动流程 一、Linux系统的组成部分:内核+根文件系统 1.1内核的功能 进程管理:...
    林家振_3cfd阅读 645评论 0 1
  • 系统启动是一项非常复杂的程序,因为内核得先检测硬件并加载适当的驱动程序后,接下来则必须要调用程序来准备好系统运行的...
    Zhang21阅读 11,441评论 3 10
  • 1、简述linux操作系统启动流程 大家都知道Linux内核是一个操作系统中非常重要的一环,它是底层硬件与上层软件...
    whamai阅读 474评论 0 0
  • 简述linux操作系统启动流程 以CentOS 5、6为例系统启动流程大体可以表示为POST加电自检-->BIOS...
    sky_c146阅读 257评论 0 0