Se non riesci a migrare il tuo server anche hai installato il kernel più recente, è possibile che questo sia danneggiato. Ciò può accadere, ad esempio, se la partizione di avvio del server aveva meno di 100 MB di spazio libero prima della migrazione. Oltre a ciò, potrebbero esserci anche altre ragioni.

Se il kernel Linux è danneggiato, vari segnali possono indicare che qualcosa non funziona correttamente nel sistema. Puoi prestare attenzione ai seguenti indizi e utilizzare i metodi qui indicati per riconoscere se il kernel è danneggiato:

Problemi di avvio: il segnale più evidente di un kernel danneggiato sono i problemi di avvio. Il sistema potrebbe bloccarsi in un ciclo di avvio, arrestarsi con messaggi di errore o non avviarsi affatto.

Arresti anomali del sistema e messaggi di errore: se il tuo sistema Linux si blocca frequentemente o si verificano kernel panic inaspettati, ciò potrebbe essere indicativo di un kernel danneggiato. Spesso, i kernel panic sono accompagnati da un messaggio di errore su una schermata blu o nera.

Dmesg e i log di sistema: controlla i log, in particolare l'output di dmesg subito dopo l'avvio. dmesg fornisce messaggi relativi al kernel che possono essere utili per identificare errori o problemi specifici.

root@localhost:~# dmesg | less


Puoi anche utilizzare journalctl per controllare i log di sistema:

root@localhost:~# journalctl -xb


Moduli difettosi: un altro possibile indizio di un kernel danneggiato è rappresentato dai problemi con i moduli del kernel. Controlla se tutti i moduli possono essere caricati o se vengono visualizzati messaggi di errore:

root@localhost:~# lsmod 
root@localhost:~# modprobe yourmodulename


Incoerenze nella funzionalità: se alcune funzioni relative al sistema (come le operazioni di rete, l'accesso al file system, le interazioni hardware, ecc.) risultano inaffidabili o si verificano errori inspiegabili, ciò potrebbe indicare problemi con il kernel.

Eseguire l'avvio da un kernel più vecchio e riparare l'ultima versione del kernel

Se sul tuo server è installato un kernel obsoleto, puoi avviare il server con uno di questi kernel ed eseguire la risoluzione dei problemi.

  • Accedi al tuo account IONOS.
  • Fai clic su Menu > Server & Cloud nella barra del titolo. Se disponi di più contratti, seleziona quello desiderato.
  • Fai clic su Azioni > Apri console remota.
    La console remota si apre in una nuova scheda.

  • Passa subito al Cloud Panel e fai clic su Azioni > Riavvia.
    La connessione alla console viene interrotta durante il riavvio.

  • Passa nuovamente alla console remota.

  • Fai clic su Options > Reconnect nell'angolo in alto a destra finché non viene visualizzato il seguente messaggio: 

  • Premi subito il tasto ESC e tienilo premuto finché non appare la seguente finestra:
  • Seleziona Advanced options for Ubuntu e premi Invio.
  • Viene visualizzato un elenco dei kernel disponibili con il kernel più recente posizionato in alto. Seleziona il secondo kernel più recente e premi Invio. Se questo kernel funziona, il server si avvierà normalmente e verrà visualizzato il prompt di accesso.
Nota bene

Non selezionare un kernel in Recovery Mode. 

  • Inserisci i tuoi dati di accesso.
  • Per verificare se hai avviato il server da un kernel più vecchio, inserisci il seguente comando: 

    [root@localhost ~]# uname -r

Eseguire il backup dei dati del server

Effettua il backup dei dati del tuo server prima di riparare il kernel. Per farlo, puoi utilizzare il servizio a pagamento Cloud Backup o salvare i dati sul tuo computer locale con Filezilla.

Per ulteriori informazioni su Cloud Backup, consulta il seguente articolo:

Cloud Backup: primi passi

Riparare il kernel

  • Usa il seguente comando per verificare quali kernel sono attualmente installati sul tuo server:

    [root@localhost ~]# dpkg --list | grep linux-image

    Esempio:

    root@server:~# dpkg --list | grep linux-image
    rc linux-image-5.15.0-105-generic 5.15.0-105.115 amd64 Signed kernel image generic
    ii linux-image-5.15.0-106-generic 5.15.0-106.116 amd64 Signed kernel image generic
    iF linux-image-5.15.0-107-generic 5.15.0-107.117 amd64 Signed kernel image generic
    ii linux-image-5.15.0-97-generic 5.15.0-97.107 amd64 Signed kernel image generic
    rc linux-image-unsigned-5.15.0-107-generic 5.15.0-107.117 amd64 Linux kernel image for version 5.15.0 on 64 bit x86 SMP
    root@server:~#

    In questo esempio, linux-image-5.15.0-107-generic è l'ultimo kernel installato, mentre linux-image-5.15.0-97-generic è il kernel più vecchio. Lo stato di un kernel è indicato dai codici di stato del pacchetto:

Codice di stato del pacchetto Significato
ii Installato e configurato correttamente
iU Installato, ma non configurato
iF Installato, ma configurazione fallita
iW Installato, ma in attesa di qualcosa (poco frequente)
rc Rimosso, ma i file di configurazione sono ancora presenti
Nota bene

Per i kernel rimossi che hanno ancora dei file di configurazione (rc), i file di configurazione possono essere eliminati con il seguente comando:

apt-get purge $(dpkg -l | grep '^rc' | awk '{print $2}')

  • In questo esempio, il kernel linux-image-5.15.0-107 ha il codice di stato IF. Questo codice indica che la configurazione è fallita.
  • Per risolvere il problema, reinstalla il kernel corrispondente. Per farlo, immetti il seguente comando sostituendo il segnaposto.

    [root@localhost ~]# apt-get install --reinstall IMAGE NAME

    Esempio:

    [root@localhost ~]# apt-get install --reinstall linux-image-5.15.0-107-generic

  • Per verificare se la reinstallazione è avvenuta con successo, digita il seguente comando:

    [root@localhost ~]# dpkg --list | grep linux-image
    rc linux-image-5.15.0-105-generic 5.15.0-105.115 amd64 Signed kernel image generic
    ii linux-image-5.15.0-106-generic 5.15.0-106.116 amd64 Signed kernel image generic
    ii linux-image-5.15.0-107-generic 5.15.0-107.117 amd64 Signed kernel image generic
    ii linux-image-5.15.0-97-generic 5.15.0-97.107 amd64 Signed kernel image generic
    rc linux-image-unsigned-5.15.0-107-generic 5.15.0-107.117 amd64 Linux kernel image for version 5.15.0 on 64 bit x86 SMP
    root@server:/#

    Il kernel Linux-image-5.15.0-107-generic mostra ora il codice di stato del pacchetto ii, il che significa che è installato e configurato correttamente. Per completare il processo, riavvia il server. Il kernel più recente verrà caricato automaticamente.

  • Per terminare il processo, riavvia il server.

    [root@localhost ~]# reboot

Riparare il kernel se non c'è spazio sufficiente nella partizione di avvio

Se non c'è spazio sufficiente nella partizione di avvio, non sarà possibile reinstallare il kernel con il metodo sopra descritto. In questo caso, verranno visualizzate le seguenti informazioni:

[root@localhost ~]# apt-get install --reinstall linux-image-5.15.0-107-generic 
Reading package lists... Done
Building dependency tree... Done 
Reading state information... Done
The following packages were automatically installed and are no longer required:
amd64-microcode libdbus-glib-1-2 libevdev2 libimobiledevice6 libplist3 
libupower-glib3 libusbmuxd6 linux-headers-generic thermald upower usbmuxd
Use 'apt autoremove' to remove them.
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 2 not upgraded. 
Need to get 0 B/11.5 MB of archives. 
After this operation, 0 B of additional disk space will be used.
(Reading database ... 203704 files and directories currently installed.)
Preparing to unpack 
.../linux-image-5.15.0-107-generic_5.15.0-107.117_amd64.deb …
Unpacking linux-image-5.15.0-107-generic (5.15.0-107.117) over 
(5.15.0-107.117) …
dpkg: error processing archive 
/var/cache/apt/archives/linux-image-5.15.0-107-generic_5.15.0-107.117_amd64
.deb (--unpack):
cannot copy extracted data for './boot/vmlinuz-5.15.0-107-generic' to 
'/boot/vmlinuz-5.15.0-107-generic.dpkg-new': failed to write (No space left 
on device)
No apport report written because the error message indicates a disk full 
error
dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)
Errors were encountered while processing:
/var/cache/apt/archives/linux-image-5.15.0-107-generic_5.15.0-107.117_amd64
.deb
needrestart is being skipped since dpkg has failed
E: Sub-process /usr/bin/dpkg returned an error code (1)
root@server:/#


Per risolvere questo problema, è necessario liberare spazio. Procedi come segue:

  • Digita il seguente comando per visualizzare le informazioni sulla memoria utilizzata.

    [root@localhost ~]# df -h

  • Quindi libera lo spazio di memoria. Le istruzioni per farlo sono riportate nel seguente articolo: 
    Liberare spazio su un Server Cloud 

Installare manualmente il kernel se la nuova installazione fallisce

Se la reinstallazione del kernel non riesce per un motivo diverso dalla mancanza di spazio sulla partizione di avvio, puoi provare a rimuovere e reinstallare manualmente il kernel.

Importante

Non rimuovere mai il kernel attualmente in uso perché ciò potrebbe causare gravi errori sul tuo server. Utilizza sempre il comando uname -r per verificare quale kernel stai utilizzando.

Per rimuovere e quindi reinstallare il kernel, procedi come segue:

  • Utilizza il seguente comando per verificare quali kernel sono attualmente installati sul tuo server:

    [root@localhost ~]# dpkg --list | grep linux-image

  • Per verificare quale kernel stai utilizzando, immetti il seguente comando:

    [root@localhost ~]# uname -r

  • Per rimuovere il pacchetto del kernel linux-image-5.15.0-107-generic -, digita il seguente comando:

    [root@localhost ~]# apt-get purge linux-image-5.15.0-107-generic

  • Per verificare se il pacchetto del kernel è stato rimosso, digita il seguente comando:

    [root@localhost ~]# dpkg --list | grep linux-image

  • Per reinstallare il kernel, inserisci il seguente comando sostituendo il segnaposto:

    [root@localhost ~]# apt install --install-recommends kernel-VERSION

    Esempio:

    [root@localhost ~]# apt install --install-recommends linux-image-5.15.0-107-generic

  • Verifica che il pacchetto kernel sia stato installato correttamente:

    [root@localhost ~]# dpkg --list | grep linux-image

  • Per riavviare il server, digita il seguente comando:

    [root@localhost ~]# reboot