x86_64上的内核在升级 Binutils 和 GCC 后无法启动



我无法在控制台上看到任何日志(甚至看不到"解压缩Linux..."消息)。

我在内核配置
  1. 下启用了任何早期启动打印,至少我知道(请参阅下面的内核配置)
  2. 尝试使用 KDB 停止内核 - 通过在 grub 中的内核命令行参数末尾添加 kgdbwait
  3. 我尝试从 grub 手动启动内核
  4. 我试图在函数中添加panic()或日志:asmlinkage void __init start_kernel(void) (init/main.c)
  5. 添加/更改/删除日志级别=详细内核命令行参数(在 GRUB 中)
  6. 从内核命令行参数中删除">quiet"(在 GRUB 中)
  7. 崩溃内核添加到内核命令行参数(在 GRUB 中)

我的问题:

1)我还可以做其他事情来获取早期启动日志吗?

2)我需要添加任何其他代码到内核调试中吗?

3)有没有其他方法来调试它?

二进制:2.26.1 binutils-2.26.1-1.fc25.src.rpm

GCC:6.4.1 GCC-6.4.1-1.fc25.src.rpm

内核:3.10.0-514.21.1

GRUB 配置

default=0
timeout=3
serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=34 serial console
title XIV-System
root (hd0,0)
kernel /boot/vmlinuz init=/system/my_init console=tty0 mce=0 i8042.noaux idle=poll scsi_mod.inq_timeout=2 selinux=0 nohpet console=ttyS0,115200 earlyprintk=ttyS0,115200 kgdboc=ttyS0,115200 ro crashkernel=auto 

内核配置

- For verbos boot message
CONFIG_X86_VERBOSE_BOOTUP=y
- For early printk
CONFIG_EARLY_PRINTK=y
CONFIG_EARLY_PRINTK_DBGP=y
- For KGDB
CONFIG_KGDB_LOW_LEVEL_TRAP=y
CONFIG_KGDB_KDB=y
CONFIG_SERIAL_KGDB_NMI=y
CONFIG_HAVE_ARCH_KGDB=y
CONFIG_KGDB=y
CONFIG_KGDB_SERIAL_CONSOLE=y
CONFIG_KGDB_TESTS=y
- For KDB
CONFIG_KDB_KEYBOARD=y
CONFIG_KDB_CONTINUE_CATASTROPHIC=0

只有在使用 gdb 调试内核(早期启动阶段)后,我才设法解决问题,基本上我发现内核在以下位置失败:

(gdb) bt
#0  early_idt_handler () at arch/x86/kernel/head_64.S:407
#1  0xffff9fffffffffff in ?? ()
#2  0xffffff07ffffffff in ?? ()
#3  0xffffe0ffffffffff in ?? ()
#4  0x00000e0000000000 in ?? ()
#5  0xffffffff81bee8a0 in ?? ()
#6  0xffff880000014560 in ?? ()
#7  0xffffffff819c0120 in early_idt_handler () at arch/x86/kernel/head_64.S:374
#8  0x0000000000000400 in irq_stack_union ()
#9  0xffffffff81bee8a0 in ?? ()
#10 0x000000000000000f in irq_stack_union ()
#11 0x0000000000000000 in ?? ()

从他们那里,我查看了内核源代码树(与 head_64.S 相关的补丁)并应用了它。 您可以找到该补丁,它与以下内容相关:

commit 5f020130d5360e8266e369dc2b5f4e32ec5b05f4 (HEAD -> my_commit)
Author: Andy Lutomirski <luto@kernel.org>
Date:   Fri May 22 16:15:47 2015 -0700

相关内容

  • 没有找到相关文章