arm linux死机不是崩溃,kdump crash实战死机专题x86_64 arm64篇笨叔奔跑吧linux视频教程...

拍完之后请联络QQ,24小时之内为您发

下单留言备注用什么系统的设施观看视频

重大提醒:买第1季 第2季合集,赠送本视频

6d65a931c3c94a84fe7ea9e35dea1751.png

80440ce9782a889bcdf2c940d2b9cb37.png全程约5小时高清,140多页ppt,8大试验,基于x86_64的Centos  7.6和arm64,提供全套试验素材和环境。全面详情kdump crash在死机黑方面的实战应用,一律案例来源服务器和嵌入式产品开发实际案例!

5ec99c054171e64b98eddec7feb6f1bd.png

0ded13a6e2ae27f1b08de10e833ab581.gif

f975451982395d12106863a600805c83.png

e57328f65c8e2f99e06253aa2d964937.png

3dc31136528684b4e0aafc27e95df8fc.png

e325f16a427e2a5f17fc6aa5514cf318.png

70122fcb7552b4234e83fb18ea292010.png

01 Kdump Crash详情

1.  kdump Crash工具是啥?

当系统发生崩溃的时候,需要有一种方法能把发生崩溃时候的现场(上下文)保存下来,提供给系统管理人员和开发人员进行定位分析。早在2005年的时候,kdump这个想法已经实现了,到了现在各大Linux发行版都支持kdump,包括RHEL和Centos。

当系统崩溃时,kdump 使用 kexec 启动到第二个内核。第二个内核通常叫做捕获内核,以很小内存启动以捕获转储镜像。第一个内核保留了内存的一部分给第二内核启动用。因为 kdump 利用 kexec 启动捕获内核,绕过了 BIOS,所以第一个内核的内存得以保留。这是内核崩溃转储的本质。

2. kdump crash工具能处理啥问题?

笨叔把死机黑屏有两种情况,从CPU角度来看:

一种是真死:比方硬件的bug把系统总线挂死,CPU也不跑了,这是真死。这种情况有一个明显的特点:就是系统需要 poweroff下电(也叫冷启动)之后才能恢复,热启动是不行的。冷启动之后,发生奔溃的现场就从DDR内存里消失了。

第二种是假死:假死是我们看到设施没反应了,屏幕灭了,键盘鼠标也不动,ssh也访问不了等等,但是CPU是活的,这种没有相应的死,笨叔把它叫做假死,英文称为unresponsive,好比一个人休克了,但是心脏还是跳动的,医生可以利用电击等手段救活。

kdump crash工具最擅长医治假死的情况。对于第一种情况,由于系统需要把电重新上电才能启动,kdump无计可施了,遇到这种情况只能上硬件仿真器等等了。

5b5a78d71d31967e329599628200c68a.png

3. kdump crash工具在Centos上的安装

kdump crash工具在Centos 7.x系统上已经很成熟了,简单几步就安装完成。

4. 怎样测试kdump crash工具已经部署成功?

输入命令“service kdump status”可以看到kdump服务能否配置成功。

输入如下命令可以测试:

# echo 1 > /proc/sys/kernel/sysrq ; echo c > /proc/sysrq-trigger

假如没有问题,系统会自动重启,重启后可以看到在/var/crash/目录下生成了coredump文件。

5. Crash工具备哪些常用的命令。

crash工具一共有50个命令,常用的命令也就那么几个,大家可以跟着笨叔的视频一起来学习常用的几个命令。

7e7989abca8b6652c7fb5b294949fc3f.png

6. 怎样在arm64环境下玩kdump crash?

很多小伙伴可能会对ARM64更感兴趣,希望可以搭建一个免费的可以玩的平台。笨叔教大家怎样在Host主机里利用Qemu安装一个Debian for ARM64系统,而后在里面玩kdump crash,即免费又好玩,省去买开发板的钱。

02 kdump crash死机案例分析

笨叔在这一次挑战死机的专题视频中,设计了8个死机案例,分别有:

lab1:简单的空指针引发的panic

lab2:访问已经被删除的list head链表

lab3:复杂一点的空指针引发的panic

lab4:一个真实的驱动引发的死机

lab5:一个真实的驱动引发的死锁,导致系统假死

lab6:如何找到函数调用参数的在栈中地址而后获取具体的值

lab7:分析一个复杂的线上死锁导致的死机黑屏例子

lab8:  手工恢复函数调用栈backtrack (arm64)

lab1: 简单的空指针引发的panic

一个简单的例子,来让我们看看如何使用kdump crash工具来定位问题。

19a4e7a6457b8ca58b9c243d6d4e501a.png

运行crash工具之后。

1437cfc3c42e78650fa26ec7a71140f3.pngcrash工具简单明了的告诉你panic的起因。

2490aaca6ad6d6b5a29fdaa4a2e4cd33.png用bt命令可以查看发生崩溃时的内核栈调用关系backtrace,通过backtrace来反推发生了神马事情导致内核崩溃了。RIP寄存器指示了发生错误的具体地址。

b50cfd61c5b86df502fd12ebf7e05e3b.png

通过反汇编dis命令即可以看到具体出错是在那条指令了,是不是入门很easy?

假如你觉得上面三板斧就是crash的一律,那就大错特错了,crash工具迷人的地方,就像警察破案,需要一步一步进行推理和推导。

lab4:一个来源于真实驱动例子的死机

0b9f2d4c56f7edb45a4f15484afc05f8.png

上面是来自项目上一个小朋友写的驱动。这个驱动,一上来就死机给你一个下马威,你能看出来是真名起因导致的死机吗?

假如一下子看不了,没关系,可以来看笨叔的[死磕死机专题]视频节目。

lab6:推导函数形参的存储位置和具体的值

我们常常在进行死机分析和推理的过程中,需要分析调用函数的形参具体存放在哪里?而后即可以知道在崩溃时刻,这些形参都是具体什么值,这些值是非常珍贵的破案现场,这个过程是非常有意思的。

ad62b46d23a0ae74dd7274f36aab8978.png这是非常高级而且有用的技巧,您需要理解x84_64或者者arm64体系结构的参数调用规则,以及栈是如何布局的。另外还需要结合反汇编来进行推导。

e79714387d47ef2604c0c15054279900.png

在这个试验里,笨叔教大家如何通过反汇编 backtrace,来推导出在泪崩时刻,create_oops()函数的第二和第三个参数具体存放在哪里?他们具体的值又是多少?

lab7:一个复杂的死锁死机例子

一个来源真实线上云系统死锁导致的死机的案例。

20765ff22df639789de221affc7e0c8d.png

3fcc3bc7e554f2550086ecc66a67ede9.png

通过这个例子的学习,我们有能力和有信心去处理线上服务器或者者产品发生死机黑屏的问题,我们不再是只会安装Centos系统的小运维工程师了,我们开始会分析和定位复杂的死机问题了,给老板展现我们的硬实力!!!

lab8:手动恢复函数调用栈(arm64)

97757d9f47baf4a007c141c2d37a41dd.png

这是一个非常高的技巧,在死机实战过程中是非常有用的神技。重要是要明白和了解ARM64的函数调用的协议(procedure call standard)以及栈帧是怎样布局 和组织的。

220999c30f02dd114d9e4548304aaf21.png

d8020fd52b25d2da4899900901045f7e.png

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值