Ubuntu, come un po’ tutti i sistemi operativi Linux-based, è altamente personalizzabile in tutti i suoi aspetti – dall’interfaccia grafica al parco applicativo, passando per le meccaniche di sistema e per il kernel. Ed è proprio di kernel che vogliamo parlarvi: capita spesso che, per via degli aggiornamenti di sistema, ci si ritrovi con un grosso numero di kernel installati e si decida di eliminare quelli non più in uso per una questione d’ordine. La distrazione è però sempre dietro l’angolo e, magari perché in quel momento la testa è fra le nuvole, ci si può lasciar prendere talmente la mano da… eliminare tutti i kernel senza rendersene conto!
Sfortunatamente il sistema operativo non controlla l’eliminazione accidentale dell’ultimo kernel poiché, per definizione, si suppone che chiunque agisca con i permessi da superutente sappia esattamente ciò che fa. Un sistema operativo senza kernel è ovviamente un sistema operativo inavviabile ma per Linux, in questo caso particolare per Ubuntu, la reinstallazione di un kernel funzionante diventa affare tutt’altro che difficile.
Tutto ciò di cui si ha bisogno per proseguire è una distribuzione live di un qualsiasi sistema operativo Linux (a patto che l’architettura sia la medesima di quello da ripristinare) e di una connessione ad Internet funzionante. Il piccolo tutorial in basso si applica a Ubuntu, ai suoi flavor ufficiali e a tutte le sue derivate.
Ripristinare Ubuntu dopo aver eliminato tutti i kernel
Avviate il computer usando il sistema operativo live scelto (va bene sia da chiavetta/disco USB che da supporto ottico). Una volta avviato il sistema assicuratevi di essere collegati ad Internet ed identificate la partizione su cui è installato Ubuntu (quello da ripristinare). Per farlo, potrete digitare ad esempio
sudo fdisk -l
Che darà in output qualcosa di simile a:
Dispositivo Boot Start End Blocks Id System /dev/sda1 * 1 10191 81859176 7 HPFS/NTFS /dev/sda2 10192 12031 14770713 5 Esteso /dev/sda5 10193 10319 1020127+ 82 Linux swap / Solaris /dev/sda6 * 10320 12031 13750272 83 Linux
In questo esempio la partizione radice su cui è installato Ubuntu corrisponde a /dev/sda6; scoperto ciò, bisognerà “istruire” una shell eseguita dal sistema operativo live in modo da permetterle di agire direttamente usando il sistema installato su quella partizione, facendo però ausilio del kernel della distribuzione live. Sembra affar complesso ma non lo è affatto: sarà infatti sufficiente digitare da terminale (ricordando di sostituire /dev/sda6 con il disco su cui è installato Ubuntu)
mkdir hd_sistema sudo mount /dev/sda6 hd_sistema sudo mount --bind /dev hd_sistema/dev sudo mount --bind /proc hd_sistema/proc sudo mount --bind /sys hd_sistema/sys sudo chroot hd_sistema
A questo punto sarà sufficiente reinstallare il kernel predefinito della distribuzione da ripristinare, con il comando
sudo apt-get install linux-image-generic
e, infine, aggiornare il bootloader con il comando
sudo update-grub
A questo punto riavviate il sistema (ricordando di rimuovere il supporto con la distribuzione live usata): l’ubuntu “apparentemente” irrecuperabile funzionerà come nuovo.