You are not logged in.

#1 2016-11-22 22:39:28

l4than-d3vers
Member
Registered: 2011-10-21
Posts: 10

can't kexec with uefi

I do:

# kexec -l /boot/vmlinuz-linux --initrd=/boot/initramfs-linux.img --reuse-cmdline 
# kexec -e

I get:

[  160.576847] kexec_core: Starting new kernel

and then nothing.

This only happens on UEFI systems (physical or virtual KVM/OVMF). On bios systems it works fine. The only other difference on the working bios systems is that they use grub, whereas the uefi just use bootctl with /boot on the EFI system partition.

Has anyone else run into this? I have several ideas on how to investigate further but it might take a while.

Offline

#2 2018-11-12 13:06:06

joanbrugueram
Member
Registered: 2018-11-12
Posts: 21

Re: can't kexec with uefi

Hi,

Necrobump, but I stumbled upon a similar situation (not sure if exactly the same) and spent some time looking for the cause and found a workaround...

Quick summary:

* I have two systems with different hardware, but otherwise configured similarly (similar BIOS settings and a cloned bootloader and Arch Linux setup). Both are booted through UEFI.

* On one of the two systems, kexec from Arch works, in the other, it doesn't, it hangs after "kexec_core: Starting new kernel" (and about 1/15 times, it reboots).

* Strangely, in the system where kexec hangs, it works from an Ubuntu 16.04 LTS install. Not sure why.

* Starting the kernel of the non-working system with "acpi=off" also makes kexec work (but breaks other stuff).

The solution:

* After some searches, I found that on some setups, it is necessary to pass the acpi_rsdp parameter to the kexec'd kernel.

* I'm not sure if this is expected or a bug, because in other sites it says it should no longer be needed in general... maybe it depends on the hardware.

Here's my kexec script, hopefully it helps someone:

#!/bin/env bash
set -e

# Workaround for kexec hanging on some of my computers
# Something related to ACPI (setting acpi=off also fixes the problem)
# https://github.com/coreos/bugs/issues/167
cmdline=$(sudo cat /proc/cmdline)
if [[ $cmdline != *acpi_rsdp=* ]]; then
	cmdline="$cmdline acpi_rsdp=$(sudo grep -m1 ^ACPI /sys/firmware/efi/systab | cut -f2- -d=)"
fi

sudo kexec -l /boot/vmlinuz-linux --initrd=/boot/initramfs-linux.img --append="$cmdline"
sudo systemctl kexec

Last edited by joanbrugueram (2018-11-12 13:08:20)

Offline

#3 2018-11-12 14:17:10

WorMzy
Forum Moderator
From: Scotland
Registered: 2010-06-16
Posts: 10,939
Website

Re: can't kexec with uefi

Thanks for sharing. I don't know if OP is still experiencing this issues, but perhaps it will help them if they are. You might want to check on the wiki and see if this has been discussed there. Add it to the kexec talk page if it isn't, it will be more useful if this information is included somewhere on the wiki.

BTW, there's no need for sudo cat, /proc/cmdline is world-readable.

I'm going to go ahead and close this old topic now.


Sakura:-
Mobo: MSI MAG X570S TORPEDO MAX // Processor: AMD Ryzen 9 5950X @4.9GHz // GFX: AMD Radeon RX 5700 XT // RAM: 32GB (4x 8GB) Corsair DDR4 (@ 3000MHz) // Storage: 1x 3TB HDD, 6x 1TB SSD, 2x 120GB SSD, 1x 275GB M2 SSD

Making lemonade from lemons since 2015.

Offline

Board footer

Powered by FluxBB