第七周《简述linux操作系统启动流程》

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

linux启动流程图
启动第一步--加载BIOS

当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。开机时将ROM中的指令映射到RAM的低地址空间,CPU读取到这些指令,硬件的健康状况进行检查,按照BIOS中设置的启动设备来启动。

启动第二步--读取MBR

硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,其中前446字节为主引导记录,后64字节为分区表信息,最后2个字节为对应的校验。系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0×7c00地址所在的物理内存中。被复制到物理内存的内容就是Boot Loader,那就是lilo或者grub了。

启动第三步--Boot Loader

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

启动第四步--加载内核

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

启动第五步--用户层init依据inittab文件来设定运行等级

内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是“:id:5:initdefault:”,这就表明Linux需要运行在等级5上。

运行级别 对应说明
0 关机,shutdown
1 单用户模式,root用户,无须认证,一般是维护模式
2 不带NFS网络服务的多用户多任务模式,一般也是维护模式
3 多用户多任务的完全功能模式,文本行界面
4 预留模式
5 多用户多任务的完全功能模式,图形界面
6 重启,reboot
启动第六步--init进程执行rc.sysinit

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

启动第七步--启动内核模块,执行不同运行级别的脚本程序

具体是依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。

启动第八步--执行/etc/rc.d/rc.local

/etc/rc.d/rc.local是给用户自定义启动时需要执行的文件。

启动第九步--启动mingetty,进入系统登陆界面

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

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

grub legacy整个运行大体分3个运行阶段:
  • 第一阶段是安装在mbr中的
  • 第二阶段为stage1.5阶段,存放在mbr之后的扇区中,主要作用是让stage1中的bootloader能识别第三阶段(stage2)所在分区上的文件系统;
  • 第三阶段才是真正的stage2,这才提供菜单和编辑时能够看到的界面,叫stage2是存放在磁盘分区上的,一般是挂载至/boot/grub/目录下;grub也有自己的配置文件:/boot/grub/grub.conf且通常有个符号链接文件:/etc/grub.conf
[root@wujunjie6 ~]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda2
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (4.9.128-1.-el7)
root (hd0,0)
kernel /vmlinuz-4.9.128-1.-el7 ro root=UUID=ab5ee55b-421f-4a95-a6f7-42430dbf631f rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-4.9.128-1.-el7.img
title CentOS 6 (2.6.32-696.el6.x86_64)
相关参数 解释说明
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文件
grub的命令行接口
help:获取帮助列表;
help KEYWORD:获取详细帮助信息;
find (hd#,#)/PATH/TO/SOMEFILE:查找文件;
root (hd#,#):设定指定磁盘分区为grub根;
kernel /PATH/TO/KERNEL_FILE:设定本次启动时用到的内核文件;额外还可添加许多内核支持使用的命令行(command line)参数;
      例如:init=/path/to/init, selinux=0, init=1
initrd /PATH/TO/INITRANFS_FILE:设定我选定的内核提供额外文件的ramdisk;
boot:引导启动选定的内核

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

1.Kickstart简介

kickstart是一个利用Anconda工具实现服务器自动化安装的方法;通过生成的kickstart配置文件ks.cfg,服务器安装可以实现从裸机到全功能服务的的非交互式(无人值守式)安装配置。ks.cfg是一个简单的文本文件,文件包含Anconda在安装系统及安装后配置服务时所需要获取的一些必要配置信息(如键盘设置,语言设置,分区设置等);Anconda直接从该文件中读取必要的配置,只要该文件信息配置正确无误且满足所有系统需求,就不再需要同用户进行交互获取信息,从而实现安装的自动化。

2. kickstart的安装方法

(1)直接手动编辑,可以依据某个模板来进行修改
(2)使用kickstart文件创建工具:system-config-kickstart进行配置,同样可以导入某个模板进行修改

3. 使用kickstart工具进行文件新制作

安装system-config-kickstart工具

[root@wujunjie ~]# yum install system-config-kickstart.noarch -y

调用kickstart工具

[root@wujunjie ~]# system-config-kickstart
  • 基本配置信息
    step1
  • 安装方法
    step2
  • 引导程序安装
    step3
  • 分区信息
    step4
  • 网络配置
    step5
  • 验证
    step6
  • 防火墙与selinux
    step7
  • 显示配置
    step8
  • 软件包选择
    step9
  • 安装前脚本和安装后脚本


    step10
4.保存文件并且校验
[root@wujunjie ~]# ls
11               Downloads                 Music      untilping.sh
anaconda-ks.cfg  index.php?page=downloads  Pictures   Videos
Desktop          initial-setup-ks.cfg      Public     whileping.sh
Documents        ks.cfg                    Templates
[root@wujunjie ~]# ksvalidator ks.cfg 
[root@wujunjie ~]#
制作iso镜像
  • 第一步--准备新iso镜像目录myiso并拷贝原iso镜像里自带的isolinux(包含有BootLoader、kernel以及initrd的文件.)

    [root@wujunjie ~]# mount /dev/cdrom /media/cdrom/
    mount: /dev/sr0 is write-protected, mounting read-only
    [root@wujunjie ~]# mkdir /myiso
    [root@wujunjie ~]# cp -r /media/cdrom/isolinux/ /myiso/
    
  • 第二步--为拷贝的isolinux目录文件添加权限

    [root@wujunjie isolinux]# chmod +w *
    [root@wujunjie isolinux]# ll
    total 48016
    -rw-r--r--. 1 root root     2048 Oct 10 08:06 boot.cat
    -rw-r--r--. 1 root root       84 Oct 10 08:06 boot.msg
    -rw-r--r--. 1 root root      293 Oct 10 08:06 grub.conf
    -rw-r--r--. 1 root root 43372552 Oct 10 08:06 initrd.img
    -rw-r--r--. 1 root root    24576 Oct 10 08:06 isolinux.bin
    -rw-r--r--. 1 root root     3068 Oct 10 08:06 isolinux.cfg
    -rw-r--r--. 1 root root   190896 Oct 10 08:06 memtest
    -rw-r--r--. 1 root root      186 Oct 10 08:06 splash.png
    -rw-r--r--. 1 root root     2215 Oct 10 08:06 TRANS.TBL
    -rw-r--r--. 1 root root   152976 Oct 10 08:06 vesamenu.c32
    -rwxr-xr-x. 1 root root  5392080 Oct 10 08:06 vmlinuz
    
  • 第三步--拷贝制作的ks文件到新目录

    [root@wujunjie ~]# cp ks.cfg /myiso/
    [root@wujunjie ~]# ls /myiso/
    isolinux  ks.cfg
    
  • 第四步--制作光盘镜像

    [root@wujunjie ~]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 7 x86_64 boot" -c isolinux/boot.cat -b isolinux/isolinux.bin -o /root/boot.iso /myiso/
    I: -input-charset not specified, using utf-8 (detected in locale settings)
    genisoimage 1.1.11 (Linux)
    Scanning /myiso/
    Scanning /myiso/isolinux
    Excluded by match: /myiso/isolinux/boot.cat
    ……………………………………….
    [root@wujunjie ~]# ls
    11               Documents                 ks.cfg    Templates
    anaconda-ks.cfg  Downloads                 Music     untilping.sh
    boot.iso         index.php?page=downloads  Pictures  Videos
    Desktop          initial-setup-ks.cfg      Public    whileping.sh
    

使用xshell上传iso镜像到本地桌面

  [root@wujunjie ~]# sz boot.iso

最后可用VMware Workstation测试

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

推荐阅读更多精彩内容

  • 登陆我的某论坛账号,发现我发表的文章被评为了优秀,内心有一点小激动。算是多我2个半月以来的认可。 但是在别...
    IT_斜杠青年阅读 561评论 0 48
  • 感情最大的敌人莫过于遗忘, 而最致命的一击 不过是你很好 没有我,也很好 分开始的时候也有泪目 彼此信誓旦旦的说着...
    木果呀阅读 268评论 0 1
  • 从我很少和您说话那天起, 便开始在心里和您说更多的话。
    您的假姑娘阅读 213评论 0 0