linux内核启动修复
linux内核启动修复
首先看一下linux内核重要文件grub.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/sda2 # initrd /initrd-[generic-]version.img #boot=/dev/sda default=0 #如果有多个菜单,默认选择的菜单为0 timeout=5 #菜单选项栏等待5s splashimage=(hd0,0) /grub/splash .xpm.gz #/dev/sda1即/boot下开机启动图片 hiddenmenu #影藏菜单 title CentOS 6 (2.6.32-696.el6.x86_64) #标题为CentOS 6 (2.6.32-696.el6.x86_64),此标题不能没有 root (hd0,0) #第一块磁盘,第1个分区,指的是/boot kernel /vmlinuz-2 .6.32-696.el6.x86_64 ro root=UUID=9ca5bdac-ce61-410e-a9fb-19a7877163cc rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSF ONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet # kernel相对于/boot的路径,此处根值/boot,kenrl后面跟有系统启动相关参数 rhgb 图形化工具(转圈圈),删除rhgb直接到正常启动界面 quiet默认隐藏内核的启动过程 initrd /initramfs-2 .6.32-696.el6.x86_64.img title CentOS 6 (2.6.32-696.el6.x86_64) #标题为CentOS 6 (2.6.32-696.el6.x86_64),此标题不能没有 kernel (hd0,0) /vmlinuz-2 .6.32-696.el6.x86_64 ro root=UUID=9ca5bdac-ce61-410e-a9fb-19a7877163cc rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSF ONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet # 没有定义根,后面不能调用只能在前面添加(hd0,0) initrd (hd0,0) /initramfs-2 .6.32-696.el6.x86_64.img |
一 删除/boot/grub/*下所有文件,只保留grub.conf配置文件,系统能否正常启动修复?

二 破坏MBR的前446字节的信息,修复(stage1阶段修复)
1
|
[root@Centos6 ~] # dd if=/dev/zero of=/dev/sda bs=1 count=4426 |





-----------------------------------------------------------------------------------
三 破坏512字节之后的内容进行修复(stage1.5阶段过程)

此时会发现菜单都看不到
1
|
sh-4.1 # grub |

1
|
grub>root (hd0,0) #表示boot在第一块磁盘第1个分区 |


四 在“三”的基础上在重新做“一”的操作,再启动会出现报错,状态码为Error 15



五 如果没有root(hd0,0)且kernel,initrd不指定/boot的位置会出现如下报错
1
2
3
|
title CentOS 6 (2.6.32-696.el6.x86_64) #标题为CentOS 6 (2.6.32-696.el6.x86_64),此标题不能没有 kernel vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=9ca5bdac-ce61-410e-a9fb-19a7877163cc rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSF ONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet # 没有定义根,后面不能调用只能在前面添加(hd0,0) initrd initramfs-2.6.32-696.el6.x86_64.img |

1
2
3
4
|
#此时只能进入救援模式切根修改文件 title CentOS 6 (2.6.32-696.el6.x86_64) #标题为CentOS 6 (2.6.32-696.el6.x86_64),此标题不能没有 kernel /vmlinuz-2 .6.32-696.el6.x86_64 ro root=UUID=9ca5bdac-ce61-410e-a9fb-19a7877163cc rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSF ONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet # 没有定义根,后面不能调用只能在前面添加(hd0,0) initrd /initramfs-2 .6.32-696.el6.x86_64.img |
六 如果在默认文件中去掉root (hd0,0)一行系统启动会出现的情况
1
2
3
|
title CentOS 6 (2.6.32-696.el6.x86_64) kernel /vmlinuz-2 .6.32-696.el6.x86_64 ro root=UUID=9ca5bdac-ce61-410e-a9fb-19a7877163cc rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSF ONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet initrd /initramfs-2 .6.32-696.el6.x86_64.img |

七 调换kernel和initrd调换顺序,开机启动情况?
1
2
3
|
title CentOS 6 (2.6.32-696.el6.x86_64) initrd /initramfs-2 .6.32-696.el6.x86_64.img kernel /vmlinuz-2 .6.32-696.el6.x86_64 ro root=UUID=9ca5bdac-ce61-410e-a9fb-19a7877163cc rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSF ONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet |







八 单用户模式下可以轻易破解口令,如何明文加密口令?
1
|
password zangfans |


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/sda2 # initrd /initrd-[generic-]version.img #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0) /grub/splash .xpm.gz password centos6 #编辑菜单项输入密码 hiddenmenu title CentOS 6 (2.6.32-696.el6.x86_64) root (hd0,0) kernel /vmlinuz-2 .6.32-696.el6.x86_64 ro root=UUID=9ca5bdac-ce61-410e-a9fb-19a7877163cc rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSF ONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet initrd /initramfs-2 .6.32-696.el6.x86_64.img title CentOS 6 (2.6.32-696.el6.x86_64) kernel (hd0,0) /vmlinuz-2 .6.32-696.el6.x86_64 ro root=UUID=9ca5bdac-ce61-410e-a9fb-19a7877163cc rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSF ONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet # initrd (hd0,0) /initramfs-2 .6.32-696.el6.x86_64.img password centos6 #启动输入密码 |



九 如何通过密文设置加密口令
1
2
3
4
|
[root@Centos6 ~] # grub-md5-crypt Password: Retype password: $1$Z.gAn/$Xd647hXfPj /sJ .i8A0By8. |

1
|
password --md5 $1$V1hAn/$hSLRXWfIZWwVtYz4th5rg1 |
1
2
3
4
|
[root@Centos6 ~] # grub-crypt Password: Retype password: $6$jkKAT.eUrv3d4bfM$f41lkKlqQk3fAPqNwgy93J6Wi6bVF.zB5b.24V1QPwAGXkVVmwk2MGdi1UxzStHBaPWarW20AppaOvwheNRRj. |
1
|
password --encrypted $6$ndPVD /LnVhjBwHaG $XlSiTmJfRJrWufrmH0tLzle /zlmCB .Zyi /WClkcL8G43NDpXlKuQPvsw4AiIJqT1fJrb2Kh8DgZLY68pIAKFI0 |
十 如果忘记root账号口令,如何修复?



十一 设置grub背景图片
1
2
3
4
5
6
7
8
|
[root@Centos6 ~] # which convert /usr/bin/convert [root@Centos6 ~] # rpm -qf `which convert` ImageMagick-6.7.2.7-6.el6.x86_64 [root@Centos6 ~] # convert -resize 640x480 -colors 14 zf.jpg zf.xpm #此命令必须在zf.jpg位置使用,使用less zf.xpm可以在头部看到相关信息 [root@Centos6 ~] # cp zf.xpm /boot/grub [root@Centos6 grub] # vim grub.conf splashimage=(hd0,0) /grub/zf .xpm |
1
2
|
[root@Centos6 ~] # cat /proc/cmdline ro root=UUID=9ca5bdac-ce61-410e-a9fb-19a7877163cc rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet |
十二 删除grub.conf文件,启动修复


十三 删除/boot/grub整个目录,如何修复?
1
|
[root@Centos6 ~] # rm -rf /boot/grub |



1
2
3
4
5
6
|
#必须写三项分别是title kernel initrd default 0 timeout 3 title Centos6 kernel /vmlinuz-2 .6.32-696.el6.x86_64 ro root= /dev/sda2 #方便的小技巧,防止手敲出错 initrd /initramfs-2 .6.32-696.el6.x86_64.img |



十四 删除/boot下所有文件如何修复?
1
2
3
4
5
6
7
8
|
[root@Centos6 ~] # ls /boot config-2.6.32-696.el6.x86_64 initramfs-2.6.32-696.el6.x86_64.img System.map-2.6.32-696.el6.x86_64 efi lost+found vmlinuz-2.6.32-696.el6.x86_64 grub symvers-2.6.32-696.el6.x86_64.gz [root@Centos6 ~] # rm -rf /boot rm : cannot remove ` /boot ': Device or resource busy [root@Centos6 ~] # ls /boot [root@Centos6 ~] # |
十五 误删除/sbin/init,无法进入系统如何修复?
1
|
[root@Centos6 ~] # mv /sbin/init ~/ |



1
2
|
bash -4.1 # rpm -qf /sbin/init #upstart包提供 |

1
|
bash -4.1 # mount -o remount,rw / |

1
2
3
|
#默认光盘已经挂载在/mnt bash -4.1 # cd /mnt bash -4.1 # rpm -ivh /Packages/upstart-xxxxxx --force |

1
|
bash -4.1 # sync |

十六 根文件系统放在逻辑卷上,若误操作删除/fstab,/boot/*文件该如何恢复?
1
2
|
[root@Centos6-LVM ~] # mv /etc/fstab /root [root@Centos6-LVM ~] # rm -rf /boot/* |



1
2
3
4
5
6
|
#必须写三项分别是title kernel initrd default 0 timeout 3 title Centos6_lvm kernel /vmlinuz-2 .6.32-696.el6.x86_64 ro root= /dev/vg_centos6lvm/LogVo100 selinux=0 initrd /initramfs-2 .6.32-696.el6.x86_64.img |
十七 误删除/etc/fstab文件和/boot下的所有文件如何修复?
1
2
|
[root@Centos6 ~] # rm -rf /etc/fstab [root@Centos6 ~] # rm -rf /boot |

1
2
3
4
|
bash -4.1 # mkdir /mnt/tmp #创建 bash -4.1 # mount /sda1 /mnt/tmp #挂载到临时文件 bash -4.1 # ls /mnt/tmp #查看里面的内容,此处可以看到没有任何文件可以判断为/boot 通过以上方法就可以知道每个分区到底是什么 |


1
2
3
4
5
6
|
#必须写三项分别是title kernel initrd default 0 timeout 3 title Centos6 kernel /vmlinuz-2 .6.32-696.el6.x86_64 ro root= /dev/sda2 initrd /initramfs-2 .6.32-696.el6.x86_64.img |
12、重启系统,恢复正常
linux内核启动修复的更多相关文章
- linux内核启动参数
Linux内核启动参数 Console Options 参数 说明 选项 内核配置/文件 console=Options 用于说明输出设备 tt ...
- 用qemu+gdb tcp server+CDT调试linux内核启动-起步
用qemu+gdb tcp server+CDT调试linux内核启动-起步 说明: 环境信息与 用virtualbox+模拟串口+CDT调试linux内核 TCP IP协议栈-起步 提到的一样,并且 ...
- Linux内核启动过程概述
版权声明:本文原创,转载需声明作者ID和原文链接地址. Hi!大家好,我是CrazyCatJack.今天给大家带来的是Linux内核启动过程概述.希望能够帮助大家更好的理解Linux内核的启动,并且创 ...
- linux内核启动以及文件系统的加载过程
Linux 内核启动及文件系统加载过程 当u-boot 开始执行 bootcmd 命令,就进入 Linux 内核启动阶段.普通 Linux 内核的启动过程也可以分为两个阶段.本文以项目中使用的 lin ...
- 【转载】linux内核启动android文件系统过程分析
主要介绍linux 内核启动过程以及挂载android 根文件系统的过程,以及介绍android 源代码中文件系统部分的浅析. 主要源代码目录介绍Makefile (全局的Makefile)bioni ...
- Linux内核启动
Linux内核启动过程概述 Linux的启动代码真的挺大,从汇编到C,从Makefile到LDS文件,需要理解的东西很多.毕竟Linux内核是由很多人,花费了巨大的时间和精力写出来的.而且直到现在,这 ...
- 通过从代码层面分析Linux内核启动来探知操作系统的启动过程
通过从代码层面分析Linux内核启动来探知操作系统的启动过程 前言说明 本篇为网易云课堂Linux内核分析课程的第三周作业,我将围绕Linux 3.18的内核中的start_kernel到init进程 ...
- Linux内核启动代码分析二之开发板相关驱动程序加载分析
Linux内核启动代码分析二之开发板相关驱动程序加载分析 1 从linux开始启动的函数start_kernel开始分析,该函数位于linux-2.6.22/init/main.c start_ke ...
- Linux内核启动及根文件系统载入过程
上接博文<u-boot之u-boot-2009.11启动过程分析> Linux内核启动及文件系统载入过程 当u-boot開始运行bootcmd命令,就进入Linux内核启动阶段.与u-bo ...
随机推荐
- php-fpm 高并发 参数调整
工作中经常会遇到会给客户配置服务器,其中有的客户还会有并发量要求,其中也会必须要用负载均衡承载压力的.增加服务器数量肯定能有效的提升服务器承载能力,但只有根据目前已有配置设置好单台服务器才能更好的发挥 ...
- Spring源码(一)
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</lis ...
- VC++6.0下新建工程中有17个选项,都是做什么用的?
要理解每种工程的作用需要很多基础知识,只能简要的和你讲一下: 1.ATL COM AppWizard 用来新建一个COM组件的向导,比如WORD里用的公式编辑器就是一个COM组件. 2.Cluster ...
- rpm、yum(转)
rpm http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/08/2203153.html yum http://www.cnblogs ...
- PostgreSQL - 查询表结构和索引信息
前言 PostgreSQL的表一般都是建立在public这个schema下的,假如现在有个数据表t_student,可以用以下几种方式来查询表结构和索引信息. 使用\d元命令查看表字段信息和索引信息 ...
- 3.KPCR
KPCR: CPU控制区(Processor Control Region) 当线程进入0环时, FS:[0]指向KPCR(3环时FS[0]-> TEB)每个CPU都有一个KPCR结构体(一个核 ...
- Minikube-Kubernetes本地环境进行开发
Minikube-Kubernetes本地环境进行开发 使用Minikube 启动Minikube # 启动 minkube start # 检查状态 minikube status host: Ru ...
- Django的学习需要掌握的一些基础和初步搭建自己的框架
一.Django的学习需要掌握的一些基础 第一个需要注意的点:客户端发送过来的数据结构组成: 第二个需要注意的点:动态网页和静态网页 静态网页:用户发送请求,服务端找到对应的静态文件返回给浏览器,静态 ...
- 如何加快HTML页面加载速度
1. 页面减肥 a. 页面的肥瘦是影响加载速度最重要的因素. b. 删除不必要的空格.注释. c. 将inline的script和css移到外部文件. d. 可以使用HTML Tidy来给HTML减肥 ...
- cnblog之初来乍到
hello,大家好,我是蓝斯老师 一枚致力于android开发的攻城狮 很荣幸能够在博客园开博(博主以前是混CSDN的,原博客地址http://blog.csdn.net/lancees) 希望将来能 ...