Linux系统启动流程之(3)系统故障修复之一

Linux系统启动流程之(3)系统故障修复之一

在使用linux中可能因为各种原因导致机器无法启动,于是针对这些问题都会应该有一个应对的措施,来恢复系统让此进行工作。下面用几个案例来逐一说明。

案例一:

破坏掉grub中bootloader,及磁盘的前446字节存放的 grub的stage1第一阶段。

#使用dd命令将前446字节的bootloader数据填充为0

[[email protected] ~]# dd if=/dev/zero of=/dev/sda bs=446 count=1
1+0 records in
1+0 records out
446 bytes (446 B) copied, 0.00247303 s, 180 kB/s

#使用hexdump命令来查看磁盘前512字节

说明:发现前446字节已经被清除,这时再重启系统将无为进程grub引导,也就无法正常进入第一阶段stage1。下面进入修护。

#插入对应的linux 版本的光盘,开机从光盘启动:

#按回车进入linux光盘系统引导菜单界面,选择救援模式Rescue installed system

#选择完成后按回车进入救援模式,等待系统启动完,进入语言选择:

注:这里为了命令以及字符的兼容性,最好选择为English英文,选择好了直接回车或者对下面的OK按钮回车都行。

#然后进入键位部署界面。

解析:这里选择自己熟悉的键位配置,一般大多数为us美式布局。

#选择后会出现是否设置网络,这里为本地,所有选择No不设置。

#选择后进入真正的救援识别界面

解析:以上信息表示,如果检查了此机器上的系统以及其内部的分区表结构,并且将会以只读方式将根分区挂载至/mnt/sysimage,然后提示按Continue是否挂载并继续。这里继续:

解析:因为只是破环了前446字节,所有还是能识别此机器上有块硬盘是有操作系统的。并且将再次提示会挂载到/mnt/sysimage目录下。想要回到原来的系统,可以使用chroot命令切换到真正的根文件系统,命令:chrroot  /mnt/sysimage,下面回车将会进入下个界面:

说明:这里说明已经有已经检查到了有个系统,并将其更分区挂载到/mnt/sysimage目录下。

解析:直接选择shell选项,进入救援模式提供的shell进程。

#进入shell后,可以使用df命令查看当前文件系统挂载情况:

说明:这里和上述提示一样,此磁盘的分区都被挂载到/mnt/sysimage目录下。

下面就I安装grub,这里使用grub-install工具全新安装。

#安装之前,最后想切换到真实根

chroot  /mnt/sysimage/

注:这里发现此时的bash已经变成了sh,查看目录文件也是原系统文件。

#使用grub-install命令全新安装grub

grub-install  /dev/sda

提示:如果突然像卡住了而不出消息,千万不要使用Ctrl+z发送终止信号,一定要等到此信息出现表示安装成功。否则前功尽弃。

#再次使用hexdump查看/dev/sda磁盘前446字节是否已经修复:

hexdump  -C  -n  446  -v  /dev/sda

#于是退出当前sh返回救援模式shell

exit

#此时直接输入reboot重启即可

reboot

案例二:

只破坏其stage1.5及grub1.5引导部分,并进行恢复

#同样使用dd命令,此时清除的是前面512字节后面的数据。

[[email protected] ~]# dd if=/dev/zero of=/dev/sda bs=512 count=2 seek=1 
2+0 records in
2+0 records out
1024 bytes (1.0 kB) copied, 0.00986278 s, 104 kB/s

#这里使用hexdump命令查看目前/dev/sda的前1024字节的后512字节状况

[[email protected] ~]# hexdump -C -n 1024  -s 512 -v /dev/sda

解析:grub工具同样提供了一个交互式的安装工具,但是,此工具只能安装stage1及第一阶段,但是如果第二阶段文件本来就不存在或者对应的备份文件被破坏,那么此grub命令也就无法修复,下面验证此说法。

#查看当/boot/grub/目录下的备份文件

[[email protected] ~]# ls /boot/grub/
device.map    fat_stage1_5  grub.conf   jfs_stage1_5  minix_stage1_5  splash.xpm.gz  stage2 vstafs_stage1_5e2fs_stage1_5 ffs_stage1_5 iso9660_stage1_5 menu.lst      reiserfs_stage1_5  stage1         ufs2_stage1_5  xfs_stage1_5

#移动所有1.5阶段备份移动到别处

[[email protected] ~]# mv /boot/grub/*1_5 /testdir/

#此时使用grub命令进入交互式安装

解析:因为找不到第二阶段的文件,而且磁盘里第二阶段也被清空,所有这里虽然显示安装,也只是重新安装了第一阶段,而第二阶段并未安装,下面查看验证:

#查看/boot/grub目前下是否生成了1.5阶段的备份文件

[[email protected] ~]# ls /boot/grub/
device.map  grub.conf  menu.lst  splash.xpm.gz  stage1  stage2

说明:这里并没有生成备份文件,下面查看是否修复了磁盘里数据的第二阶段。

#使用hexdump命令来查看磁盘第二阶段数据

解析:这里已经验证了如果1.5的配备文件不存在,grub交互式安装是无法生成1.5阶段的备份文件的,而且恢复的也只是前446字节bootloader及第一阶段。

#这时可以使用救援模式或者在重启系统前使用grub-install命令进行grub的完全安装

#直接进行完全安装

[[email protected] ~]# grub-install --root-directory=/ /dev/sda
Installation finished. No error reported.
This is the contents of the device map //boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install‘.
 
# this device map was generated by anaconda
(hd0)     /dev/sda

#再次查看gurb备份文件是否已经重新生成

[[email protected] ~]# ls /boot/grub/
device.map  fat_stage1_5  grub.conf    jfs_stage1_5  minix_stage1_5    
splash.xpm.gz  stage2  vstafs_stage1_5   e2fs_stage1_5  ffs_stage1_5  iso9660_stage1_5  menu.lst      reiserfs_stage1_5  stage1     ufs2_stage1_5  xfs_stage1_5

#使用hexdump命令查看1.5阶段是否已经重新生成过来

时间: 2024-10-03 14:00:43

Linux系统启动流程之(3)系统故障修复之一的相关文章

Linux系统启动流程之(3)系统故障修复之二

Linux系统启动流程之(3)系统故障修复之二 通过上一篇可以了解如何来重新安装grub从而修复grub引导,那么如果损坏的不仅仅为grub引导,如果还出现了其它更为严重的问题呢.下面几个案例来说明: 案例一: 通常系统服务运行之前会运行init程序来开启第一个进程,那么如果init被删除呢? #删除或者移动init程序到别处 [[email protected] ~]# which init /sbin/init [[email protected] ~]# mv /sbin/init /te

Linux系统启动流程、内核及模块管理

Linux系统启动流程.内核及模块管理 Linux系统的组成部分组成:内核+根文件系统(kernel+rootfs)内核(kernel): 进程管理(创建.调度.销毁等).内存管理.网络管理(网络协议栈).驱动程序.文件系统.安全功能IPC:Inter Process Communication机制本地进程间通信机制:消息队列.semerphor.shm(共享内存)跨主机进程间通信机制:socket等运行中的系统环境可分为两层:内核空间.用户空间内核空间(模式):内核代码(特权级操作-->系统调

linux基础-附件1 linux系统启动流程

附件1 linux系统启动流程 最初始阶段当我们打开计算机电源,计算机会自动从主板的BIOS(Basic Input/Output System)读取其中所存储的程序.这一程序通常知道一些直接连接在主板上的硬件(硬盘,网络接口,键盘,串口,并口).现在大部分的BIOS允许你从软盘.光盘或者硬盘中选择一个来启动计算机.下一步,计算机将从你所选择的存储设备中读取起始的512 bytes(比如光盘一开是的512 bytes,如果我们从光盘启动的话).这512 bytes叫做主引导记录MBR (mast

Linux系统启动流程分析与关机流程

Linux 系统启动流程分析 Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导. 运行 init. 系统初始化. 建立终端. 用户登录系统. init程序的类型: SysV: init, CentOS 5之前, 配置文件: /etc/inittab. Upstart: init,CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf. Systemd: systemd, CentOS 7,配置文件: /usr/lib/

Linux系统启动流程与内管管理(上)

在讲linux系统启动流程之前,来讲讲linux的组成,这样能能帮助我们深入了解系统的启动流程,废话不多说直接上系统启动流程图 linux组成 linux:kernel+rootfs kenrel的作用:进程管理.内存管理.网络管理.驱动程序.文件系统.安全管理等 rootfs:程序和glibc 库:函数结合,function,调用接口(头文件负责传输) 过程调用:procedure,无返回值 函数调用:function 程序:二进制执行文件 内核设计流派 单内核:把所有功能集成与一个程序 如:

Linux系统管理(二):Linux系统启动流程

Linux系统启动流程 从11月底报名马哥的Linux培训班,12月初真正开始学习,已经过去一个多月的时间了,从学习Linux的发展史开始.跟着学习命令行.文件系统挂载与管理.目录.Bash Shell的基本特性等等,Linux真的是博大精深,今天以CentOS 5,CentOS 6的启动过程进行一下简单的总结.由于才疏学浅,知识所限,有些地方分析不妥之处还请各位高手不吝赐教. 系统启动过程主要经过以下几个流程: POST>BootSequence(BIOS)>Bootloader(MBR)&

linux系统启动流程一览

加载BIOS的硬件信息并进行自检,然后根据设置取得第一个可启动的设备: 读取并执行第一个启动设备内MBR(master boot record,主引导分区)的boot loader: 依据bootloader的设置加载kernel,kernel开始检测硬件和加载驱动程序: 在硬件驱动成功后,kernel会调用init进程,init进程会取得run-level信息: init执行/etc/rc.d/sysinit文件来准备软件执行的操作环境: init执行run-level的各个服务: init执

【转载】Linux系统启动流程

原文:Linux系统启动流程 POST(Power On Self Test/上电自检)-->BootLoader(MBR)-->Kernel(硬件探测.加载驱动.挂载根文件系统./sbin/init) -->init(/etc/inittab:设定默认级别.系统初始化脚本.启动及关闭对应级别的服务.启动终端) 第1步 计算机电源接通后,CPU默认执行 0ffffh:0000h 处的指令(8086是这样,386应该类似),而此内存地址应该存放的就是 BIOS ROM .系统将有一个对内部

Linux系统启动流程及grub重建(1)

日志系统 Linux系统启动流程 PC: OS(Linux) POST-->BIOS(Boot Sequence)-->MBR(bootloader,446)-->Kernel-->initrd-->(ROOTFS)/sbin/init(/etc/inittab) 启动的服务不同:    运行级别:0-6        0:halt        1: single user mode, 直接以管理员身份切入, s,S,single        2:multi user m