Después de algunas actualizaciones recientes, ¡mi computadora ya no arranca! Esto es lo que podría determinar:
- Esta es una computadora muy reciente que me fue proporcionada por TI corporativa. Tiene una CPU Intel reciente (generación Skylake).
- La computadora ejecuta Ubuntu 16.04.
- La computadora se inició correctamente por última vez en marzo. El problema probablemente se deba a una actualización de software o un error de hardware.
- Tengo otra computadora con 16.04 con casi el mismo software instalado (que usé
apt-clone), y funciona bien. Tiene hardware diferente (también amd64, pero CPU diferente, GPU diferente, etc.). - El núcleo se inicia, el initrd funciona correctamente. Cuando inicio con una pantalla de presentación en modo gráfico, se me solicita la contraseña para mi volumen dm-crypt, y lo último que veo es que se ha montado correctamente.
- El bloqueo se produce antes de recibir un mensaje de inicio de sesión. Cuando la computadora se cuelga, es difícil. Incluso Alt+ SysRqno responde. La CPU está evidentemente vinculada al 100% ya que los ventiladores se encienden a toda potencia.
- Todavía tengo el kernel que estaba ejecutando antes de reiniciar. Cuando selecciono este kernel en el menú Grub, obtengo el mismo bloqueo. Parece que este es un error del kernel preexistente que se activa por otra cosa, pero ¿qué?
- Si apago la pantalla de inicio (eliminar
splashde lalinuxlínea de comando en Grub), veo que se inician varios servicios y luego se bloquea. Puedo obtener un shell raíz agregando
init=/bin/sha lalinuxlínea de comando en Grub. Incluso puedo llegar más lejos agregandosystemd.unit=basic.target systemd.shellEsto inicia una serie de servicios y ejecuta un shell raíz en tty9.
- Si corro
systemctl start multi-user.targetdesde ese shell raíz, la computadora se bloquea. Entonces, presumiblemente, el problema se desencadena por uno de estos servicios. - Corrí
systemctl list-dependencies multi-user.targetpara ver qué servicios empezar. Inicié manualmente las dependencias enumeradas una por una, y todo comenzó bien.
Así que esto parece un error de hardware (ya que ocurre en una computadora pero no en la otra) que se activa por algún software. ¿Pero qué software? Como la computadora se bloquea tan fuerte, no puedo obtener ningún registro. Ni siquiera puedo obtener ninguna salida de consola útil.
Técnicas de depuración útiles:
- Alt+ SysRq: tecla mágica SysRq , que te permite hacer cosas como un reinicio de emergencia. Accede al kernel a un nivel muy bajo, por lo que funciona en todos los accidentes, excepto en los peores. En mi caso, Alt+ SysRqno responde, lo que muestra qué tan profundo es el choque.
- Para modificar los parámetros de arranque, presione y mantenga presionados Shiftunos segundos después de encenderlo. Debe presionarlo después de que el BIOS haya inicializado el teclado, pero antes de que se inicie el sistema operativo. Esto hace que aparezca el menú Grub .
- En el menú Grub, presione epara editar la línea de comando para una entrada de menú. Para cambiar los parámetros de arranque de Linux, navegue hasta la línea que comienza con
linux. En un Ubuntu moderno, encontrará núcleos antiguos en "Opciones avanzadas para Ubuntu". Una vez que haya realizado los cambios deseados en la línea de comando, presione Ctrl+ xpara iniciar. Cualquier cambio que realice aquí es solo para este arranque, no se guardan en el disco. - Algunas opciones útiles en la
linuxlínea de comando:quiet nosplashoculta casi todos los mensajes de arranque. Elimínelos para obtener mensajes en la consola durante el arranque, lo cual es necesario para tener alguna posibilidad de diagnosticar problemas.recoveryle ofrece un shell de raíz casi sin servicios. Necesitará saber la contraseña de root. La entrada del menú "modo de recuperación" usa esto.init=/bin/shle ofrece un shell raíz sin ningún tipo de servicio. Para reanudar el arranque normal, ejecuteexec init. Puede pasar las opciones de systemd en este punto, por ejemplo,exec init --unit=basic.targetpara iniciar init y algunos servicios (tenga en cuenta que esto no inicia ninguna forma de iniciar sesión, por lo que será mejor que tenga un shell ejecutándose en otra consola). Tenga en cuenta que el sistema de archivos raíz está montado de solo lectura; corremount -o remount,rw /para poder escribirle.systemd.unit=basic.targetinicia un conjunto muy básico de servicios. ¡Tenga en cuenta que esto no incluye ninguna forma de iniciar sesión! Puede hacer que esto sea el predeterminado ejecutandosystemctl set-default basic.targeten un indicador raíz. Para restaurar el objetivo predeterminado original, ejecutesystemctl set-default graphical.target(osystemctl set-default multi-user.targetpara un servidor sin GUI).systemd.debug-shellinicia un shell de raíz en tty9. Puede habilitar esto para cada arranque ejecutandosystemctl enable debug-shellen un indicador raíz. No olvide deshabilitar esto después de que haya resuelto el problemasystemctl disable debug-shell. Presione Alt+ F9para cambiar a tty9.- Véanse también las sugerencias systemd de Fedora , las sugerencias de problemas de arranque de Arch Linux .

noipbpprincipalmente como una forma de iniciar el sistema afectado. Creo que la mejor solución aquí es actualizar el kernel.