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/sdadefault=0 #如果有多个菜单,默认选择的菜单为0timeout=5 #菜单选项栏等待5ssplashimage=(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.imgtitle 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/sdadefault=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gzpassword 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.imgtitle 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-cryptPassword: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.confsplashimage=(hd0,0)/grub/zf.xpm |
|
1
2
|
[root@Centos6 ~]# cat /proc/cmdlinero 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 initrddefault 0timeout 3title Centos6kernel /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 /bootconfig-2.6.32-696.el6.x86_64 initramfs-2.6.32-696.el6.x86_64.img System.map-2.6.32-696.el6.x86_64efi lost+found vmlinuz-2.6.32-696.el6.x86_64grub symvers-2.6.32-696.el6.x86_64.gz[root@Centos6 ~]# rm -rf /bootrm: 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
|
#默认光盘已经挂载在/mntbash-4.1# cd /mntbash-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 initrddefault 0timeout 3title Centos6_lvmkernel /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 initrddefault 0timeout 3title Centos6kernel /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 ...
随机推荐
- 第十九篇 .NET高级技术之C#中的线程(一)
原文://http://www.cnblogs.com/miniwiki/archive/2010/06/18/1760540.html 文章系参考转载,英文原文网址请参考:http://www.al ...
- JavaScript 中的面向对象编程
使用JSON 来定义一个对象: <script type="text/javascript">var xiaoming = { name : 'xiaoming', a ...
- mysql_innodb引擎
innodb概括 1.Innodb是一种事务性存储引擎 2.完全支持事务的ACID特性 3.实现事务特性的原理: 使用Redo Log和Undo Log,Undo Log用于帮助未提交事务进行回滚,R ...
- 牛客寒假6-G.区间或和
链接:https://ac.nowcoder.com/acm/contest/332/G 题意: 求a|(a+1)|(a+2)|...|(b-1)|b. 思路: 求a-b的差的每一个二进制位 自己也看 ...
- JavaScript引擎基本原理:Shapes和Inline Caches
原文链接: JavaScript engine fundamentals:Shapes and line Cahes 这篇文章描述了一些在js引擎中通用的关键点, 并不只是V8, 这个引擎的作者(Be ...
- String的内存和intern()方法
一.关于常量池 字符串在Java中用的非常得多,Jvm为了减少内存开销和提高性能,使用字符串常量池来进行优化. 在jdk1.7之前(不包括1.7),Java的常量池是在方法区的地方,方法区是一个运行时 ...
- 【学习笔记】六:面向对象的程序设计——理解JS中的对象属性、创建对象、JS中的继承
ES中没有类的概念,这也使其对象和其他语言中的对象有所不同,ES中定义对象为:“无序属性的集合,其属性包含基本值.对象或者函数”.现在常用的创建单个对象的方法为对象字面量形式.在常见多个对象时,使用工 ...
- 精通AngularJS(三)深入scope,继承结构,事件系统和生命周期
深入探讨 Scope 作用域 每一个 $scope 都是类 Scope 的一个实例.类 Scope 拥有可以控制 scope 生命周期的方法,提供事件传播的能力,并支持模板渲染. 作用域的层次结构 让 ...
- cvCanny的参数
cvCanny 函数功能:采用Canny方法对图像进行边缘检测 函数原型: void cvCanny( const CvArr* image, CvArr* edges, double thresho ...
- git 设置了ssh key 还是需要输入账户和密码
参考这篇文章https://blog.csdn.net/shahuhu000/article/details/86625987 git remote remove origingit remote a ...