El otro día estaba realizando una actualización en un computador portátil antiguo de Ubuntu 18.04 a Ubuntu 20.04. Recientemente, el computador ha tenido algunos problemas de sobrecalentamiento, por lo cual tuve que cambiarle la pasta térmica del CPU. Como no había presentado más fallas, me confié, y realicé una una actualización a la siguiente versión. Desgraciadamente, a medio camino de la instalación se sobrecalentó el computador, y por seguridad se apagó. De allí, al iniciar el sistema no volvió a entrar al ambiente gráfico, sino a la consola de emergencia.
En consola de emergencia, lo primero que intenté fue reparar la el estado de instalación de los paquetes utilizando el siguiente comando:
sudo apt install -f
Pero esto falló debido a un aparente conflicto de dependencia mutua de udev con snapd. Entonces comencé a buscar en internet, y conseguí que en algunos casos, basta con:
- Reparar la instalación anterior.
- Reconfigurar los paquetes instalados.
- Actualizar el listado de paquetes instalables desde los repositorios.
- Actualizar los paquetes instalados en el sistema (que no requieran la desinstalación de paquetes ya presentes en el sistema).
Esto se puede ejecutar utilizando los siguientes comandos:
sudo apt install -f #1
sudo dpkg --configure -a #2
sudo apt update #3
sudo apt upgrade #4
Mi caso no fue solucionable con los comandos anteriores, ya que el conflicto antes mencionado hacía que terminasen con error "sudo apt install -f", "sudo dpkg --configure -a" y "sudo apt upgrade". El único comando que siguió funcionando fue "sudo apt update".
Entonces seguí investigando y encontré un procedimiento para reparar una instalación fallida iniciando el equipo con un sistema operativo desde un medio externo (LiveUSB o LiveCD), utilizando chroot. En mi caso, utilicé una memoria USB que tenía a la mano con Debian, pero cualquier otra distribución derivada de Debian (Ubuntu, Mint, etc) o incluso otras distribuciones de Linux. Tomé como base los comandos utilizados allí, pero le hice algunas modificaciones. Los pasos ejecutados fueron:
- Iniciar el computador desde un sistema Linux externo.
- Identificar la partición donde está instalada el sistema a recuperar. En mi caso tuve que probar con varias, porque el computador tiene varias instalaciones de Linux, de diferentes distribuciones, en distintas particiones.
- Montar la partición a reparar en /mnt
- Montar "enlazados" (utilizando la opción bind) los directorios proc, sys, y dev del sistema a reparar en el ambiente del medio externo.
- Copiar el archivo resolv.conf desde el ambiente externo al ambiente a reparar.
- Cambiar de ambiente raíz, al sistema a reparar.
- Reparar la instalación anterior.
- Reconfigurar los paquetes instalados.
- Actualizar el listado de paquetes instalables desde los repositorios.
- Actualizar los paquetes instalados en el sistema, que no requieran la desinstalación de paquetes ya presentes en el sistema.
- Actualizar los paquetes instalados en el sistema, aunque sí requieran la desinstalación de paquetes ya presentes en el sistema.
- Desinstalar los paquetes innecesarios
- Salir del ambiente raíz del sistema a reparar.
- Desmontar los directorios proc, sys, y dev del sistema a reparar previamente montados en el ambiente externo.
- Desmontar la partición a reparar en /mnt previamente montada en el ambiente externo.
- Reiniciar el sistema en el ambiente ya reparado.
Estos pasos se pueden ejecutar con los siguientes comandos:
fdisk -l #2
sudo mount /dev/sda1/ /mnt #3 Sustituir sda1 por la partición correcta.
sudo mount --bind /proc/ /mnt/proc/ #4.a
sudo mount --bind /sys/ /mnt/sys/ #4.b
sudo mount --bind /dev/ /mnt/dev/ #4.c
sudo cp /etc/resolv.conf /mnt/etc/resolv.conf #5
sudo chroot /mnt/ #6
sudo apt install -f #7
sudo dpkg --configure -a #8
sudo apt update #9
sudo apt upgrade #10
sudo apt full-upgrade #11
sudo apt autoremove #12
exit #13
sudo umount /proc/ #14.a
sudo umount /sys/ #14.b
sudo umount /dev/ #14.c
sudo umount /mnt/ #15
No hay comentarios:
Publicar un comentario