在客户设备中看到多个 rcu_sched 停顿消息,并且它崩溃/挂起。在这种情况下,无法通过 SSH 或 3G 访问设备。内核版本为 3.2.54。“rcu_sched 检测到 CPU 0 上的停顿”重复多次,这表明什么?该设备在电源循环测试期间表现出这种崩溃。acpower_isr()/poe_isr() 用于在每次切换期间更新交流电源状态/PoE 状态。这会导致问题吗?(无法解除锁定?)
Backtrace:
[<c4011504>] (dump_backtrace+0x0/0x110) from [<c43924bc>] (dump_stack+0x18/0x1c)
r6:c962e080 r5:c96462e0 r4:c9ec4674 r3:c96429bc
[<c43924a4>] (dump_stack+0x0/0x1c) from [<c4082188>] (__rcu_pending+0x88/0x38c)
[<c4082100>] (__rcu_pending+0x0/0x38c) from [<c4083218>] (rcu_check_callbacks+0xe8/0x17c)
[<c4083130>] (rcu_check_callbacks+0x0/0x17c) from [<c4043ac4>] (update_process_times+0x40/0x64)
r8:23339c9a r7:00000000 r6:c6f06ae0 r5:00000000 r4:c8ac8000
r3:00010000
[<c4043a84>] (update_process_times+0x0/0x64) from [<c406513c>] (tick_sched_timer+0x9c/0xdc)
r7:c9ec44a0 r6:c8ac9dd8 r5:c8ac8000 r4:c9ec4598
[<c40650a0>] (tick_sched_timer+0x0/0xdc) from [<c405805c>] (__run_hrtimer+0xf4/0x1c8)
r9:c8ac9d20 r8:23339580 r6:c9ec44d8 r5:c9ec44a0 r4:c9ec4598
[<c4057f68>] (__run_hrtimer+0x0/0x1c8) from [<c4058db4>] (hrtimer_interrupt+0x124/0x288)
[<c4058c90>] (hrtimer_interrupt+0x0/0x288) from [<c40139e0>] (twd_handler+0x28/0x30)
[<c40139b8>] (twd_handler+0x0/0x30) from [<c407f880>] (handle_percpu_devid_irq+0xd0/0x150)
r4:0000001d …Run Code Online (Sandbox Code Playgroud) 我用 MSI B450 Tomahawk 替换了我的 Gigabyte GA-Z170M-D3H。
我用 AMD Ryzen 5 替换了我的 Intel Core i7-6700。
我在 SSD 上安装了 Debian 9.x。我忘记了操作系统的确切版本号。
我在另一个 SSD 上也有 Windows 10。
安装新部件后启动计算机时,弹出 GRUB 菜单。当我选择 Windows 10 时,操作系统检测到新部件并无错误地进行调整。
但是当我选择 Debian 时,我收到一条关于循环的消息并最终遇到内核恐慌。
0
4.423328] Call Trace:
4.423391] <IRQ> [ 4.423451] [<ffffffff9bae0916>] ? rcu_process_callbac
+0x1e6/0x5b0
4.423582] [<ffffffff9c0186ba>] ? __do_softirq+0x10a/0x29e
4.423654] [<ffffffff9ba7eefe>] ? irq_exit+0xae/0xb0
4.423724] [<ffffffff9c018184>] ? smp_apic_timer_interrupt+0x44/0x50
4.423724] [<ffffffff9c016a76>] ? apic_timer_interrupt+0x96/0xa0
4.423876] <EOI> [ 4.423935] [<ffffffff9bed7182>] ? cpuidle_enter_state
xa2/0x2d0
4.424065] [<ffffffff9bed7170>] ? cpuidle_enter_state+0x90/0x2d0
4.424138] [<ffffffff9babbd24>] ? cpu_startup_entry+0x154/0x240
4.424210] [<ffffffff9ba48bb0>] …Run Code Online (Sandbox Code Playgroud) 更新 2019-05-21 19:37 EST:我的主板使用最新的 BIOS,发布于 2019-03-06,但仍然存在下述安装问题。
更新:我将 Arch ISO 刻录到 CD,然后尝试从它启动,无论是 UEFI 还是旧版。相同类型的结果:
原始问题:我曾经dd将这个 Arch ISO(版本 2019.05.02)放在 U 盘上,然后尝试在我的台式计算机上从它启动。当 Arch 菜单出现时,我选择“Boot Arch Linux (x86_64)”。但是接下来是一堆错误信息,然后进程就挂在那里什么也不做。这是一张照片:
消息以“AMD-Vi:完成-等待循环超时”开头
这些消息包括“内核恐慌”。
我的主板是带有 Ryzen 5 2600 CPU 的 MSI B450 Tomahawk。我试过通过 UEFI 和旧版启动,结果相同。
如何安装 Arch Linux?
我拥有 8GB RAM Dell XPS13 9343;RAM的数量是这台电脑最大的痛点,它焊接在主板上。尽管 CPU 支持更多 RAM,但由于主板设计,即使通过固件修改重新焊接更大的内存也不是一种选择。所以为了让这台电脑仍然有用,我用更快的 M.2 NVMe 替换了 M.2 SATA 磁盘,并添加了两个额外的交换文件。
我的互联网浏览标准配置是 8GM RAM + 8GM 交换分区,而按需我有两个额外的交换文件驻留在 ext4/(root) 上。这给了我总共 32GB 的交换空间。还值得一提的是,包括所有交换在内的所有文件系统都驻留在加密的 LUKS + LVM 上。这是故意的,因为我不希望在计算机关闭时暴露我的 RAM。
这种设置通常有效;当我启用大量内存占用(通常是基于 Java + 浏览器的内容,偶尔是单个虚拟机)时,我只打开两个交换文件,在启动所有需要的应用程序后,总负载不超过 20% CPU 和总磁盘我/O 不超过 20M/s。
现在问题部分:整个解决方案偶尔 - 每周一次,当我每周使用内存密集型任务几次时变得不稳定/不可靠。有时它会重新启动 - 不确定是否是某些硬件问题的内核恐慌,但图形卡缓冲区损坏不到一秒钟,然后计算机重新启动。由于戴尔的固件,我无法使用 kdump-tools 来调试内核崩溃,我的 UEFI 无法识别 NVMe 磁盘,我只需要在引导阶段将 rEFInd 放在 USB 上。第二个问题是,偶尔当 CPU 负载增加并且我在后台播放音乐时,它会随着我的 X11 开始卡顿。
虽然有些部分是预期的,因为这不是不错的硬件,但我担心这种负载会影响音频缓冲区,因此我正在寻找一种方法来使其更稳定。恕我直言,负载应该只影响用户空间应用程序,而不会产生那些系统范围的问题。
我在它上面使用 Ubuntu,我知道存在一个低延迟内核,但想知道我是否可以先测试一些可以在运行时来回切换的更轻量级的解决方案。喜欢与文件描述符数量或通过 cgroups 分配一些优先级相关的事情吗?
我正在尝试安装 Ubuntu 服务器,但它总是在更新 grub 的最后阶段卡住。我取消了这个过程并重新启动了我的系统,它把我带到了 grub 命令提示符grub>。
我尝试从提示手动启动:
root=(hd1,gpt5) # Ubuntu root partition
linux /boot/vmlinuz-something- root=/dev/sda5
initrd /boot/initramfs-something-
boot
<enter>
Run Code Online (Sandbox Code Playgroud)
滚动一些启动消息后,它让我陷入
Busybox v1.27.2 (Ubuntu 1:1.27.2-2ubuntu3) built-in. shell (ash)
Run Code Online (Sandbox Code Playgroud)
随着initramfs>提示。从这里我做了一个exit
它向我展示了内核恐慌!有以下两个提示。
mount: mounting/says on /root/says failed : No such file or directory
mount: mounting /process on /root/process failed: No such file or directory
Run Code Online (Sandbox Code Playgroud) 我一直/proc/sys/kernel/panic设置为0. 查看kernel.org中此选项的描述,我们可以看到:
恐慌:
此文件中的值表示内核在出现紧急情况时重新启动之前等待的秒数。使用软件看门狗时,推荐设置为60。
从这里可以得出结论,0重启前等待 0 秒 - 立即重启。
但procMAN 页面声明如下:
/proc/sys/kernel/panic
该文件提供对内核变量 panic_timeout 的读/写访问。如果这是零,内核将在恐慌中循环;如果非零,则表示内核应该自动执行?在此秒数后启动。当您使用软件看门狗设备驱动程序时,建议设置为 60。
这里的0意思是对映的东西 - 永远不要重启。
那么为什么这样一个值得信赖的来源会提供如此误导性的信息呢?或者 MAN 页面可能不准确?
PS 只是从一panic_on_oops节中的提示(如果你碰巧读到这个)你可以猜到 MAN 页面是正确的。或者,如果您在技术上足够熟练,可以研究内核源代码中的某些内容。
鉴于内核堆栈的固定大小有限,我的猜测是,虽然理论上我们可能有一个递归函数,如果它的递归不会太深,实用主义会建议一起取消递归函数,以便更安全。毕竟,太多的递归会导致擦除 *thread_info_t* 结构并导致内核恐慌
我正在尝试按照此指南xubuntu在 USB 闪存驱动器上安装。我正在运行的命令是
qemu-system-x86_64 -drive file=/dev/sdc,media=disk,index=0,format=raw -cdrom ./xubuntu-15.10-desktop-amd64.iso -boot menu=on
Run Code Online (Sandbox Code Playgroud)
/dev/sdc我的 USB 驱动器格式化为ext4. 它开始从 启动xubuntu*.iso,我可以看到这个屏幕

但后来我遇到了内核恐慌
不过,我能够使用 启动此映像virtualbox。它要挂载哪个分区?这一定和没有关系/dev/sdc吧?我究竟做错了什么?有什么线索吗?
我使用以下命令创建了一个图像文件:
dd if=/dev/zero of=linux.img bs=16M count=1024
cfdisk linux.img
mkfs.ext4 linux.img
Run Code Online (Sandbox Code Playgroud)
并按照《Linux From Scratch 11.3》一书的说明安装了 Linux 系统。我可以通过 chroot 访问该系统,但是当我尝试使用以下命令运行它时:
qemu-system-x86_64 -hda linux.img -vga std -m 4G
Run Code Online (Sandbox Code Playgroud)
系统的初始化被该问题标题中描述的错误中断。我的文件/boot/grub/grub.cfg如下所示:
# Begin /boot/grub/grub.cfg
set default=0
set timeout=5
insmod ext4
#set root=(hd0,2)
menuentry "GNU/Linux, Linux 6.1.11-lfs-11.3" {
linux /boot/vmlinuz-6.1.11-lfs-11.3 root=/dev/hda1 ro
Run Code Online (Sandbox Code Playgroud)
我尝试过的:
在 grub 启动屏幕后取消注释set root=(hd0,2)' and trying the values hd0,0 orhd0,1 hd0,X not found` 行。(the system not even initialize with this, and I got the error
将菜单项选项中以 linux 开头的行中的根值更改为 …