目标: 。探讨引导次序 。掌握GRUB的角色 。掌握init的角色 。控制System V的服务
引导次序概述: 。BIOS初始化(基本输入输出系统,主板) 。引导装载器 。内核初始化 。启动init之后通过执行以下次序进入到设定的运行级别: 。/etc/rc.d/rc.sysinit 。/etc/rc.d/rc和/etc/rc.d/rc?.d/ 。/etc/rc.d/rc.local 。如果需要还将启动X
引导装载器的组件 。引导装载器 。第一阶段 -小,驻留在MBR或引导磁道中(硬盘中一小部分) 。第二阶段-从引导分区中引导(fdisk -l中有”*“标记的那一部分 。为Linux的最小配置: 。标题,内核,操作系统根以及初始化内存磁盘(initrd) 。其他系统的最小配置: 。标题,引导设备
内核损坏修复方法:
1.装载内核;
当系统进入grub>模式的情况下输入kernel (hd0,0)/vmlinuz-2.6... ro root=/dev/vo10/root等。。。
2.接着装载initrd:grub>initrd (hd0,0)/initrd...
3.boot
之后进入系统之后修复grub.conf文件
进入系统之后还需要修复一下文件:
#cd /boot/grub
之后编辑grub.conf文件
文件内容:
title Redhat enterprise Linux 5.8 X86_64
kernel (hd0,0)/vmlinuz-...
initrd (hd0,0)/initrd...img
之后保存退出。重启系统即可。
GRUB和grub.conf 。GRUB ”the GRand Unified Bootloader“ 。在引导提示符提供命令行的界面 。可以从ext2/ext3,ReiserFS,JFS,FAT,minix,或FFS文件系统引导 。支持MD5密码保护 。/boot/grub/grub.conf 。改变grub.conf立即生效 。如果在/dev/hda的MBR破损,重新安装引导装载器的第一阶段: /sbin/grub-install /dev/hda
#fdisk -l //查看当前设备,找到启动设备sda1
#mount | grep sda1 //查看sda1设备挂载的分区
#cd /boot/grub 接着进入查看grub.conf文件
查看grub.conf文件介绍
title 描述信息
kernel (hd0,0)/vmlinuz第一块硬盘第一个分区 ro root=/dev/vol0/root
initrd (hd0,0)/initrd
启动引导过程:GRUB 。选择镜像文件 。在引导启动界面是通过上/下箭头选择 。传递参数 。在菜单编辑模式改变现有的参数 。在GRUB命令行中输入boot命令
单用户模式破解密码
进入GRUB界面输入e,选择第二条编辑
在kernel这行最后面加入single,之后输入b引导。
之后输入passwd修改密码即可完成密码修改。
可以通过#cat /proc/cmdline查看怎么启动的,之后reboot重启即可。
#info grub //查看grub文档
可以在timeout之后设置password,或者在title下面设置password
设置grub加密
①.在grub.conf文件中加上一行
password --md5 加密的字符串,也就是②中加密的字符串拷贝过来。
②.#grub-md5-crypt
也可以通过vim编辑grub.conf文件,之后输入:read !grub-md5-crypt直接输入两次密码回车来保存。
init初始化: 。init读取他的配置文件:/etc/inittab 。初始化运行级别 。系统初始化脚本 。指定运行级别脚本的目录 。截取一些按键次序 。定义不间断电源故障和恢复脚本 。gettys 唤醒虚拟控制台 。在运行级别5时初始化X
/etc/inittab里面格式:
描述信息:运行级别:系统参数:脚本
运行级别 。init定义了0-6,s,应急几种运行级别 。选择运行级别可以通过下面的任意一种方法: 。默认值定义在/etc/inittab 。由引导装载器传递参数 。使用命令init new_runlevel 。显示当前和之前的运行级别 /sbin/runlevel
/etc/rc.d/rc.sysinit(系统初始化文件) 。包括重要任务: 。激活udev和selinux 。按照/etc/sysctl.conf设置内核参数 。设置系统时钟 。装载键盘布局 。启动交换分区 。设置主机名 。检测根分区并重新装载 。激活RAID和LVM设备 。启用磁盘配额 。检查并挂在其他文件系统 。清楚锁和进程ID文件
引用下大佬之前写的:https://www.cnblogs.com/SZxiaochun/p/7726527.html
/etc/rc.d/init.d/rc{0..6}.d/* 这个里面的K开头的文件代表杀死的优先级,S开头文件代表启动的优先级
自定义启动引导过程:
①.在/etc/inittab中添加一行
#tw:3:wait:/root/testwait.sh
②.在/root/testwait.sh脚本中输入脚本信息
/etc/rc.d/init.d;rc{0..6}.d;rc.local
System V 运行级别 。不同的运行级别启动的服务不相同 。每个运行级别有一个相对应的目录: 。/etc/rc.d/rcX.d 。System V 初始化脚本保存在: 。/etc/rc.d/init.d 。在运行级别的目录中的软连接使用start或stop调用init.d下的脚本
控制服务 。工具用来控制默认启动的服务 。system-config-services:需要X的图形配置工具 。ntsysv:基于ncurses的工具可以用在虚拟控制台 。chkconfig:快速,多功能的命令行工具,用于脚本和Kickstart安装中 。手工控制服务工具 。service:立即启动或停止一个独立的服务 。chkconfig立即启动或停止受xineted管理的服务。
通常使用#servcie sshd stop这种启停服务的方式都可以通过/etc/init.d/sshd stop来操作,因为其中的sshd实际上就是/etc/init.d/sshd
#chkconfig --list | grep sshd //查看sshd服务在不同运行级别下是启动还是停止的信息;同时可以看到sshd在2级别是启动状态,接下来让sshd在2级别状态关闭
#find /etc/rc.d/ -name "*sshd" //查看rc.d目录下面sshd的文件
#chkconfig --level 2 sshd off
#find /etc/rc.d/ -name "*sshd" //查看rc.d目录下面sshd的文件是否已经由s开头变成了k开头的文件。
上图中使用bluetooth服务举例,通过删除rc3.d中的S25bluetooth快捷方式,然后重新建立一个K75bluetooth快捷方式只想/init.d/bluetooth,之后chkconfig检查发现k开头的情况下,在级别3下此服务为off
respawn反复唤醒,如tty进程,我们反复kill,却一直有心进程出现
x:5:respawn:/etc/X11/prefdm -nodaemon //其中的x代表服务
/etc/rc.d/rc.local 。运行在运行级别特定的脚本之后 。通常放置自定义的指令 。在很多情况下推荐在/etc/rc.d/init.d创建一个System V的初始化脚本,除非你启动的是一个不是很重要的服务器。可以作为启动方式执行现有的脚本。
BOIS-MBR-GRUB(grub.conf)kernel---vmlinz和initrd.img---welcome进入系统第一个进程/sbin/init(/etc/inittab),id:3:initdefault---rc.sysinit---rc3.d目录启动对应的服务。---rc.local启动。