一次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

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

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

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 从零开始学android编程之网格布局管理器(2-1)

    从零开始学android编程之网格布局管理器(2-1)网格布局管理器用GridLayout类来表示。在《从零开始学android编程之表格布局管理器》中提到的TableLayout一般产生的表格外形是标准的方框,而GridLayout类产生的网格可以是不标准的。1设置网格的行数和列数在《从零开始学android编程之线性布局管理器》中提到的activity_linear.xml文件中使用表格布局管理器GridLayout,代码如下Lin

    2022年5月7日
  • MySql Povit_MySQL pivot row成动态列数「建议收藏」

    MySql Povit_MySQL pivot row成动态列数「建议收藏」杨魅力不幸的是,MySQL没有PIVOT基本上你想要做的功能。因此,您需要使用带有CASE语句的聚合函数:selectpt.partner_name,count(casewhenpd.product_name=’ProductA’THEN1END)ProductA,count(casewhenpd.product_name=’ProductB’THEN1…

    2022年10月30日
  • 基于量化交易回测的金融股票案例基础知识[通俗易懂]

    基于量化交易回测的金融股票案例基础知识[通俗易懂]1量化交易定义量化交易是指以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选出能带来超额收益的多种“大概率”事件以制定策略。它极大的降低了市场波动给投资者情绪带来的影响,避免在市场极度狂热或者悲观的情况下做出非理性的投资决策。2量化交易分类趋势性交易:适合一些主观交易的高手,用技术性指标作为辅助工具在市场中如鱼得水的,但如果只用各种技术指标或指标组合作为核心算法…

    2022年5月8日
  • 数据结构和数据结构导论_数据结构导论pdf百度云

    数据结构和数据结构导论_数据结构导论pdf百度云数据是指所有被计算机存储,处理的对象。数据元素是数据的基本单位,是运算的基本单位,通常具有完整确定的实际意义。数据元素常常又简称为元素。数据元素由数据项组成。在数据库中,数据项要成为字段或域。它是数据不可分割的最小标识单位。数据可有若干数据元素组成,而数据元素又由若干个数据项组成。数据的逻辑结构是指数据元素之间的逻辑关系。所谓逻辑关系是指数据元素之间的关联方式或邻接关系。集合中任何两个节点之间都没有邻接关系,组织形式松散。线性结构中结点按照逻辑关系一次排成一条链,节点之间一个一个依次相连接。树形结构

    2022年8月18日
  • 软件架构学习小结

    软件架构学习小结

    2021年11月15日
  • 仿朋友圈相册图片选择以及画廊效果「建议收藏」

    仿朋友圈相册图片选择以及画廊效果「建议收藏」仿朋友圈相册图片选择以及画廊效果1.效果展示2.导入相关第三方库依赖3.编写选择图片页面a.编写布局b.编写Activityc.相册选择工具类部分代码d.相册4宫图适配器4.编写画廊页面a.编写画廊页面b.编写Activityc.画廊适配器5.源码1.效果展示该demo适配Android6、7、10。画廊效果,支持缩放效果。视频展示:(等我B站视频审核通过再来修改)部分截图:文章有点长,如果没时间就拉到最底下下载源码,再给个一键三联哈(* ̄︶ ̄)2.导入相关第三方库依赖站在巨人的肩膀上,

    2022年5月22日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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