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 ...
随机推荐
- spark sql 优化心得
本篇文章主要记录最近在使用spark sql 时遇到的问题已经使用心得. 1 spark 2.0.1 中,启动thriftserver 或者是spark-sql时,如果希望spark-sql run ...
- [題解]luogu_P1854 花店櫥窗佈置
來源:題解 一開始看不懂題目,一萬年了終於看懂 f [ i ] [ j ] 表示第i朵花放在第j個花瓶中最大美學值,(花是必須用完嗎?) 顯然放i-1朵花至少要放到前i-1個瓶子里,最多放到前j-1個 ...
- nginx和uwsgi的区别和作用
Django+uwsgi+nginx nginx和uwsgi的区别和作用: 1, nginx是对外的服务器,外部浏览器通过url访问nginx, uwsgi是对内的服务器,主要用来处理动态请求. 2, ...
- dzzoffice 任意文件下载漏洞分析
dzzoffice 任意文件下载 \updload\dzz\system\save.php第72行开始: elseif($_GET['do']=='move'){ $obz=trim($_ ...
- GYM 101889J(枚举、环上gcd)
答案只有n - 1种暴举即可,对于每种,gcd是一那踩雷稳了,否则看雷的分布有没有把模余占满. const int maxn = 1e5 + 5; int n, ans; char str[maxn] ...
- Windows忘记mysql的密码
1.查看mysql的安装路径 show variables like "%char%"; 路径:C:\Program Files\MySQL\MySQL Server 5.7\ 2 ...
- JVM-GC日志分析
程序运行时配置如下参数: -Xms20M -Xmx20M -Xmn10M -verbose:gc -XX:+PrintGCDetails -XX:SurvivorRatio= -XX:+PrintGC ...
- gin 打linux环境包问题解决
打window包直接go build一下,完事, 但是,打linux包出现如下错误 ..\github.com\mattn\go-isatty\isatty_linux.go:7:8: cannot ...
- SpringBoot整合国际化I18n
本文主要实现的功能: 从文件夹中直接加载多个国际化文件 后台设置前端页面显示国际化信息的文件 实现 国际化项目初始化,简单看下项目的目录和文件 在resource下创建国际化文件 messages.p ...
- Android线程池(转)
.前言 转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52415337 使用线程池可以给我们带来很多好处,首先通过线程池中线程的重用, ...