centos6 开机启动流程实验篇
1、破解root口令,并为grub设置保护功能
- 直接由grub界面进入单用户模式,然后可以直接重置root口令
- 演示过程如下:
输入“a”,在内核引导之前修改内核参数,
在其后空格输入1,s,S,single均可进入单用户模式
然后进入至单用户模式命令行后直接修改root口令,然后重启
2、某开机启动服务故障,导致系统故障,启动失败
- 解决办法:进入单用户模式,先将对应的服务的开机启动关闭:chkconfig命令,然后再重启系统,待系统启动之后,再对开启启动的服务脚本或者开机启动程序进行故障排查。
- 故障现象:(此故障在grub之后了,因此已经至此处启动对应的开机启动脚本时出现故障,导致系统出现故障时:单用户模式)
grub的阶段故障
stage1阶段故障
- MBR中前446字节被破坏
/boot 单独分区,为/dev/sda1此分区
[root@centos6 ~]#df -T -h /boot
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext4 976M 34M 892M 4% /boot
/dev/sda的MBR信息查看:
破坏/dev/sda的MBR中bootloader,然后重启
<
故障现象:直接弹出此界面,系统无法硬盘引导启动,找不到bootloader
解决办法:选择第三项进入救援模式(救援模式如下:)
说明:救援模式原本系统的根和对应的分区就被挂载至了/mnt/sysimage目录下
操作:
~]#chroot 根切换
~]#grub-install /dev/sda
~]#此时就恢复了boot loader被破坏的数据,然后重启
stage1.5阶段故障
- 由于MBR中bootloader只有446字节数据,bootloader不足以启动操作系统
- stage1.5:MBR之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统
- 则破坏stage1.5阶段,即破坏MBR之后的扇区
破坏MBR以后的10个扇区:破坏stage1.5阶段
~]#dd if=/dev/zero of=/dev/sda bs=1 count=5120 seek=512
故障现象:
解决办法:(进入救援末模式)
操作:
~]#chroot 根切换
~]#grub-install /dev/sda
~]#此时就恢复了boot loader被破坏的数据,然后重启
stage2阶段故障
- stage2:磁盘分区(/boot/grub/)
- stage1.5保证BootLoader可以识别此分区上的文件系统
/boot/grub/目录下:
[root@centos6 grub]#ls -n1 /boot/grub/
total 280
-rw-r--r--. 1 0 0 63 Jul 17 15:59 device.map
-rw-r--r--. 1 0 0 13428 Jul 21 2019 e2fs_stage1_5
-rw-r--r--. 1 0 0 12636 Jul 21 2019 fat_stage1_5
-rw-r--r--. 1 0 0 11780 Jul 21 2019 ffs_stage1_5
-rw-------. 1 0 0 771 Jul 17 15:59 grub.conf
-rw-r--r--. 1 0 0 11772 Jul 21 2019 iso9660_stage1_5
-rw-r--r--. 1 0 0 13284 Jul 21 2019 jfs_stage1_5
lrwxrwxrwx. 1 0 0 11 Jul 17 15:59 menu.lst -> ./grub.conf
-rw-r--r--. 1 0 0 11972 Jul 21 2019 minix_stage1_5
-rw-r--r--. 1 0 0 14428 Jul 21 2019 reiserfs_stage1_5
-rw-r--r--. 1 0 0 1341 Nov 15 2010 splash.xpm.gz
-rw-r--r--. 1 0 0 512 Jul 21 2019 stage1
-rw-r--r--. 1 0 0 126148 Jul 21 2019 stage2
-rw-r--r--. 1 0 0 12040 Jul 21 2019 ufs2_stage1_5
-rw-r--r--. 1 0 0 11380 Jul 21 2019 vstafs_stage1_5
-rw-r--r--. 1 0 0 13980 Jul 21 2019 xfs_stage1_5
一般grub - stage2阶段出错,/boot/grub/下文件出现故障,除/boot/grub/grub.conf此文件不能使用grub-install命令生成,/boot/grub/下其余文件的修复操作均与stage1和stage1.5阶段类似。
若只是删除了/boot/grub/grub.conf文件:
解决方法:
方法1、救援模式–>切根–>创建原本的/boot/grub/grub.conf文件,添加必要的几行信息
方法2、错误提示会直接进入grub–>
grub> kernel /… <支持tab补全>
grub> initrd /…
grub> boot
直接输入两行可以使系统起来,然后再修复删除的文件即
Linux内核和ramdisk丢失或被破坏的修复
其中/boot下内文件包含:Linux内核和ramdisk,两个文件虽然均来自与kernel-VERSION-release.arch此内核包,但是两个文件生成的时间并非一致的。
Linux内核文件是安装光盘中早已生成的,并不是安装系统的生成的,而ramdisk则是安装操作系统时临时生成的。
ramdisk文件丢失时系统修复
重装内核:强制重装内核包,覆盖其他文件重新生成ramdisk文件
mkinitrd命令:为当前正在使用的内核重新制作ramdisk文件
mkinitrd /boot/initramfs-`uname -r`.img `uname -r`
丢失ramdisk文件重启时的修复:
故障现象
方法:光盘引导,救援模式
~]chroot /mnt/sysimage <先执行chroot 否则直接执行mkinitrd不可以,它依赖于/的程序>
~]mkinitrd /boot/initramfs-\`uname -r\`.img \`uname -r`
~]sync 将磁盘缓存区的内容立马写入磁盘,否则直接启动可能出问题
或者重装内核安装包
~] mount /dev/cdrom /mnt
~]rpm -ivh kernel-VERSION-release.arch --force --root=/mnt/sysimage/
安装至以--root=dir的目录为 / 下的一级子目录
~] sync
内核文件丢失
- 安装光盘中有内核文件:
/misc/cd/ioslinux/vmlinuz
丢失内核文件系统启动现象:
解决办法:光盘引导–>救援模式–>挂载安装光盘–>复制内核文件
chroot /mnt/sysimage
mount /dev/cdrom /mnt
cp -a /mnt/isolinux/vmlinuz /boot/vmlinuz-`uname -r`
自制Linux
实验目的:主要在于帮助理解Linux组成和启动流程
实验操作:不是完全自制Linux,根据现有的Linux,在其基础上,将必要的文件复制过去,实现一个简单功能的Linux。
注意:新的虚拟硬盘分区要作为boot分区时,挂载点子目录必须为boot。eg:mkdir /mnt/boot 子目录必须为boot
实现步骤:
mkdir /mnt/boot 子目录必须为boot
1、安装grub
grub-install --root-directory=/mnt /dev/sdb -->对所在硬盘安装当前系统grub
2、grub-install不能生成grub.conf文件需要手动创建
default=0
timeout=5
title linux-..
root (hd0,0)
kernel /vmlinuz-.. root=/dev/sda2 selinux=0 init=/bin/bash
initrd /initramfs...
填写一些必选项即可 (加载内核之后,第一个进程启动bash,此时就可以执行一些简单的命令了)
当然root所在的分区为:/dev/sda2,对根分区下只要求必要的文件夹和一些实验命令和命令所依赖的库文件。
删除/boot目录和/etc/fstab文件的修复
故障现象:
修复过程:
救援模式:
1)修复/etc/fstab文件:因为此文件不存在,进入救援模式时根等分区
不会默认挂载至/mnt/sysimage目录,因此先将此文件进行修复:
blkid 查看分区和对应UUID和文件系统,判断哪个是根所在分区和boot所在分区和交换分区
如果是逻辑卷安装时,没有/etc/fstab文件,逻辑卷处于禁用状态
需要使用vgchange –ay vgname 启用相关逻辑卷
当判断出根所在分区时,先将根所在分区挂载至救援模式某目录:
mkdir /mnt/sysroot(切记不能直接挂载至/mnt或其余一级目录下)
mount /dev/sda2 /mnt/sysroot
修复删除的/etc/fstab文件
vi /mnt/sysroot/etc/fstab
添加默认挂载/boot、/、swap等三个分区,swap与启动无关可暂不挂载
/etc/fstab修复完成:重启,进入救援模式,原本的/就和以前一样被挂载至/mnt/sysimage目录
当再次进入救援模式时:
挂载是只读挂载时:需要使用以下命令进行读写挂载(恢复
/etc/fstab文件后,再次进入救援模式时,有可能/是只读挂载)
:mount -o ro,remount /dev/sda2 /mnt/sysimage
2)修复/boot目录下文件
进入救援模式---> 切根:chroot
内核相关文件修复:
挂载光盘:mount /dev/sr0/ /mnt
重新强制安装内核文件:
rpm -ivh /mnt/Package/kernel-VERSION.rpm --force
修复/boot/grub目录下文件
grub-install /dev/sda
生成/boot/grub/grub.conf文件:
vi /boot/grub/grub.conf
default=0
timeout=5
title=Linux-VERSION
root (hd0,0)
kernel /vmlinuz-VERSION(与/boot内核文件对应) root=/dev/sda2 selinux=0
initrd /initramfs-VERSION.img
这样必须的配置就修复完成,可以重新启动系统啦~good luck