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

Se il kernel Linux è danneggiato, vari segnali possono indicare che qualcosa non funziona correttamente nel sistema. Presta attenzione ai seguenti indizi per riuscire a 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 loop di avvio, arrestarsi con messaggi di errore o non avviarsi affatto.

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

Dmesg e 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 possono essere caricati tutti i moduli o se vengono visualizzati messaggi di errore:

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

 

Incoerenze nella funzionalità: se alcune funzioni di 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 più vecchio, 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.
  • Clicca su Azioni > Apri la console remota.
    La console remota si apre in una nuova scheda.
  • Ritorna subito al Cloud Panel  e fai clic su Azioni > Riavvia. La connessione alla console viene interrotta durante il riavvio.
  • Passa 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 cima all'elenco. Seleziona il secondo kernel più recente e premi Invio. Se questo kernel funziona in modo corretto, il server si avvierà normalmente e verrà visualizzata la finestra di login.
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, immetti 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 e linux-image-5.15.0-97-generic è il 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 di stato indica che la configurazione è fallita.
  • Per risolvere il problema, reinstalla il kernel corrispondente. Per farlo, immetti il seguente comando dopo aver sostituito 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. A tale scopo, procedi come segue:

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:

  • Verifica quali kernel sono attualmente installati sul tuo server digitando il seguente comando:

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

  • Per controllare 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, inserisci 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 del kernel sia stato installato correttamente.

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

  • Per riavviare il server, digita il seguente comando:

    [root@localhost ~]# reboot