Vogliamo rigenerare initramfs e vmlinuz per il kernel di salvataggio nel nostro sistema CentOS/RHEL 7. Come è possibile farlo utilizzando il kernel corrente da cui viene avviato il sistema?
Durante il processo di avvio, quando l'immagine del kernel e l'immagine initramfs vengono caricate, initramfs avvia il primo processo sul sistema, che è systemd con l'ID processo 1. Questo processo systemd assume inoltre il controllo nelle fasi finali dell'avvio del sistema ed esegue il seguenti operazioni:
- Legge i file di configurazione da /etc/systemd/ directory
- Legge i file collegati da /etc/systemd/system/default.target
- Esegue /etc/rc.local file
Segui i passaggi seguenti per rigenerare initramfs e vmlinuz per il kernel di ripristino dal kernel corrente.
1. Esamina i file esistenti per il kernel di ripristino:
# cd /boot # ll | grep rescue -rw-------. 1 root root 72166662 Apr 6 21:37 initramfs-0-rescue-a0eaa652c599455aa125077a4167f435.img <<----Apr 6 -rwxr-xr-x. 1 root root 5925632 Apr 6 21:37 vmlinuz-0-rescue-a0eaa652c599455aa125077a4167f435 <<----Apr 6
2. Sposta i file esistenti in una directory diversa (ad esempio '/tmp'):
# mv initramfs-0-rescue-a0eaa652c599455aa125077a4167f435.img /tmp/initramfs-0-rescue-a0eaa652c599455aa125077a4167f435.img.bk # mv vmlinuz-0-rescue-a0eaa652c599455aa125077a4167f435 /tmp/vmlinuz-0-rescue-a0eaa652c599455aa125077a4167f435.bk
Verificare che non siano presenti file per il kernel di ripristino nella directory /boot:
# ll | grep rescue #
3. Rigenera i nuovi initramfs e vmlinuz per il kernel di ripristino con il kernel corrente.
# /etc/kernel/postinst.d/51-dracut-rescue-postinst.sh $(uname -r) /boot/vmlinuz-$(uname -r)
Verifica
Al termine del comando precedente, i due nuovi file per il kernel di ripristino dovrebbero essere mostrati come di seguito:
# ll | grep rescue -rw-------. 1 root root 72164785 May 4 00:18 initramfs-0-rescue-a0eaa652c599455aa125077a4167f435.img <<----May 4 -rwxr-xr-x. 1 root root 5925632 May 4 00:18 vmlinuz-0-rescue-a0eaa652c599455aa125077a4167f435 <<----May 4