Linux kernel kexec-l则kexec-e将成功进入第二个内核,但kexec-p则会失败并卡住

Linux kernel kexec-l则kexec-e将成功进入第二个内核,但kexec-p则会失败并卡住,linux-kernel,Linux Kernel,正如标题所描述的,kexec-l然后kexec-e将成功进入第二个内核,但当我尝试在笔记本电脑上设置kdump和kexec时,kexec-p然后崩溃并卡住(Linux-will-ThinkPad-L470 4.13.0-rc5#3 SMP抢占Wed Aug 23 16:11:24 CST 2017 x86_64 x86_64 GNU/Linux)。这些命令是: kexec -p /boot/vmlinuz-4.13.0-rc5 --initrd=/boot/initrd.img-4.13.0-r

正如标题所描述的,kexec-l然后kexec-e将成功进入第二个内核,但当我尝试在笔记本电脑上设置kdump和kexec时,kexec-p然后崩溃并卡住(Linux-will-ThinkPad-L470 4.13.0-rc5#3 SMP抢占Wed Aug 23 16:11:24 CST 2017 x86_64 x86_64 GNU/Linux)。这些命令是:

kexec -p /boot/vmlinuz-4.13.0-rc5 --initrd=/boot/initrd.img-4.13.0-rc5 -d --reuse-cmdline
然后,如果我回显c>/proc/sysrq触发器,机器将死机并卡住。 但是kexec-l将会成功

kexec -l /boot/vmlinuz-4.13.0-rc5 --initrd=/boot/initrd.img-4.13.0-rc5 -d --reuse-cmdline --append="will"
kexec -e
然后我将在第二个内核的/proc/cmdline中获得“will”


有人知道这一点吗?

您不需要将
-p
-l
一起使用吗?也就是说,
kexec-p-l/boot/vmlinuz-4.13.0-rc5--initrd=/boot/initrd.img-4.13.0-rc5-d--reuse cmdline--append=“will”;echo c>/proc/sysrq触发器
。对不起,我没有理解你的意思。为什么要同时使用-p和-l?这两个参数用于不同的用途。即使我同时使用它们,结果也应该等于kexec的源代码“-p”。我要离开了
-l(--load)内核
vs
-p(--load panic)
。我可能读错了,但它看起来不像
-p
接受内核参数?根据kexec源代码,“--resuse cmdline”将让kexec读取/proc/cmdline,以获取当前内核命令行参数,作为第二个内核的新参数,“--append”将把它携带的参数添加到新的命令行参数中,最重要的是,kexec-p将在新的内核命令行参数中添加一个新的内核命令行参数“elfcorehdr”,它指示第二个要导出/proc/vmcore的内核。我想说的是,当您执行
kexec-p/boot/vmlinuz-4.13.0-rc5[…]时,看起来并不是在实际加载内核。您确定
kexec-l/boot/vmlinuz-4.13.0-rc5-p[…]不起作用吗?