Como usar o kexec no Ubuntu Bionic com o GRUB-EFI

1

Desde a atualização para o Ubuntu 18.04, o Bionic kexec parou de funcionar no meu laptop. O Ubuntu é instalado no modo UEFI com o GRUB como o bootloader, dual boot do Windows. O sistema é totalmente criptografado, incluindo a partição de inicialização.

Eu tenho o kexec-tools instalado e incluí o seguinte serviço:

[Unit]
DefaultDependencies=no
Requires=sysinit.target
After=sysinit.target

[Service]
Type=oneshot
ExecStart=-/bin/true
RemainAfterExit=yes
ExecStop=/usr/local/bin/load-kexec.sh

[Install]
WantedBy=basic.target

e este script para fazer a reinicialização do kexec:

#!/bin/sh
INITRAMFS="/initrd.img";
KERNEL="/vmlinuz";

if [ "$(cat /sys/kernel/kexec_loaded)" != "1" ]; then
  echo "Load kernel ($KERNEL) and initramfs ($INITRAMFS) for kexec";
  kexec -l "$KERNEL" --initrd="$INITRAMFS" --reuse-cmdline;
else
  echo "Already loaded some kexec, not modifying";
fi;

No entanto, a execução de sudo systemctl kexec fornece esta mensagem de erro:

Failed to open "/boot/efi/loader/loader.conf": Datei oder Verzeichnis nicht gefunden
Failed to read boot config from "/boot/efi/loader/loader.conf": Datei oder Verzeichnis nicht gefunden
Failed to load bootspec config from "/boot/efi/loader": Datei oder Verzeichnis nicht gefunden

Está certo sobre o fato de que este arquivo de configuração não existe, mas eu não precisei criá-lo no Ubuntu 16.04, onde o kexec funcionava perfeitamente.

Alguém pode explicar o que mudou na atualização e como fazer com que o kexec funcione novamente?

    
por RenWal 18.05.2018 / 13:24

1 resposta

0

Datei Verzeichnis nicht gefunden

Em inglês, isso significa: "Arquivo ou diretório não encontrado"

Olhando para loader.conf - Arquivo de configuração para sd-boot ele diz:

sd-boot(7) will read /loader/loader.conf and any files with the ".conf" extension under /loader/loader.conf.d/ on the EFI system partition (ESP).

Apesar de não ter tempo para testar kexec esta noite, você deve conseguir corrigir o erro com o comando:

sudo mkdir -p /boot/efi/loader/loader.conf.d/

Nenhuma entrada é adequada como padrão, recusando-se a adivinhar

A mensagem de erro inicial dizia que não havia arquivo ou diretório. Eu estava esperando criar um diretório faria isso feliz. Aqui está um arquivo padrão loader.conf :

# Example kexec-loader configuration file
# Read the documentation for more information.
#

# Number of seconds to wait before booting the default menu entry.
#
# timeout 5

# Explicitly enable/disable GRUB autodetection. Autodetection will be enabled
# by default, but only if no boot targets are specified in this file.
#
# grub-autodetect on
# grub-autodetect off

# Force GRUB path. Setting this will disable autodetection.
#
# grub-path (hda1)/boot/grub

# Map GRUB disks/partitions
# This overrides any mappings in device.map
#
# grub-map hd0 sda
# grub-map hd1,a hda8

# Example boot target
#
# title Generic Linux System
# root hda1
# kernel /boot/vmlinuz
# cmdline root=/dev/hda1 ro
# initrd /boot/initrd.gz 
    
por WinEunuuchs2Unix 19.05.2018 / 02:58