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 ...
随机推荐
- swap(2018.10.16)
题意:给定一个{0,1,2,3,-,n-1}的排列 p. 一个{0,1,2 ,-,n-2}的排列 q 被认为是优美的排列, 当且仅当 q 满足下列条件 对排列 s={0,1,2,3,...,n-1}进 ...
- 选择提示框UIAlertController 和网络状态判断AFNetworking
// 选择提示框 DownloadView *vc = [[DownloadView alloc] initWithFrame:CGRectMake(, , SCREEN_WIDTH, SCREEN_ ...
- Flask (六) 项目(淘票票)
FlaskDay06 Flask项目-淘票票 RESTful REST一种软件架构风格.设计风格.而不是标准,只是提供了一组设计原则和约束条件.它主要用户客户端和服务器交互类的软件. 在前后端分离 ...
- monxin cms 任意文件删除漏洞
\program\diypage\receive\edit.php首先看到一个unlink($path);本来应该先看sql语句的,但知道是任意文件删除先跳过删除语句,看看$path怎么传入的倒推上去 ...
- [软件工程基础]2017.10.30 第三次 Scrum 会议
决议 游心与李煦通沟通生成报告脚本问题,并调试相应代码 李煦通部署服务器,并做一定安全检查 石奇川设计实验流程和题库前端页面 王嘉睿爵测试网站基本流程,提出关于用户体验方面的建议 刘子渊阅读代码,为机 ...
- 089 Gray Code 格雷编码
格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异.给定一个代表编码总位数的非负整数 n,打印格雷码序列.格雷码序列必须以0开头.例如, 给定 n = 2, 返回 [0,1,3 ...
- 湖南省2016省赛题。1809: Parenthesis 线段树
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1809 给定一串平衡的序列,要求交换两个位置之后,问其是否还平衡. 首先要注意到交换的是两个位置,这 ...
- [android][windows][使用HAXM加速模拟器][不使用SDK manager]
网上找到了来使用HAXM,可惜我在sdk manager上下载不了,也使用过勾上[fetching...]那个选项,依然无效. 所以自己手动下载来安装和使用. 具体的教程可以参考http://blog ...
- Java .class文件的反编译与反汇编
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10840818.html 一:反编译 通常用于第三方JAR包的逆向工程. 一般我们拿到的jar包都是经过编译后 ...
- hihocoder1829 Tomb Raider
思路: 暴力枚举. 实现: #include <iostream> #include <set> #include <vector> using namespace ...