Forum Linux.général kexec avec Debian 10 (Buster)

Posté par  . Licence CC By‑SA.
Étiquettes :
0
10
nov.
2019

Bonjour,

J'ai un soucis avec kexec.
Je l'utilise depuis longtemps, mais depuis que Debian est en version 10 il ne fonctionne plus (vu sur plusieurs machines fraîchement installées).

Le script /etc/init.d/kexec-load demande à systemd si la commande reboot a pas été lancée, et systemd répond que non, donc le script ne poursuit pas.
Si on modifie ce script, alors c'est /etc/init.d/kexec décide que si systemd est utilisé, alors c'est à lui de gérer le problème (?!).

Malheureusement le kexec de systemd est pourri : il ne fonctionne qu'en UEFI, et je ne sais plus quelles autres limitations volontaires de la part des développeurs (sérieux les mecs, arrêtez de décider à la place des utilisateurs, ça pose problème dans 101 % des cas).

Je n'ai trouvé que des gens qui mettent en place des contournement, donc ça ne vient pas de mes installations.

Connaissez-vous la « bonne méthode » pour que kexec fonctionne de nouveau, sans avoir à bricoler le système ?

  • # bug du paquet kexec-tools

    Posté par  . Évalué à 3.

    C'est un double bug dans le paquet kexec-tools. Je ne comprends pas puisque tu as vu d'où vient le problème alors tu sais que c'est un bug. Surtout que tu as marqué les détails sur ton wiki!

    Pour info les détails sont que systemd ne reboote plus en kexec si le système n'est pas en UEFI parce que le choix du noyau se fait à partir de l'UEFI, alors que le paquet kexec-tools sait lire la configuration à partir de /boot/grub/grub.conf.
    En plus la ligne de commande du noyau actuellement chargé en mémoire est reprise telle qu'elle donc c'est casse gueule leur système car ça ne fonctionne que si tu as démarré "normalement" et qu'aucune modification de la ligne de commande de boot n'est faite depuis le dernier boot.
    Un bug fait aussi que ça ne reboote pas en kexec sur du RAID. La totale. On peut simplifier en disant que ça marche pas bien du tout.

    Pour que le paquet kexec-tools marche, je recopie le contenu du wiki de Kerro:

    --> /etc/init.d/kexec-load
    #        systemctl list-jobs systemd-kexec.service | grep -q systemd-kexec.service
             systemctl list-jobs --state=active reboot.target | grep -q reboot.target
    
    --> /etc/init.d/kexec
    #       if [ ! -d /run/systemd/system ]; then
                    do_stop
    #       fi
    
    sed  --in-place  --regexp-extended  's/^([[:blank:]]*systemctl list-jobs systemd-kexec.service \| grep -q systemd-kexec.service[[:blank:]]*)$/#\1\n\t\tsystemctl list-jobs --state=active reboot.target | grep -q reboot.target/'  /etc/init.d/kexec-load
    sed  --in-place  --regexp-extended  '/^[[:blank:]]*if \[ ! -d \/run\/systemd\/system ]; then[[:blank:]]*$/,/^[[:blank:]]*fi[[:blank:]]*$/ {s/(^[[:blank:]]*if)/#\1/ ; s/(^[[:blank:]]*fi)/#\1/}'  /etc/init.d/kexec
    

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.