Ripristinare un Sistema Dopo un Errore del Kernel al Boot

Hai avuto qualche problema durante l’ultimo aggiornamento del Kernel? Niente paura ecco come rimediare..

A tutti può capitare di vedere qualche brutto errore in accensione del proprio sistema operativo proprio dopo un aggiornamento o il passaggio alla versione successiva della propria distribuzione.

Ecco un tipico esempio di errore:

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…

Se è successo anche a te ci sono due possibili soluzioni:

  1. Reinstallare da zero il sistema operativo. Se hai dedicato una partizione specifica per i dati e la home non avrai problemi a farlo..
  2. Provare a risolvere il problema con un po di lavoro e l’uso di chroot

Ecco la guida.. per la soluzione 2 ovviamente :)

1) Avvia il Sistema con un’altra ISO Live

Di Cosa Hai Bisogno: una distribuzione live su CD o USB, meglio se recente. In questa guida verrà usato Ubuntu 11.04.

Accendi il computer con la distribuzione live inserita al boot. Una volta nel sistema apri un terminale e digita:

sudo bash

Accertati che il sistema sia correttamente collegato ad internet perchè avrai bisogno di utilizzarlo.

2) Monta il tuo FileSystem

Ovviamente devi trovare la partizione corretta da montare soprattutto se utilizzi un sistema multiboot. La partizione che ci interessa è quella di root (/) e nel caso quella di boot (/boot).
Nel terminale da root digita:

fdisk -l

Ora potresti avere un output simile al mio:

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

A giudicare dalle dimensioni dei blocchi è piuttosto evidente che le mie partizioni sono:

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

Procedo creando la cartella “oldubuntu” sotto /mnt e montando correttamente il file system:

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

3 Fai chroot qui Dentro !

Prima di poter fare il chroot, che ti consente di lavorare nel sistema montato come se fosse quello attivo, procedi montando manualmente i meta file system che servono al sistema. Dal terminale digita:

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

 

Perchè si usa l’opzione a “-o bind” ?

Il motivo principale che il comando mount normale ti permette di montare un dispositivo in una posizione una sola volta mentre l’utilizzo dell’opzione bind ti permette di montare nuovamente questo file system anche se già in uso in due posti differenti.

Utilizza il comando chroot che ti permette di entrare nel sistema virtuale creato dal file system montato prima:

chroot /mnt/oldubuntu /bin/bash

Ora sei finalmente all’interno del sistema da controllare. Nel mio caso ho potuto notare che la porzione di boot è piena. Motivo per cui l’aggiornamento del kernel non è avvenuto con successo. La soluzione consiste quindi in:

  1. cancellare le componenti non necessarie in /boot;
  2. avviare aptitude (permendo il tasto g puoi visualizzare che ci sono dei processi non terminati tra cui l’installazione del nuovo kernel);
  3. premere nuovamente g per terminare l’esecuzione dei task;

4) Riavvia il Computer

Rimuovi la ISO live che hai utilizzato per la correzione dei problemi e riavvia il computer per far partire il tuo nuovo sistema.

[fonte|linuxaria]

  • Avalloneandrea

    facenddo in questo modo perdo i dati?

    • http://www.ubuntu-linux.it Andrea Zorzetto

      Con il chroot non si perdono i dati ma con la reinstallazione si..

      • Avalloneandrea

        io ho un problema… io installai ubuntu 11.04 da ambiente windows avviato…. ora dall’ fdisk mi esce questo
           Device Boot      Start         End      Blocks   Id  System
        /dev/sda1   *           1          13      102400    7  HPFS/NTFS
        Partition 1 does not end on cylinder boundary.
        /dev/sda2              13        5240    41984000    7  HPFS/NTFS
        /dev/sda3            5240        9702    35840000    7  HPFS/NTFS
        /dev/sda4            9702       19458    78361600    7  HPFS/NTFS

        • Avalloneandrea

          quindi non so come fare per ritrovare il boot… la partizione dove è installato linux è la sda3 son sicuro perchè è la partizione da 35 ….

        • http://www.ubuntu-linux.it Andrea Zorzetto

          Se hai installato Ubuntu tramite Wubi non puoi utilizzare questa guida.. In questo articolo ci sono delle indicazioni per aprire un file system Ubuntu di Wubi tramite live cd http://elubuntu.blogspot.com/2010/05/aprire-file-system-di-wubi-da-live-cd.html