临终遗言
方式1:内核直接用printk打印,然后调用kmsg_dump()把printk buffer里的数据传递给注册的dumper,由注册的dumper保存到高端内存或裸写Flash
方式2:Linux Kdump
- 系统内核启动的时候,要给dump-capture kernel预留一块内存空间;// 占用内存空间
- 内核启动完成后,kdump service执行 kexec -p 命令把dump-capture kernel载入预留的内存里;
- 然后,如果系统发生crash,会自动reboot进入dump-capture kernel,dump-capture kernel只使用自己的预留内存,确保其余的内存数据不会被改动,它的任务是把系统内存里的数据写入到dump文件,比如/var/crash/vmcore,为了减小文件的大小,它会通过makedumpfile(8)命令对内存数据进行挑选和压缩;//需要切换,耗时
- dump文件写完之后,dump-capture kernel自动reboot。