Linux启动和内核管理排错修复

mac2026-08-04  20

一 、删除/boot/下initramfs-xxx.img 文件

[root@kaivi6 boot]# rm -rf initramfs-2.6.32-754.el6.x86_64.img [root@kaivi6 boot]# reboot

出现如下图的故障 进入救援模式 选择救援安装

这时候他会自动找到系统的原来根挂载到了/mnt/sysimage下 真正的操作系统根/dev/sa2 在/mnt/sysimage下 破坏的文件initramfs-2.6.32-754.el6.x86_64.img 在/dev/sda1 /mnt/sysimage/boot下 切换到根目录下 chroot /mnt/sysimage 查看是否在根目录下 pwd 查看根下面的文件 ls 查看是否挂在到跟下 df 查看 /boot下的文件 缺少了initramfs 文件

使用下面ramdisk命令修复

进入/boot文件夹 cd /boot/

生成新的initramfs文件 :mkinitrd initramfs-`uanme -r`.img `uname -r ` (反向单引号)

查看是否生成成功 ls -l 成功之后退出(exit)重启(reboot)即可

二、删除/boot/下vmlinuz-xxx文件

[root@kaivi6 ~]# rm -f /boot/vmlinuz-2.6.32-754.el6.x86_64

产生的现象如下图:

![在这里插入图片描述](https://img-blog.csdnimg.cn/20191102153453200.png

此时的根 是光盘加载的一个虚拟的文件系统根,不是我们所要找的根文件系统 创建一个新的文件夹 ,把光盘挂在到这个临时文件夹中 原理就是在光盘中有一个文件和vmlinuz是一样的,只需要挂在光盘然后拷贝过来就ok 接下来就是退出 重启就ok

三、启动模式为reboot形式修复

[root@kaivi6 ~]# vim /etc/inittab

修改默认启动级别为6 reboot 模式,则会不断重复开机自启。 倒计时的时候按任意键 到下面这个界面 按照下面的提示 按下 a 键 在 qiuet 后面加上 空格 1-6 跳过 /etc/inittab 中的启动选项 先进入这里对应的 默认启动项 这里选择 3 字符界面为例 ,即在qiuet 后面直接输入 3 这里注意这是临时启动,还需要改对应的文件 vim /etc/inittab 。 1 模式 单用户模式 可以修改 破解root 口令

按照下面的提示 按下 a 键 进入模式1 单用户模式

reboot 重启

四、服务故障起不来故障排错

服务故障起不来故障排错 临时进入1 单用户模式 因为 一般2-5模式都是关闭的 但是1模式是开启的 一般很多服务都不启动,所以一般因为服务起不来而down机 checonfig --list 找到对应的服务先暂时关闭 checonfig [service] off [service] 对应的服务名称 重启忽略这个服务先把机器起来 之后再解决的服务的问题 reboot

五、grub破坏

一、 破坏一阶段(rbm前面446字节)

[root@kaivi6 ~]# dd if=/dev/zero of=/dev/sda bs=1 count=446 446+0 records in 446+0 records out 446 bytes (446 B) copied, 0.00988625 s, 45.1 kB/s

产生的现象: 直接到了光盘启动,因为光盘已经连接 断开光盘象限: 会尝试去通过网络来去找开机引导文件

进入救援模式: 第一种方式后面加的是硬盘DISK,因为gurb的引导文件在BMR的前面446字节,不属于任何一个分区 第二种方式是gurb交互是的方式 boot 的分区 setup 按装分区

进入到开启shell的模式下: 先要切换到根目录下 之后运行grub 修复命令即可 也可以用第二种方式进行交互式grub修复 MBR后续的27个扇区里面 上图看的很清楚 不仅仅修复1阶段 其他阶段都有着一定的修复

重启即可

查看是否修复

二 破坏1.5阶段 就是后面27个扇区(27*512=13k)

[root@kaivi6 ~]# dd if=/dev/zero of=/dev/sda bs=1 count=10240 seek=512 10240+0 records in 10240+0 records out 10240 bytes (10 kB) copied, 0.021381 s, 479 kB/s

产生的现象: 依旧救援模式 一直到开启shell中救援: 重启即可

三:二阶段的grub修复

先破坏二阶段的分区表

[root@kaivi6 grub]# dd if=/dev/zero of=/dev/sda bs=1 count=446 446+0 records in 446+0 records out 446 bytes (446 B) copied, 0.00951482 s, 46.9 kB/s [root@kaivi6 grub]# hexdump -C -n 512 /dev/sda -v 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| [root@kaivi6 grub]# rm -rf /boot/grub/ [root@kaivi6 grub]# reboot

grub1阶段破坏就认为没有启动功能了 产生现象: 依旧救援模式 一直到开启shell中救援: 这个修复了grub1 2 的部分文件,但是没有修复grub.conf文件 需要手工写

vim /boot/grub/grub.conf

技巧: :r!ls /boot/vmlinuz* :r!ls /boot/init*

重启即可

六 删除/sbin/init 第一个进程

[root@kaivi6 ~]# mv /sbin/init /data [root@kaivi6 ~]# reboot

产生的现象如下图,一直转圈圈: 选择 a键 为了看到更加清楚,把前面的rhgb quiet删除 然后加上 selinux=0 init=/bin/bash 禁用selinux 更改第一个进程 挂载光盘 之后可以引用光盘里面对应的包

ls /mnt/Packages

找到对应的安装包 有时候会第一次根的挂载第一次是只读的,这时候就需要重新挂载一次 找一个比较空的地方解开对应的压缩包 查看文件是否存在 重新移到/sbin目录下 重启即可 (登入问题) 方法二: 重启后,发现可以在bash环境下操作。此时,用rpm命令查询/sbin/init文件对应的安装包为upstart,挂载光盘到/mnt目录为安装做准备。由于/目录挂载状态为只读,重新挂载并设置为读写。 rpm重新安装upstart软件包。因为只是丢失了/sbin/init文件,所以需要添加–force选项强制覆盖安装。 重新启动后,成功进入系统。

实验: rm /sbin/init 恢复之 1 grub菜单 加 selinux=0 init=/bin/bash 2 mount -o remount,rw / 3 mount /dev/sr0 /mnt/ 4 rpm2cpio /mnt/Packages/upstart.xxx.rpm | cpio -idv ./sbin/init 5 mv ./sbin/init /sbin/

七、删除 /etc/fstab 和 /boot/

[root@kaivi6 ~]# rm -rf /etc/fstab /boot/* [root@kaivi6 ~]# cat /etc/fstab cat: /etc/fstab: No such file or directory [root@kaivi6 ~]# ll /boot/ total 0

直接到救援模式下的开始shell下进行操作 对应一样的版本号 这次的后果 系统找不到根在哪里,找不到分区 找不到根就等于说进不去根下面的/boot/里面进行修复 所以第一步就是先回复fastab配置文件,这样才能把根挂载 能看到只有一块sda 硬盘 一共分了5个分区 分区4和5 可以先排除,因为一个扩展分区 一个swap分区 对于1分区只有1个G的很小空间,所以当根的话不现实 ,大概率是/boot分区 。最大可能是2 3 。所以在这里可以建立一个临时文件夹,尝试挂载一下 看下里面具体的内容,从而来判断哪一个是根分区。 很明显,sda2 是根 在上面文件配置之后重启 就能找到对应的根了 就可以chroot 切根进行修复了 重新启动 进入救援模式 开启shell界面 切根并且进入/boot文件夹,boot中重要的2个文件 一个是vmlinuz文件,这个文件需要光盘重新挂载后重新拷贝一份到/boot/下即可 有个这个vmlinuz文件就可以通过命令生成initramfs文件 现在还缺少grub.conf文件 需要自己配置 vim /boot/grub/grub.conf

1 rescue mode 恢复/etc/fstab 找到/ 所在分区 fdisk -l mkdir /mnt/tmp mount/dev/sdaN /mnt/tmp ls /mnt/tmp mount /dev/sda2 /mnt/tmp vim /mnt/tmp/etc/fstab /dev/sda1 /boot ext4 defaults 0 0 /dev/sda2 / ext4 defaults 0 0 /dev/sda3 /data ext4 defaults 0 0 /dev/sda5 swap swap defaults 0 0

reboot

2 rescue mode 恢复内核和initrd 文件 /dev/sda2 --> /mnt/sysimage chroot /mnt/sysimage mount /dev/sr0 /mnt/ 方法1 rpm -ivh/mnt/Packages/kernel.xxxx.rpm --force

方法2 cp /mnt/isolinux/vmlinuz /boot/ mkinitrd /boot/initramfs.img uname -r

3 修复 grub grub-install /dev/sda vim /boot/grub/grub.conf 方法2 cat /boot/grub/grub.conf default=0 timeout=5 title=centos kernel /vmlinuz root=/dev/sda2 initrd /initramfs.img 4 reboot

八、给grub的启动过程加密

给grub的启动过程加密:

可以在grub的启动过程的两个环节加密: 1)给启动菜单项编辑权限加密; 2)启动特定菜单项的加密,加密命令相同,但是位于/boot/grub/grub.conf文件的不同位置

加密可以使用明文密码,但安全性太差。目前使用md5和sha-512加密方式加密,现在用md5加密启动项编辑权限,用sha-512加密启动特定菜单项

可以在vim编辑器下使用:r!grub-md5-crypt和r!grub-crypt命令直接生成md5和sha-512加密密码。一般把这个password放在hiddenmenu前面。 加密选项的语法为: md5加密:password --md5 加密密码 sha-512加密:password --encrypted 加密密码

最新回复(0)