zoukankan      html  css  js  c++  java
  • kernel panic如何分析?(包含grub)

    生产内核&捕获内核
    kernel panic如何分析?
    Kdump文档:https://www.kernel.org/doc/Documentation/kdump/kdump.txt

    kdump是一种在系统崩溃(crash)或系统卡住(hang)时的通过转储系统内存的服务,是通过开启第二个内核(捕获内核)
    kdump是一种基于kexec的内核崩溃转储技术。kdump需要两个内核,分别是生产内核和捕获内核,生产内核是捕获内核要服务的对象,
    且保留了内存的一部分给捕获内核启动使用。当系统崩溃时,kdump使用kexec启动捕获内核,以相应的ramdisk一起组建一个微环境,用以对生产内核下的内存进行收集和转存
    系统内核的内存映像保存在重新启动并且可以被转储捕获内核访问
    /etc/kdump.conf #KDUMP服务配置文件
    /proc/vmcore 这会将转储导出为 ELF 格式的文件,您可以
    使用 cp 或 scp 等文件复制命令导出。此外,您可以
    使用 GNU 调试器 (GDB) 和崩溃工具(crash)等分析工具来调试转储文件
    kexec -p #交互式加载捕获内核
    sysctl在系统运行时配置系统内核参数
    内核参数kernel.sysrq=1(配置手动触发)

    grub引导参数:crashkernel=auto (centos7在系统内存小于8G时自动禁用kdump):启用kdump功能并且设置crashkernel捕获内核内存的大小

    NMI Watchdog(另一种触发panic方式)

    当centos7在系统内存小于8G时自动禁用kdump,要手动启动kudmp前配置crashkernel内存步骤:
    1.更改GRUB,到/etc/default/grub更改crashkernel为128M或更大内存;
    2.重新生成grub配置:grub2-mkconfig -o /boot/grub2/grub.cfg
    3.reboot
    参考:https://www.jianshu.com/p/8e031b28d98b

    centos7.8系统的GRUB情况
    官网:https://www.gnu.org/software/grub/index.html

    GRUB引导加载程序是计算机启动时运行的第一个软件程序。
    它负责加载和将控制权转移到操作系统内核软件(如Hurd或 Linux)。内核反过来初始化操作系统的其余部分(例如 GNU)。
    GRUB 是引导装入器 – 它负责装入内核并引导 Linux 系统
    grub2-mkconfig工具
    /etc/default/grub #grub的宏文件
    grub2的默认配置文件为/boot/grub2/grub.cfg
    grub2-mkconfig是根据/etc/default/grub文件来创建配置文件/boot/grub2/grub.cfg的
    引导分为2个阶段(stage)
    /boot/grub2/grub.cfg 系统引导读取的文件
    lrwxrwxrwx. 1 root root 22 5月 24 02:08 /etc/grub2.cfg -> ../boot/grub2/grub.cfg

    MBR(主引导记录)包含三部分:引导程序、磁盘分区表、结束标志
    MBR是磁盘的第一扇区,一扇区512字节,包含从0开始的446字节的引导程序、64字节的分区表、2字节结束标志
    主引导记录是非常重要的一个扇区,其中引导代码用来告诉计算机如何处理分区表,
    如何定位操作系统等;分区表用来管理硬盘的分区情况;标志表明该扇区是一个有效的引导记录扇区
    dd命令备份主引导扇区(前512字节)
    磁盘分区程序:fdisk、parted
    计算机启动过程像是一个接力赛,把不同阶段的控制权交给下一个程序:
    通电----BIOS自检(加电开机检测硬件)--(MBR)引导系统(在MBR中读取grub引导程序)--启动内核--初始化系统
    大概流程:硬件检测阶段----引导程序阶段-----内核阶段-----操作系统阶段
    首先读取/boot (这里有内核),然后到init程序(去设置开机自启的进程)--初始化系统
    grub2引导程序推荐:https://www.cnblogs.com/f-ck-need-u/p/7094693.html
    grub可设置启动内核参数

    IPMI带外口(ipmitool工具)
    【Alt + SysRq(PrtScr) + C】手动触发机器重启,促使捕获内核生成coredump类型的vmcore文件(前提已配置kdump服务)

    假设是一种超能力
  • 相关阅读:
    火狐推荐几个实用的插件
    Ubuntu下安装可视化SVN客户端Rabbitvcs
    thunderbird中如何设置QQ邮箱
    Ubuntu 10.04里安装强大抓图工具Shutter
    cannot start compilation;the output path is not specified for module specify the output path in the project structure dialog
    jrebel+idea 进行热部署配置
    jeecg数据库切换至mysql8.0方式
    com.alibaba.druid.pool.DruidDataSource 使用druid数据源 No supported DataSource type found
    租户的基本信息表
    kettle系列-我的开源kettle调度、管理平台[kettle-manager]介绍
  • 原文地址:https://www.cnblogs.com/Haihong72H/p/14960197.html
Copyright © 2011-2022 走看看