故事是因为我们四个本科同学一起找牛人同学买了他领衔设计的笔记本。
笔记本到手后安装了ubantu,开始想从头开始研究linux的panic分析。
想看看linux的kernel space的调试和RTOS的TRACE32调试异同。
动手之后,碰见各种问题,网络上找到各种高人写过的文章解决出现问题。
最终配置好crash工具,可以好好研究kernel space 的dump展示了什么。
高兴。
1)linux 系统的panic分为两种:user space 和 kernel space.
他们使用不同的工具生成的不同的dump文件,并用不同软件分析dump文件。
a)user space : user space panic dump 文件如:core.3296 和core-hellotest.2816.xm.1593867625 。用gdb分析。
b) kernel space:kernel panic dump文件如/var/crash/202007092214/dump.202007092214。用crash分析。
├── [Jul 9 22:14] 202007092214
│ ├── [Jul 9 22:14] dmesg.202007092214
│ └── [Jul 9 22:14] dump.202007092214
2)本文下面主要讨论kernel space:kernel panic dump文件生成和使用crash。
本文使用的系统Ubuntu 18.04.4 LTS / Linux 5.3.0-62-generic
#查看发布版本号
lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 18.04.4 LTS
Release: 18.04
Codename: bionic
#查看内核版本号
uname -sr
Linux 5.3.0-62-generic
#查看系统曾经安装内核版本号
sudo dpkg --get-selections |grep linux-image
linux-image-5.3.0-28-generic deinstall
linux-image-5.3.0-61-generic install
linux-image-5.3.0-62-generic install
linux-image-unsigned-5.3.0-62-generic deinstall
3)生成kernel dump 的工具和配置。
crash-dump官方文档:https://ubuntu.com/server/docs/kernel-crash-dump (很多有效信息的!)
The kernel crash dump utility 安装命令:
sudo apt-get install linux-crashdump (安装过程有两个对话框提示“kexec-tools” 和“ kdump-tools”配置,都选YES)
A)Select Yes to hook up kexec-tools for all reboots.
B)Yes should be selected here as well, to enable kdump-tools.
如果上面两个对话框没选YES, 可以下面两个命令再手工配置一遍。
sudo dpkg-reconfigure kexec-tools
sudo dpkg-reconfigure kdump-tools
linux-crashdump实际上安装了三个工具,分别是:crash,kexec-tools,以及makedumpfile。
而kdump是Ubuntu 18.04.4系统自带的。“kdump-config show”用于查看 “USE_KDUMP=1”和“KDUMP_SYSCTL=kernel.panic_on_oops=1”
kdump-config show
DUMP_MODE: kdump
USE_KDUMP: 1
KDUMP_SYSCTL: kernel.panic_on_oops=1
KDUMP_COREDIR: /var/crash
crashkernel addr: 0x
/var/lib/kdump/vmlinuz: symbolic link to /boot/vmlinuz-5.3.0-62-generic
kdump initrd:
/var/lib/kdump/initrd.img: symbolic link to /var/lib/kdump/initrd.img-5.3.0-62-generic