Eu não acho que seja uma boa idéia reutilizar os argumentos atuais da linha de comando como você tem agora. Eu recomendo verificar a configuração do GRUB, assumindo que você tenha o GRUB configurado. O comando grubby
pode obter as informações necessárias. O formato de saída exato de grubby --info
é um pouco inconsistente, mas é suficiente para ser utilizável.
# cat /usr/local/bin/kexec-load
#!/bin/sh
set -eu
index=$(grubby --default-index)
grubby --info="$index" | {
IFS==
while read field value
do
case $value in
\"*\")
eval "$field=$value" ;;
*)
eval "$field=\$value" ;;
esac
done
unset IFS
set -x
kexec -l --initrd="$initrd" --append="root=$root $args" -- "$kernel"
}
Isto não usa o último kernel disponível, ele usa qualquer um que esteja configurado no Grub como o kernel a ser usado por padrão. Você já tem código para determinar o último kernel instalado, e você pode facilmente alterar o --info="$index"
para --info=$latestkernel
se é isso que você deseja usar.