En este post explicaré como solucionar algunos problemas más comunes que se tienen cuando actualizas tu distribución, todo lo que explicaré es una recopilación de muchas fuentes, muchas preguntas y muchas pruebas en mi pc que finalmente he logrado que todo funcione como reloj sin la necesidad de tener que formatear y reinstalar todo nuevamente.
Resumen
En resumen para los que no quieran leer todo el post debo decir que el problema es una combinación de muchos otros problemas:
* Librerías de Virtualbox no se eliminan al ser desinstalado
* Módulos del kernel de Virtualbox dejan de ser compatibles con la version del kernel actualizada junto a la nueva distribución.
* Montaje automático de discos NTFS o ExFat
Esto desencadena otra serie de problemas como por ejemplo que el arranque del kernel no finalice debido a que el módulo de virtualbox no existe y tampoco es capaz de automontar un disco con problemas de arranque (inicio rápido de windows)
Detalles
El primer problema que vemos es que no inicia ubuntu en modo gráfico sino que solo inicia en modo terminal (tty1):
Para comprender porque sucede esto lo que haremos es simplemente reiniciar el sistema y observar los mensajes de errores de carga:
En base a esto comenzaremos a solucionar de manera muy fácil cada uno de estos problemas.
Problema 1: Error al cargar los módulos del kernel de linux
El error de la carga del sistema nos dice:
Citar
[FAILED] Failed to start Load Kernel Modules. See 'systemctl status systemd-modules-load.service' for details.
Cuando dejamos que inicie normalmente el sistema operativo este por lo menos iniciará en modo terminal y esto es bueno porque podremos observar los problemas que hubo en la carga, si iniciamos con upstart no veremos estos logs.
Despues que iniciamos sesión en modo terminal ejecutaremos el comando que nos recomendó el sistema:
Citar
systemctl status systemd-modules-load.service
El sistema nos dice que la carga de un módulo falló y si nos fijamos bien el comando específico que falló fue:
Código:
/lib/systemd/systemd-modules-load
Por lo tanto probamos aver que nos arroja:
Código:
$ sudo /lib/systemd/systemd-modules-load
Failed to insert 'vboxvideo': No such device
Ajamm! el módulo que nos da el problema es el video de Virtualbox, asi que trataremos de solucionarlo:
Código:
$ sudo dpkg-reconfigure virtualbox
* Unloading VirtualBox kernel modules... [ OK ]
* Loading VirtualBox kernel modules... * No suitable module for running kernel found
[fail]
invoke-rc.d: initscript virtualbox, action "restart" failed.
Como falló intentaremos solucionar esto de otra manera:
Código:
$ sudo modprobe vboxdrv
modprobe: FATAL: Module vboxdrv not found in directory /lib/modules/4.4.0-34-generic
Entonces comprendí que claramente el módulo instalado por Virtualbox era compatible hasta ese momento para la versión del kernel cuando se instaló y por lo tanto claramente no es compatible con el nuevo kernel por lo cual las opciones a seguir son varias: reinstalar o eliminar virtualbox.
En mi caso para evitar problemas y asegurarme que todo ande bien procedí a desinstalar virtualbox :
Código:
$ sudo apt-get purge virtualbox
$ sudo apt-get autoremove
$ sudo apt-get autoclean
Ahora probamos reiniciar el sistema y nos encontramos que el sistema continúa con el mismo problema y es porque el sistema aun está intentando cargar el mismo módulo de virtualbox a pesar de ya haber sido desinstalado, asi que procedemos a purgar manualmente virtualbox:
Editamos el archivo "/etc/modules" con cualquier editor, yo usé nano:
Código:
$ sudo nano -w /etc/modules
Buscamos y eliminamos la línea donde dice "vboxvideo", guardamos y cerramos el editor. Debiera quedar masomenos así el archivo final:
Código:
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
lp
# vboxvideo
Nótese que vboxvideo está comentado con un signo gato.
Ahora si volvemos a reiniciar y ya no veremos el mismo error de la carga de módulos del kernel
Problema 2: journal falla porque no es capaz de crear el archivo de logs
El error de la carga del sistema nos dice:
Citar
[FAILED] Failed to start Create Volatile Files and Directories. See 'systemctl status systemd-tmpfiles-setup.services'
La solución es tan fácil como eliminar el directorio de logs de journal service para que este vuelva a crearlos con sus nuevos permisos correspondientes:
Código:
$ rm -rf /var/log/journal
$ rm -rf /run/log/journal
Luego de esto reinicias el sistema y ya no debiera volver a aparecer ese mensaje de error.
Problema 3: Error al iniciar el servicio pNFS
El error de la carga del sistema nos dice:
Citar
[DEPEND] Dependency failed for pNFS block layout mapping daemon.
Esto se soluciona creando una mascara del servicio:
Código:
$ sudo systemctl mask nfs-blkmap.service
Con esto ya no debiera volver a aparecer ese error.
Problema 4: No se monta el directorio raiz en modo de escritura
Todo lo que hemos solucionado hacia atrás era solo parte del problema, aun nos daremos cuenta que no podemos ingresar al modo gráfico.
Lo que haremos para ver que sucede es iniciar manualmente el modo gráfico y ver que nos arroja:
Código:
$ startx
Este error es muy común y se debe porque no tenemos montado el directorio raiz en modo de escritura, solo está en modo lectura y eso se debe a una configuración del mismo grub.
Hagamos una prueba, remontaremos la partición del directorio raiz del sistema y luego de eso iniciaremos el gestor gráfico:
Código:
$ sudo mount -o remount,rw /
$ startx
Al hacer esto nos daremos cuenta que nos apareció el login de ubuntu y podremos acceder normalmente al sistema.
Ahora, haremos que esto se haga de manera automática reparando el archivo de inicio:
Lo que haremos es editar el archivo "/etc/default/grub" con permisos de root, podemos hacerlo por ejemplo:
Código:
sudo gedit /etc/default/grub
O también usando vi o nano desde el terminal.
Buscamos las siguientes líneas:
Citar
EOF
fi
if test -d /sys/firmware/efi && test -e "${linux}.efi.signed"; then
sed "s/^/$submenu_indentation/" << EOF
linux ${rel_dirname}/${basename}.efi.signed root=${linux_root_device_thisversion} ro ${args}
EOF
else
sed "s/^/$submenu_indentation/" << EOF
linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
fi
if test -d /sys/firmware/efi && test -e "${linux}.efi.signed"; then
sed "s/^/$submenu_indentation/" << EOF
linux ${rel_dirname}/${basename}.efi.signed root=${linux_root_device_thisversion} ro ${args}
EOF
else
sed "s/^/$submenu_indentation/" << EOF
linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
Pueden haber mas lineas que sean similares pero lo importante es encontrar las que digan "ro", estas hay que reemplazarlas por "rw" (read write), guardas cambios y actualizamos el grub:
Código:
$ sudo update-grub
Luego reiniciamos el sistema (puedes reiniciar con el comando "reboot") y listo! ahora nuestro sistema inicia sin problemas.
Recomendaciones adicionales
Adicionalmente a esto también es recomendable realizar una serie de pasos y mantenciones para asegurarnos que tenemos todo en regla y que no nos aparecerán otros problemas adicionales que impidan iniciar normalmente el sistema:
1: Limpiar el sistema, actualizar todo y buscar dependencias no instaladas:
Hay algunos problemas conocidos en que el sistema no arranca despues de una actualización porque no se instalaron correctamente algunas dependencias.
Código:
$ sudo apt-get update
$ sudo dpkg --configure -a
$ sudo apt-get dist-upgrade
$ sudo apt-get -f install
2. Reinstalar "systemd-sysv"
Hay algunos problemas con "systemd-sysv" que impiden que el sistema arranque despues de una actualización, por este motivo procedemos a realizar una reinstalación:
Código:
$ sudo apt-cache policy systemd-sysv
$ sudo apt-get install --reinstall systemd-sysv
3. Eliminando los mimetypes
Hay algunos problemas cuando quieres hacer cambios específicos en algunos softwares que modifican el mimetype del sistema y arrojan una cantidad infinta de warnings de tipo "Unknown media type in type ...", esto se soluciona desinstalando el paquete con problemas:
Código:
$ sudo mv -vi /usr/share/mime/packages/kde.xml /usr/share/mime/packages/kde.xml.bak
$ sudo update-mime-database /usr/share/mime
$ sudo apt-get remove chemical-mime-data
¿Otros problemas similares al actualizar la distribución?, recomendaciones
Cuando actualizas una distribucin debes tener mucho cuidado, antes de hacerlo debes deshabilitar tus drivers privativos como los de nvidia, intel, etc ya que cuando actualizas y tienes un nuevo kernel estos drivers dejan de ser compatibles, por lo tanto cuando terminas y reinicias el sistema puedes terminar con un kernel panic:
Por esto cuando puedes iniciar por lo menos con "upstart" lo primero que debes hacer es deshabilitar tus drivers privativos desde el gestor de actualizaciones en la pestaña que dice "controladores restringidos":
Otro problema muy común es la actualización de componentes gráficos que en muchas ocasiones arrojan problemas debido a configuraciones antiguas, para evitar esto basta con reinstalar cada componente o purgar y luego instalar, por ejemplo en mi caso al actualizar "libgdk-pixbuf" a traves de las actualizaciones automáticas mi sistema dejó de dar video, por lo cual tuve que iniciar en modo tty1 (presionando Alt+Control+F1 después de loguearse sin importar que no se vea nada), esto iniciará el modo consola y luego procedemos a reinstalar el paquete afectado:
Código:
apt-get -y reinstall libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common libgdk-pixbuf2.0-common && reboot
Reiniciamos y solucionado!. Ahora, ¿cómo podemos saber exactamente que version estamos utilizando?:
Código:
whk@machine:~$ sudo apt list --installed | grep libgdk
[sudo] password for whk:
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
libgdk-pixbuf2.0-0/xenial-updates,xenial-security,now 2.32.2-1ubuntu1.4 amd64 [instalado]
libgdk-pixbuf2.0-common/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.32.2-1ubuntu1.4 all [instalado]
libgdk-pixbuf2.0-dev/xenial-updates,xenial-security,now 2.32.2-1ubuntu1.4 amd64 [instalado, automático]
Este problema se viene arrastrando desde hace muchos años y me ha sucedido hoy (2018). Esto es parte de un largo bug de ubuntu.
Otro problema muy común es que la tarjeta de red deja de ser compatible por lo cual cuando terminas la actualización y te encuentras con que solo puedes acceder al terminal tambien te das cuenta que no le puedes hacer ping a google, entonces ejecutas "ifconfig" para ver la configuración de red y no aparece "eth0", cuando eso sucede es porque tu driver de la tarjeta de red ya no es compatible.
Entonces, ¿que puedo hacer?: que tu tarjeta de red no le funcione el driver no quiere decir que tu chip de wifi tampoco lo sea, en muchas ocasiones si pero no siempre, en ese caso debes buscar documentación sobre como habilitar tu wifi manualmente desde "iwconfig".
Cuando no puedes habilitar ninguno de los dos lo que yo hago es buscar el modelo del notebook (laptop) o pc y le busco el driver oficial y se lo paso via usb pendrive, para esto debo montar manualmente la partición del usb y luego acceder al archivo e instalarlo, si es un .deb lo instalo con "dpkg -i archivo".
También es recomendable mantener siempre la última versión del kernel instalado y eliminar las versiones viejas. Cuando actualizas la distribución de tu sistema operativo este por lo general viene con nuevas versiones del kernel pero estas no se eliminan de manera automática, para esto puedes usar "Ubuntu Tweak" en la sección de limpieza:
Esto es bueno porque también eliminarás problemas de carga de módulos con otros kernels.
Otro punto a considerar es que si no tienes problemas con virtualbox si los puedes tener con algún otro sistema de virtualización como kvm, en este sentido desinstala y luego lo vuelves a instalar cuando tengas todo funcionando, tus configuraciones y maquinas virtuales al igual que con virtualbox no serán eliminados.
Si usas Java, después de actualizar tu sistema operativo debes reconfigurar la ruta por defecto:
Código:
$ sudo update-alternatives --config java
Y seleccionar la versión que estás usando, en mi caso es Java7:
Código:
root@machine:/# sudo update-alternatives --config java
Existen 3 opciones para la alternativa java (que provee /usr/bin/java).
Selección Ruta Prioridad Estado
------------------------------------------------------------
* 0 /usr/bin/gij-5 1050 modo automático
1 /usr/bin/gij-4.8 1048 modo manual
2 /usr/bin/gij-5 1050 modo manual
3 /usr/lib/jvm/java-7-oracle/jre/bin/java 1049 modo manual
Press <enter> to keep the current choice[*], or type selection number: 3
update-alternatives: utilizando /usr/lib/jvm/java-7-oracle/jre/bin/java para proveer /usr/bin/java (java) en modo manual
root@machine:/#
Si no lo haces entonces las aplicaciones que usaban java (como android studio) dejarán de funcionar o darán errores comunes de compatibilidad, como por ejemplo:
Código:
whk@machine:/opt/android-studio/bin$ ./studio.sh
java version "1.5.0"
gij (GNU libgcj) version 5.4.0 20160609
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Start Failed: Internal Error. Please report to https://https://code.google.com/p/android/issues
java.lang.reflect.InvocationTargetException
...
Caused by: java.lang.RuntimeException: Could not find 'theUnsafe' field in the class sun.misc.Unsafe
at com.intellij.util.concurrency.AtomicFieldUpdater.getUnsafe(AtomicFieldUpdater.java:44)
...14 more
Algunas fuentes
Algunas fuentes desde donde recopilé la información:
- https://foro.elhacker.net/gnulinux/no_puedo_iniciar_el_sistema_en_ubuntu-t443023.0.html
- http://askubuntu.com/questions/779251/what-to-do-after-failed-to-start-load-kernel-modules/817497#817497
- http://askubuntu.com/questions/808584/upgrading-xubuntu-from-14-04-to-16-04-1-hangs-at-kernel-panic/809487
- http://www.ubuntu-es.org/node/188881#.V8HByNFk--r
- http://www.ubuntu-es.org/node/190523#comment-540712
- https://ubuntuforums.org/showthread.php?t=2318779&p=13466943#post13466943
- http://askubuntu.com/questions/688981/system-boot-problem-on-upgrading-from-14-04-to-15-04
- https://bbs.archlinux.org/viewtopic.php?id=190681
- https://help.ubuntu.com/community/Loadable_Modules
- http://askubuntu.com/questions/39852/how-to-remove-warnings-like-unknown-media-type
- http://askubuntu.com/questions/468846/permanent-grub-edit-from-ro-to-rw/570873
- https://bbs.archlinux.org/viewtopic.php?id=196341
- https://github.com/PaoloRotolo/android-studio/issues/7
- https://bugs.launchpad.net/ubuntu/+source/nux/+bug/1311503
Espero que todo esto les pueda dar algunas luces sobre el problema que tengan cuando terminan de actualizar Ubuntu. Si no quieren pasar un buen rato sentado en el escritorio tratando de hacer arrancar ubuntu despues de una actualización entonces descarguen el iso de la nueva versión de ubuntu, respalden y formateen, instalen el SO de cero.
Saludos.