Linux 内核(第一次)启动挂起/停止 - 从不提示登录

Linux 内核(第一次)启动挂起/停止 - 从不提示登录

我使用主线源代码、最新版本和这个配置

我创建了 Bullseye 作为建议者的图像这里

然后我在 QEMU 中运行它(设置相对环境变量):

qemu-system-x86_64  -m 2G   -smp 2  -kernel $KERNEL/arch/x86/boot/bzImage   -append "console=ttyS0 root=/dev/sda earlyprintk=serial net.ifnames=0 noxsave"  -drive file=$IMAGE/bullseye.img,format=raw  -net user,host=10.0.2.10,hostfwd=tcp:127.0.0.1:10021-:22    -net nic,model=e1000    -enable-kvm     -nographic  -pidfile vm.pid     -cpu host   2>&1 | tee vm.log

这是内核日志我有。

问题是有控制台没有登录提示并且控制台似乎被冻结了。因此,启动过程不知何故卡住了。

我尝试通过-s -S向 QEMU 添加选项来附加 GDB,然后gdb vmlinux从 Linux 内核文件夹执行操作,然后我发现它由于某种原因卡在某个地方(注意,一旦它卡在日志末尾,我就给出了 Ctrl-C (SIGINT),其中即使几分钟后也不会出现进一步的输出)。

(gdb) target remote localhost:1234
Remote debugging using localhost:1234
0x000000000000fff0 in cpu_tss_rw ()
(gdb) c
Continuing.
^C
Thread 1 received signal SIGINT, Interrupt.
0xffffffff8d7640ce in ?? ()
(gdb) x/20i $rip-20
   0xffffffff8d7640ba:  nop
   0xffffffff8d7640bb:  nop
   0xffffffff8d7640bc:  nop
   0xffffffff8d7640bd:  nop
   0xffffffff8d7640be:  nop
   0xffffffff8d7640bf:  nop
   0xffffffff8d7640c0:  endbr64 
   0xffffffff8d7640c4:  xchg   %ax,%ax
   0xffffffff8d7640c6:  verw   0x24c1e13(%rip)        # 0xffffffff8fc25ee0
   0xffffffff8d7640cd:  hlt    
=> 0xffffffff8d7640ce:  ret    
   0xffffffff8d7640cf:  int3   
   0xffffffff8d7640d0:  int3   
   0xffffffff8d7640d1:  int3   
   0xffffffff8d7640d2:  int3   
   0xffffffff8d7640d3:  data16 cs nopw 0x0(%rax,%rax,1)
   0xffffffff8d7640de:  data16 cs nopw 0x0(%rax,%rax,1)
   0xffffffff8d7640e9:  data16 cs nopw 0x0(%rax,%rax,1)
   0xffffffff8d7640f4:  data16 cs nopw 0x0(%rax,%rax,1)
   0xffffffff8d7640ff:  nop
(gdb) 

ret 之前的指令hlt表明机器已停止。任何人都知道这里出了什么问题以及如何解决它?

答案1

在启动阶段的早期(当您的发行版的启动屏幕显示时)按“esc”。屏幕底部的模块是您要禁用的模块。

要禁用它,请启动 LiveCD 或将硬盘驱动器连接到另一台计算机。

在驱动器的根目录中,运行

sudo echo blacklist <kernel module> > /etc/modprobe.d/blacklist.conf

这应该是问题的唯一原因。

相关内容