centos6启动流程相关、服务脚本、故障修复、启动背景图替换、grub口令

系统如何启动?

POST加电自检 => MBR引导 => GRUB => 加载内核

POST:Power-On-Self-Test,加电自检是BIOS功能的一个主要部分,负责对各硬件情况的检测。

BIOS:Basic Input and Output System,保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、开机加电自检程序和系统启动自举程序等。BIOS是只读的ROM储存。用户可修改的启动参数存在RAM中

RAM:CMOS互补金属氧化物半导体,保存各项参数的设定按次序查找引导设备,第一个有引导程序的设备为本次启动设备,用户可修改RAM中保存的参数。

MBR:第一个扇区(512字节)
前446字节 bootloader
中间64字节 分区表
最后2字节 55AA

bootloader: 引导加载器,引导程序,LINUX的引导程序有很多。
LILO:LInux LOader
GRUB:GRand Unified Bootloader,GRUB功能更强,支持加密和添加命令

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

Linux内核特点
支持模块化:.ko(内核对象),如文件系统,硬件驱动,网络协议等。
支持模块动态加载和卸载。

内核组成部分
核心文件:/boot/vmlinuz-VERSION-release
ramdisk:辅助的伪根系统
/boot/initramfs-VERSION-release.img
模块文件:/lib/modules/VERSION-release

*grub流程

grub1阶段:读取mbr中的分区信息

grub1_5阶段:读取mbr后面的扇区的内容,这里储存着识别boot目录需要的驱动文件,通过1_5阶段加载文件系统驱动后才可以进行2阶段的读取配置文件

grub2阶段:访问boot/grub/grub.conf文件,此文件存放了内核与相关文件的路径例如initramfs和vmlinuz文件路径
grub.conf是由anaconda程序生成的,也可以自己写

grub.conf配置
default=0 //默认启动哪个内核
timeout=5 //选择等待时间
splashimage=(hd0,0)/grub/splash.xpm.gz //启动时的背景图片
hiddenmenu //隐藏启动菜单,删掉就显示了
title CentOs 6 (2.6.32) //标题,会显示在启动菜单,一个title就相当于一个内核选项
	root(hd0,0) //表示内核文件的根目录在哪hd表示硬盘,0,0表示第一个硬盘的第一个分区
	kernel /vmlinuz- ro root=UUID=
	//内核路径,root=UUID指明了操作系统根路径,通过initramfs加载文件系统,然后以只读的方式挂载根
	//内核参数后面还有一些启动参数,如语言类型,键盘布局等
	//其中rhgb quiet表示静默启动,即不显示加载过程
	initrd /initramfs
	//此文件是个小型系统文件,里面包含了操作系统使用的文件系统驱动

*initab文件

文件格式
id:runlevel:action:process
id:唯一标识序列
runlevel:系统运行级别
action:要执行的动作
process:定义要执行的进程(程序名)
action的动作有以下几种
wati:切换到此级别运行一次
respawn:此进程终止就重新启动
initdefault:设置启动时默认运行级别
sysinit:设定系统初始化方式

示例:
id:3:initdefault: //定义默认启动级别
si::sysinit:/etc/rc.d/rc.sysinit //定义系统初始化脚本
l0:0:wait:/etc/rc.d/rc 0 //0运行级别要运行的脚本
l1:1:wait:/etc/rc.d/rc 1 //1运行级别要运行的脚本
l2:2:wait:/etc/rc.d/rc 2 //2运行级别要运行的脚本

rc文件夹中文件名以K开头的是执行停止操作,S开头的是启动,执行顺序是先执行停止的再执行启动的
一般不用手工修改文件名,一般使用ntsysv命令编辑,
此命令默认只管理当前运行级别中的脚本
chkconfig可以直接管理服务在各级别的开启情况

k和s后面的数字决定了执行次序,次序是按照字母表中的来排列而不是数字大小
rc文件夹中的软连接指向/etc/init.d目录中的服务脚本

*服务脚本格式

服务脚本跟普通脚本一样的开头

示例:tests.sh

#!/bin/bash //脚本开头
#
#chkconfig: 345 99 2 //服务脚本需要定义什么模式下启动
//chkconfig: 运行级别 启动顺序 停止顺序
#description:test //脚本描述
. /etc/init.d/functions
//引入脚本
start(){
	touch /var/lock/subsys/tests
	//启动创建文件用于检测是否启动
	action "Starting tests"
	//打印启动提示
}
stop(){
	rm -rf /var/lock/subsys/tests
	//删掉文件表明停止
	action "Stopping tests"
}
status(){
	[ -f /var/lock/subsys/tests ] && echo tests is running || echo tests is stopped
}

case $1 in
start)
	start
	;;
stop)
	stop
	;;
restart)
	stop
	start
	;;
status)
	status
	;;
*)
	echo "Usage: /etc/init.d/tests{start|stop|restart|status}"
esac

*centos6启动流程

1.加载BIOS的硬件信息,获取第一个启动设备
2.读取第一个启动设备MBR的引导加载程序(grub)的启动信息
3.加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备
4.核心执行init程序,并获取默认的运行信息
5.init程序执行/etc/rc.d/rc.sysinit文件
6.启动核心的外挂模块
7.init执行运行的各个批处理文件(scripts)
8.init执行/etc/rc.d/rc.local
9.执行/bin/login程序,等待用户登录
10.登录之后开始以Shell控制主机

*启动故障修复

内核丢失:复制一个同版本的或者重装内核RPM包
initramfs丢失:使用mkinitrd命令重新生成

命令用法
mkinitrd 路径文件名 内核版本号
如:
mkinitrd /boot/initramfs-`uname -r`.img `uname -r`

1阶段的mbr损坏
mbr损坏会因为没有引导信息所以认定硬盘无法启动,启动将顺序跳过硬盘启动
修复方法:
安装grub
(1)grub-install
安装grub阶段1,1_5,2阶段到硬盘上
grub-install /dev/sda 指定安装到哪个分区
可以加个参数–root-directory=DIR DIR是boot所在上级文件夹"/"是默认值
(2)grub命令
此命令需要依赖boot/grub文件夹里的文件,grub-install则不需要
grub>root(hd#,#)指定boot在哪,通常是0,0
grub>setup(hd#)指定硬盘,通常是0

1_5阶段的文件系统驱动损坏
此时会在加载grub之后无法继续启动,停留在grub中,此时可以使用grub命令来修复
grub>root(hd#,#)
grub>setup(hd#)

2阶段的grub.conf损坏
此时同样会在启动后停留在grub中,手动指定内核文件和initramfs文件即可启动
grub>kernel /vmlinuz-####
grub>initrd /initramfs-####
grub>boot
可以用tab补全
启动之后需要手动写入grub.conf文件

boot文件夹丢失
1.进入救援模式,然后切根
2.修复grub,grub-install /dev/sda
3.手动写入grub.conf
4.从光盘文件中的isolinux文件夹里找到内核文件复制到boot下
5.生成initramfs文件,mkinitrd /boot/initramfs-uname -r.img uname -r

逻辑卷中的boot文件夹损坏和fstab文件丢失修复
1.先进入救援模式,此时没办法找到操作系统的根
2.vgdisplay显示逻辑卷组
3.使用vgchange -ay #### 激活卷组
4.挂载逻辑卷找到根
5.建立/etc/fstab
6.重新进入救援模式即可找到根
7.切根后重新安装内核包
8.安装grub
9.手动写入grub.conf文件

fstab文件格式
设备 挂载点 文件系统 defaults 0 0

修复完毕要重启前使用sync命令避免缓冲区内容未写到硬盘上保存

*启动背景图替换

1.准备一张640*480的图片 aa.jpg
2.放到linux里用convert转换格式
convert -resize 640x480 -colors 14 aa.jpg aa.xpm
3.使用gzio aa.xpm压缩文件
4.复制到boot/grub
5.修改grub.conf中的splashimage=(hd0,0)/grub/aa.xpm.gz

*grub口令

在grub.conf中加上
passwd centos

使用加密口令
openssl passwd -1
输入口令后获得MD5加密的密码,然后在文件中加入
passwd --md5 ######

其他加密方式
grub-cryp 输入口令后得到512位的密码
passwd --encrypted #####

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在CentOS 7中,你可以通过以下几种方法来添加开机启动服务脚本。 方法一:使用systemctl命令 1. 使用以下命令将服务设置为开机自启动: systemctl enable 服务名.service 例如,要将Jenkins服务设置为开机自启动,可以运行以下命令: systemctl enable jenkins.service 2. 使用以下命令启动服务: systemctl start 服务名.service 例如,要启动Jenkins服务,可以运行以下命令: systemctl start jenkins.service 方法二:使用/etc/rc.local文件 1. 编辑/etc/rc.local文件: vi /etc/rc.local 2. 在文件中添加需要在开机时运行的命令或脚本。 3. 确保/etc/rc.local文件具有可执行权限: chmod +x /etc/rc.local 方法三:使用/etc/rc.d/init.d/目录和chkconfig命令 1. 将编写好的启动脚本移动到/etc/rc.d/init.d/目录下: mv /path/to/脚本.sh /etc/rc.d/init.d/ 2. 添加脚本的可执行权限: chmod +x /etc/rc.d/init.d/脚本.sh 3. 使用chkconfig命令将脚本设置为开机启动: chkconfig --add 脚本.sh chkconfig 脚本.sh on 请注意,以上方法中的服务名或脚本名需要根据实际情况进行替换。另外,在使用/etc/rc.local文件时,需要注意权限问题,确保文件具有可执行权限。 #### 引用[.reference_title] - *1* *3* [CentOS 7添加开机启动服务/脚本](https://blog.csdn.net/qq_20967969/article/details/125149682)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [CentOS7如何设置开机自启动程序、开机自启动脚本?](https://blog.csdn.net/Dontla/article/details/125333850)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值