在boot里面我们可以根据自己的需求去设置一些启动选项,我们今天来了解一下Linux启动流程,以及boot下的选项。
-
- 加载BIOS的硬件信息,获取第一个启动设备。
- 读取第一个启动设备MBR的引导加载程序(grub)的启动信息
- 加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备。
- 核型执行init程序并获取运行信息。
- Init执行/etc/rc.d/rc.sysinit文件。
- 启动核心的外挂模块(/etc/modprobe.conf)。
- Init执行运行的各个批处理文件(scripts).
- Init执行/etc/rc.d/rc.local.
- 执行/bin/login程序,等待用户登录。
- 登录之后开始以Shell控制主机。
POST:Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、串并行接口、键盘、 CD-ROM光驱等硬件情况的检测。
ROM: BIOS, Basic Inputand Output System,保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、开机加电自检程序和系统启动自举程序等。
RAM: CMOS互补金属氧化物半导体,保存各项参数的设定按次序查找引导设备,第一个有引导程序的设备为本次启动设备bootloader: 引导加载器,引导程序
Boot Loader:主要功能识别.加载操作系统中的核心文件,并提交到内存中运行,进而启动对应的操作系统,每一种操作系统都有自己单独的Boot Loader,只有使用自己的Boot Loader才可以加载到自己的核心文件。Boot Loader另一个主要功能是提供菜单信息(可以向使用者提供不同的启动项目,来加载不同的操作系统),并将启动管理功能
转交给其他的加载程序。
Linux:功能丰富,提供菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核
stage1:运行boot Loader的程序与配置项加载分成三个阶段(stage)来运行,MBR空间有限,因此在MBR中仅安装Boot Loader的最小主程序,并没有安装Boot Loader的相关配置文件
stage1_5:在MBR随后的扇区中存放,主要用于与stage2所在分区的文件系统进行交互。
stage2:通过Boot Loader加载所有配置文件及相关的环境参数信息,这些配置文件及相关的环境参数都存放于磁盘分区上的/boot目录上。
grub:最重要的一部分就是识别磁盘信息,grub对硬盘的识别是通过以下方式:
(hd0,0)
1.硬盘代号以小括号()括起来;
2.硬盘以hd表示,后面会接一组数字,数字之间以逗号隔开;
3.以搜寻到的顺序来作为磁盘的编号,而非根据磁盘的排线编号(多硬盘情况下, 搜寻的次序是根据bios中设置的启动顺序,而非插槽编号);
4.第一个搜寻到的磁盘编号为0,第二个为1,一次类推。
5.每块磁盘上的第一个分区编号为0,第二个分区为1,以此类推。
#:因此(hd0,0)就表示第一块磁盘上的第一个分区。
default=0
表示默认的启动条目,假如同时装有多个操作系统,0表示定义的第一个title系统,1表示定义的第二个title系统,以此类推
timeout=5
表示可供选择的等待时间,如果超过5秒,则使用默认的启动条目default定义的
splashimage=(hd0,0)/grub/splash.xpm.gz
定义启动时的背景图片信息
hiddenmenu
启动时是否要显示菜单,默认情况下是不显示菜单信息,如果想要显示菜单,可以将该配置注释即可;
注释菜单:
title:定义操作系统的名称
root :表示内核文件存放的位置,这里指定的是分区位置,而非根目录。
kernel:内核的名称以及一些启动时的核心参数,由于启动过程中需要挂载根目录,因此就需要指定根目录所在的分区,rhgb表示色彩显示,quiet表示静默模式加载内核。
initrd:指定用于辅助内核完成系统启动的ramdisk文件路径再次在内存缓存
默认启动级别:
0:关闭所有服务;关机
1:维护模式;单用户模式,sigle模式,此级别可允许root用户直接登录而无需认证。
2:维护模式;多用户模式,需要用户认证,会启动网络功能,但不支持使用NFS。
3:正常级别:完全多用户模式,文本界面。
4:预留级别:
5:正常级别:完全多用户模式,图形界面。
6:关闭所有服务;重启
#:通常使用较多的默认级别为3或者5,服务器基本上默认使用3级别,即文本界面。
#:查看当前运行的级别可以使用runlevel或者who -r
#:禁用Ctrl+Alt+Delete重启;(centos 6)
1.cp -v /etc/init/control-alt-delete.conf /etc/init/control-alt-delete.override
2.vim /etc/init/control-alt-delete.override
3.将exec /sbin/shutdown -r now "Control-Alt-Delete pressed"改为exec /usr/bin/logger -p authpriv.notice -t init"ctrl-alt-del was pressed and ignored"
破坏及修复:
stage1:破坏
[[email protected] ~]# dd if=/dev/zero of=/dev/sda bs=1 count=446
[[email protected] ~]# hexdump -Cv /dev/sda -n 446
stage1:修复
1.重启并进入救援模式
2.选择语言
3.设置网络选择NO
4.输入continue
5.打开shell终端,并切换至根目录,chroot /mnt/sysimage/
6.错误输出信息可以忽略,看到设设备信息即可。
7.就此stage1已经修复完成,重启即可完成。
stage1_5:破坏
dd if=/dev/zero of=/dev/sda bs=512 count=2 seek=1
stage1_5:修复
1.重启系统
2.光盘启动,进入救援模式。
3.使用grub工具修复引导文件,修复完成,直接重启即可。
boot:破坏,直接删除boot目录
boot:修复
1.删除boot目录下全部文件并重启
[[email protected] ~]# rm -rf /boot/*
2.重启并进入救援模式
3.进入根目录,挂载镜像
4.重新安装kernel
5.修复引导文件
6.编辑/etc/grub.conf配置文件
7.修复完成,重启即可。
boot:破坏
[[email protected] ~]# rm -rf /boot/*
fstab:破坏
[[email protected] ~]# rm -rf /etc/fstab
引导修复,fstab文件修复。
1.重启并进入救援模式。
2.我们会发现系统检测不到根目录,因为我们把/etc/fstab删除了
3.查看逻辑卷,并激活逻辑卷,默认关闭状态
4.挂载根目录。
5.新建/etc/fstab并写入挂载信息,重启进入救援模式,让系统自动检测。
6.这里我们发现系统已经检测到了路径/etc/sysimage
7.重新进入根目录,挂载镜像文件。
8.重新安装kernel,并修复引导文件
9.编辑/etc/group引导文件
10.到这一步已经修复完成了,直接重启即可正常进入系统。