sábado, 30 de octubre de 2021

error: attempt to read or write outside of disk 'hd0'.

Un día enciendo el ordenador y me encuentro con la siguiente pantalla, en vez de aparecer el GRUB.


 error: attempt to read or write outside of disk 'hd0'.   
 Entering rescue mode...                                  
 grub rescue>                                             
                                                          

En mi caso el problema sabia de donde procedía. Era de la ultima actualización del sistema, y mas concretamente, de la actualización del gestor de arranque GRUB.

error: intento leer o escribir fuera del disco 'hd0'

Estaba claro, la actualización del GRUB había fallado en algún momento de dicha actualización.

Intente solucionar el problema, reinstalando grub en la partición primaria del primer disco duro. Osea en /dev/sda.

Usando el siguiente comando:

grub-install /dev/sda

Y luego actualizando las entradas del grub con el siguiente comando:

update-grub

Pero al reiniciar volvía a aparecer el error:

 error: attempt to read or write outside of disk 'hd0'.   
 Entering rescue mode...                                  
 grub rescue>                                             
                                                          
Vamos a solucionarlo usando los siguientes pasos:

1.- Localizar la partición en la que Debian GNU/Linux está presente usando los siguientes comandos:

 grub rescue > ls                                         
                                                          
y nos devolverá el listado de todos los discos duros, junto a todas las particiones de cada disco duro. Debemos identificar el disco duro como (hd0) y cada una de las particiones como (hd0, msdos1), (hd0, msdos2), etc.

Es posible que dependiendo de la versión del grub, la representación cambie, por ejemplo, podríamos ver (hd0,1) (hd0,2).
 (hd0) (hd0,msdos1) (hd0,msdos2) (hd0,msdos3)           
 (hd0,msdos4) (hd0,msdos5)                              
2.- Entonces ahora tenemos que buscar la partición del disco duro (hdX) (X= es el numero del disco duro) donde se encuentra instalado Debian GNU/Linux, para ello usamos el siguiente comando, y lo repetimos hasta que aparezca la instalación de Debian GNU/Linux

 grub rescue > ls (hd0,msdos1)/                        
                                                       
 grub rescue > ls (hd0,msdos2)/                        
                                                       
 grub rescue > ls (hd0,msdos3)/                        
                                                       
En mi caso personal es en la partición (hd0, msdos3), y nos debe de aparecer el sistema de archivos de Debian GNU/Linux

 grub rescue > ls (hd0,msdos3)/                         
 ./ ..// lost+found/ home/ etc/ media/ vmlinuz.old var/ 
 bin usr/ sbin lib lib32 lib64 libx32 boot/ dev/ proc/  
 root/ run/ sys/ tmp/ mnt/ srv/ opt/ .cache/            
 initrd.img.old vmlinuz initrd.img                      
                                                        
Entonces ya sabemos que el sistema se encuentra instalado (hd0,msdos3), el comando que hemos usado para saberlo es:

 grub rescue > ls (hd0,msdos3)/                        
                                                       
3.- Ahora vamos a usar permisos de root, para ello usamos el siguiente comando:

 grub rescue > set root=(hd0,msdos3)                    
                                                        
4.- Vamos a indicarle al sistema donde se encuentra el gestor de arranque grub, usando el siguiente comando:

 grub rescue > set prefix=(hd0,msdos3)/boot/grub        
                                                        
5.- Una vez realizado el comando anterior, vamos a cargar el GRUB de forma directa.

 grub rescue > insmod normal                            
                                                        
5.1.- y ahora arrancamos el grub, usando el siguiente comando:

 grub rescue > normal                                   
                                                        
Con esto nos aparecerá el grub que habíamos perdido.


6.- Arrancamos Debian GNU/Linux y lo primero que vamos hacer es instalar el grub, nuevamente, para ello usamos el siguiente comando:

 grub-install /dev/sda                                  
                                                        
7.- Y por ultimo actualizamos las entradas del GRUB, usando el siguiente comando:

 update-grub                                            
                                                        
A partir de este momento, hemos recuperado el gestor de arranque GRUB, instalado en la partición /dev/sda3 del primer disco duro /dev/sda.