Linux - Come risolvere un kernel panic - Prima procedura

Se appare la scritta seguente dopo un aggiornamento del kernel:

error: cannot read the Linux header.
error: you need to load the kernel first.

  Failed to boot both default and fallback entries.

Press any key to continue...
 
Per risolvere è sufficiente:
 
1. Utilizzare un Cd Live /Chiavetta USB Liniux(possibilemnte recente)
 
2. Una volta che la distribuzione live si è avviata, aprire un terminale.
 
3. diventate root (di solito un  sudo -i è sufficiente).

Controllare anche la connessione internet, potrebbe servire.
 

Individuare la vostra partizione dove risiede la / e se la utilizzate la /boot.
 
4. Per vedere la situazione delle partizioni utilizzate:


fdisk -l
 

Ecco una dir di esempio

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        2292    18408568+   7  HPFS/NTFS
/dev/sda2            2292        2658     2940840    c  W95 FAT32 (LBA)
/dev/sda3            2658        4864    17720609    f  W95 Ext'd (LBA)
/dev/sda5            2658        2667       68008+  83  Linux
/dev/sda6            2667        2730      506488+  82  Linux swap / Solaris
/dev/sda7            2731        4864    17141323+  83  Linux

In base alla dimensione delle partizioni si può dedurre che:


/dev/sda5= /boot
/dev/sda6= swap
/dev/sda7= /


5. Per montarle:


mkdir /mnt/oldlinux/
mount /dev/sda7 /mnt/oldlinux/
mount /dev/sda5  /mnt/oldlinux/boot
 

6. Se si montano senza problemi vuol dire che non ci sono problemi al file system, spostarsi nelle cartelle per vedere se ci sono problemi particolari


mount -o bind /proc /mnt/oldlinux/proc
mount -o bind /dev /mnt/oldlinux/dev
mount -o bind /sys /mnt/oldlinux/sys
 

Perché un “mount -o bind”?

Un mount ordinario consente di montare solo un dispositivo a blocchi in un unico punto, invece mount -o bind permette di montare un qualcosa che avete e che è  già montato altrove in un secondo posto, così si finisce con la stessa roba montata in due posti differenti.


7. Ora che abbiamo tutti i filesystem pronti possiamo usare chroot, questo comando crea una copia “imprigionata” dell’ambiente operativo corrente all’interno dell’ambiente operativo da riparare, quindi è possibile eseguire comandi senza compromettere l’ambiente principale:


chroot /mnt/oldlinux/bin/bash
 

8. Dopo questo comando, saremo come root sul sistema principale, ora è tempo di riparare il sistema.
9. Se /boot era piena, è probabile che qualcosa sia andato storto nella creazione della initrd durante l’installazione del nuovo kernel, per risolvere il problema si può:


     a) Eliminare un po' di roba vecchia in /boot
     b) Eseguire aptitude e premendo il tasto g  per vedere se ci sono dei compiti in sospeso.
     c) In questo caso premere nuovamente g ed aptitude, terminerà correttamente l’installazione del nuovo kernel.

10. Questo è un esempio applicabile anche per altri sistemi operativi linux.

[fonte: http://www.linuxaria.com/article/how-to-recover-kernel-chroot?lang=it]