Riavviare il Kernel senza riavviare il sistema in Linux

Riavviare il Kernel senza riavviare il sistema in Linux

Ad ogni aggiornamento del Kernel, è richiesto il riavvio del sistema per applicare le patch e usare la nuova versione.

Se stiamo sul pc di casa, nessun problema; ma se siamo su un server di produzione (e non ne abbiamo uno di backup) rischiamo di dare un disservizio.

Però è fondamentale assicurare l'uso dell'ultima versione.

Una soluzione al problema può arrivare da Kexec.

Kexec-Tool è in grado di caricare in memoria l'intero Kernel e avviare il processo di aggiornamento senza riavviare il sistema.

In certi casi, soprattutto in caso di grossi aggiornamenti, è stata rilevata un pò di instabilità; in quela caso non possiamo far altro che riavviare.

Per installare il programma su Debian e derivate:

# aptitude install kexec-tool

A questo punto aggiornaimo il Kernel con il normale aggiornamento dei repo (se è previsto un aggiornamento ovviamente), e poi lanciamo questo comando:

# latestkernel=`ls -t /boot/vmlinuz-* | sed "s/\/boot\/vmlinuz-//g" | head -n1`

Dopo di che verifichiamo il corretto aggiornamento con:

# echo $latestkernel

Se è tutto ok diamo questi altri comandi:

# kexec -l /boot/vmlinuz-${latestkernel} --initrd=/boot/initramfs-${latestkernel}.img --append="`cat /proc/cmdline`"
# kexec -e
# uname -r

L'ultimo dovrebbe indicarci il Kernel usato; così possiamo controllare che stiamo usando l'ultima versione installata.

Enjoy!