DataWizardess 2025-11-29 07:05 采纳率: 98.9%
浏览 0
已采纳

鲲鹏920 5.4.0-26内核启动失败如何排查?

鲲鹏920服务器在升级或启动Linux 5.4.0-26内核时无法正常启动,卡在UEFI或kernel panic阶段,如何排查?常见原因包括内核镜像损坏、设备树不兼容、initramfs缺失或驱动不支持。需通过串口日志分析启动过程,检查内核配置是否启用鲲鹏平台支持(如huawei,kunpeng),确认boot目录文件完整性,并尝试使用已知正常的内核回滚验证硬件状态。
  • 写回答

1条回答 默认 最新

  • 曲绿意 2025-11-29 09:56
    关注

    鲲鹏920服务器启动Linux 5.4.0-26内核异常排查指南

    1. 故障现象与初步判断

    当鲲鹏920服务器在升级或首次尝试启动Linux 5.4.0-26内核时,若系统卡在UEFI阶段或出现kernel panic,通常表现为串口无输出、停在“Starting kernel...”或崩溃日志中提示无法挂载根文件系统、驱动初始化失败等。

    • 现象一:UEFI阶段停滞,无内核加载信息
    • 现象二:内核解压后立即panic,未进入init进程
    • 现象三:设备树加载失败或匹配不到平台信息
    • 现象四:initramfs未找到或模块缺失导致rootfs挂载失败

    此阶段应优先确认是否为软件层面问题而非硬件故障,建议通过串口连接获取详细引导日志。

    2. 串口日志采集与分析流程

    使用串口调试工具(如minicom、screen)连接BMC或主CPU串口,波特率通常设置为115200。

    
    # 示例:使用screen连接串口
    screen /dev/ttyUSB0 115200
        

    关键观察点包括:

    日志阶段正常表现异常特征
    UEFI Firmware显示内存、PCIe枚举信息卡死、无输出
    GRUB加载列出可用内核项无法读取/boot目录
    Kernel decompression显示“Decompressing Linux...”解压失败或跳转错误地址
    Kernel start打印“Booting Linux on ...”立即panic或无响应
    Device Tree解析.dtb文件并匹配compatible字段“No matching device tree node”

    3. 内核镜像与设备树兼容性检查

    鲲鹏920平台依赖特定的设备树(Device Tree Blob, .dtb),需确保内核编译时包含对应DTS源码,并正确烧录至/boot/或固件中。

    检查当前使用的设备树是否支持huawei,kunpeng标识:

    
    # 查看设备树节点兼容性
    fdtdump /boot/dts/huawei/hip08-d0x.dtb | grep "compatible"
    # 正常输出应包含:
    # compatible = "huawei,kunpeng920", "huawei,hip08";
        

    若未识别到相应节点,则可能因以下原因:

    1. 设备树未随内核更新同步替换
    2. DTS源码未启用KUNPENG_SOC选项
    3. Firmware未传递正确FDT地址给内核

    4. initramfs缺失与重建方法

    Linux 5.4.0-26内核通常依赖initramfs执行早期驱动加载和根文件系统切换。若缺失会导致kernel panic。

    验证/boot/initrd.img-5.4.0-26是否存在且非空:

    
    ls -lh /boot/initrd.img-5.4.0-26
    file /boot/initrd.img-5.4.0-26
    # 若为空或损坏,需重新生成
    mkinitramfs -o /boot/initrd.img-5.4.0-26 5.4.0-26
    update-grub
        

    注意:鲲鹏平台常需添加sgdisk、xfsprogs等工具到initramfs以支持GPT分区与XFS文件系统。

    5. 内核配置核查与平台支持验证

    使用config-5.4.0-26文件检查关键鲲鹏相关配置是否启用:

    
    grep CONFIG_ARCH_KUNPENG config-5.4.0-26
    grep CONFIG_HISILICON config-5.4.0-26
    grep CONFIG_ARM64_ACPI_PARKING_PROTOCOL config-5.4.0-26
        

    必要配置项如下表所示:

    配置项期望值作用说明
    CONFIG_ARCH_KUNPENGy启用鲲鹏架构特有支持
    CONFIG_SMPy多核调度支持
    CONFIG_ARM64_DT_DEBUGm设备树调试信息输出
    CONFIG_PCI_KUNPENGyPCIe控制器驱动
    CONFIG_HISI_DRMm集成显卡支持(可选)

    6. 回滚机制与硬件状态验证

    为排除硬件问题,建议使用已知正常的旧版内核(如5.3.x)进行回滚测试。

    
    # 编辑grub默认启动项
    grub-set-default "Ubuntu, with Linux 5.3.0-xx-generic"
    reboot
        

    若旧内核可正常启动,则证明硬件状态良好,问题集中在新内核适配环节。

    进一步可通过以下流程图定位问题路径:

    graph TD A[服务器上电] --> B{UEFI能否完成?} B -- 否 --> C[检查固件版本/FPGA状态] B -- 是 --> D[GRUB加载内核镜像] D --> E{内核是否解压成功?} E -- 否 --> F[校验vmlinuz完整性/md5sum] E -- 是 --> G[传递设备树并启动内核] G --> H{是否kernel panic?} H -- 是 --> I[检查initramfs/driver支持] H -- 否 --> J[进入用户空间] I --> K[重新构建initrd并注入必要驱动]

    7. 综合解决方案与预防措施

    针对鲲鹏920平台升级Linux 5.4.0-26内核的稳定性问题,推荐实施以下步骤:

    • 确保使用华为官方提供的内核源码分支(如openEuler或LTS定制版)
    • 升级前备份/boot分区及原始dtb文件
    • 在虚拟化环境(如QEMU模拟arm64 + kunpeng CPU model)中预验证内核启动
    • 启用CONFIG_EFI_DISABLE_PCI_DMA以规避某些DMA映射问题
    • 定期更新固件(iBMC、BIOS)至推荐版本
    • 部署自动化脚本监控/boot目录完整性
    • 开启earlyprintk调试参数:earlyprintk=serial,keep
    • 使用kdump收集panic现场用于后续分析
    • 建立多内核共存机制,便于快速切换
    • 加入鲲鹏社区技术论坛跟踪已知bug修复进度

    通过上述系统性排查与加固策略,可显著提升鲲鹏920服务器在新型内核环境下的稳定性和可维护性。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 11月30日
  • 创建了问题 11月29日