Qualche giorno fa uno dei computer dell’ufficio non si è acceso per bene: è partito grub2 e ha dato l’errore grub_file_filters not found.
Internet è decisamente prolifica nel trovare situazioni analoghe, ma per lo più si tratta di narrazioni di troubleshooting, senza indicare esattamente quali siano il problema e la soluzione.
E allora diciamolo chiamaramente: il problema è che la versione di grub scritta nell’MBR, cioè dentro il disco, non corrisponde a quella dei moduli presenti in /boot/grub
. Questo può succedere per vari motivi: nel mio caso avevo installato grub sull’MBR di tutti i dischi del server (per poter fare il boot anche in caso di guasto di un disco), ma non avevo configurato correttamente questa cosa in debconf
, sicché dopo gli aggiornamenti di grub, solo l’MBR del disco principale era stato aggiornato, lasciando gli altri MBR con la vecchia versione di grub. Questo era successo perché il sistema era stato installato con un solo disco e poi ampliato con gli altri. Appena si è rotto il disco principale, il BIOS ha letto grub dal secondo disco, grub ha caricato i moduli dalla directory /boot/grub che era su un RAID, ma la versione non combaciava.
La soluzione è quella di avere sempre grub allineato: ogni volta che si aggiorna il pacchetto si deve riscrivere grub su tutti i dischi dove è stato installato. Per farlo si può semplicemente riconfigurare grub con il comando
dpkg-reconfigure grub-pc