Linux errore di "resume no device specified for hibernation" al boot

 

Nelle distribuzioni Linux (soprattutto ArchLinux e derivate) può capitare che compaia un messaggio all'avvio del sistema come 'ERROR: resume no device specified for hibernation'. La segnalazione dell'errore non è da sottovalutare perchè, nel caso si sia adoperata un'ibernazione del sistema, può capitare che lo stesso diventi poi instabile con fastidiosi rallentamenti, la cui origine generalmente non viene associata all'errore in questione. L'errore è generato da un mancato riconoscimento di una partizione SWAP all'avvio del sistema cui fare riferimento per l'ibernazione. La soluzione quindi coinvolge i parametri adoperati nel boot loader in uso, che generalmente è il Grub legacy o il Grub2. E' necessario:

1) accertarsi che Linux stia usando una partizione swap con il comando da terminale swapon --show;

2) accertarsi di conseguenza che nel boot loader ci sia un riferimento del tipo 'resume=/dev/sdxy' (dove x e y stanno per la lettera e il numero della partizione swap ad esempio /dev/sda3). Se non risulta il punto 2) tra i parametri bisogna inserirli. Per il Grub legacy bisogna aggiungere 'resume=dev/sdxy' nel file /boot/grub/menu.lst nella riga che inizia con i comandi per il caricamento del kernel, ad esempio:  "kernel (hd0,1) /boot/vmlinuz... resume=/dev/sda3". Nel Grub2 bisogna aprire il file /etc/default//grub e nella riga GRUB_CMDLINE_LINUX= (crearla se non c'è) inserire un resume=dev/sdxy tra virgolette (esempio: GRUB_CMDLINE_LINUX="resume=/dev/sda3"). Se è stato usato un file personalizzato in Grub2 nella directory /etc/grub.d/ per caricare una o più distro Linux, bisogna aggiungere nel file, all'interno del paragrafo 'menu entry', un 'resume=/dev/sdxy sempre dopo il caricamento del kernel e prima della riga relativa ad un eventuale 'initrd'. Ovviamente per Grub2 bisognerà fare un update del boot loader con un update-grub2 (su Ubuntu e derivate) o con grub-mkconfig -o /boot/grub/grub.cfg (attenzione che alcune distro usano una sintassi leggermente diversa: fare riferimento alla specifica documentazione).

Al posto del /dev/sdxy può essere usato l'identificativo UUID.

Infine, se il bootloader usato è LILO (ormai raramente), nel file /etc/lilo.conf bisogna aggiungere una riga append="resume=/dev/sdxy" (comprensiva delle virgolette).

Fare un reboot del sistema ed il messaggio d'errore dovrebbe scomparire.

Specie in ArchLinux e derivate può capitare un problema ancora più grave che non fa partire proprio il sistema. In tal caso, bisogna intervenire con una Live ed entrare con chroot  (QUI una breve guida). Una volta entrati con blkid verificare l'id della partizione di swap usata, (/dev/sdx o UUID) controllare che corrisponda a quanto scritto nella configurazione di GRUB e nel file /etc/fstab oltrechè inserire i comandi di resume come prima visto. Se avete cambiato i parametri al GRUB rilanciate la configurazione dello stesso ed infine dare il comando mkinitcpio -p linux (in Manjaro: mkinitcipio -p linux418 dove le cifre devono corrispondere alla versione del kernel in uso). Con un reboot dovrebbe tornare tutto a posto.