miércoles, 27 de agosto de 2014

Solución Kernel Panic usando el GRUB de Antergos para manejar otros Kernel o distros

Me va excelente en Antergos GNU/Linux y el último Kernel 3.16.1, pero al igual que en mis otras distros, KaOS y Ubuntu, he querido instalar un Kernel de repuesto que nunca viene mal. Además, en el Kernel 3.16.1 no me va la webcam en el programa Guvcview usando la opción MJPG como salida de cámara, en otros programas funciona perfectamente. En Antergos/Arch además del Kernel corriente, que siempre es el último, tenemos la opción de poder instalar un Kernel anterior de los llamados LTS (Soporte Extendido) En los repositorios de Arch este Kernel LTS (linux-lts) se encuentra en su versión 3.14.17. La rama 3.14.x tiene soporte por parte de los chicos del Kernel hasta Agosto del 2016.

Una vez ya tenía claro que quería instalar el linux-lts me puse manos a la obra. En mi caso que uso una gráfica Intel y los drivers gráficos intel son libres, no hay miedo a romper nada al instalar nuevo Kernel y no tengo la necesidad de instalar módulos gráficos aparte como pasa en Nvidia o ATI con los driver propietarios.

Instalo el kernel y los headers
sudo pacman -S linux-lts linux-lts-headers
Y regenero el GRUB de Antergos que es quien se encarga de manejar todas mis distros.
sudo grub-mkconfig -o /boot/grub/grub.cfg
Todo transcurre de manera correcta, al parecer. Reinicio y escojo iniciar Antergos desde el nuevo Kernel linux-lts (3.14.17) y me encuentro con un lindo Kernel Panic, el segundo de mi vida.


 Oh my good!!! me vuelvo a Windows!!! o en mi caso a OS X :P

No hombre no, no es para tanto, no se acaba el mundo ni es culpa del Kernel si no del propio GRUB de Antergos que no ha agregado todas las opciones de la nueva imagen linux-lts por lo que a initramfs le es imposible montar el nuevo kernel al no encontrarlo.

Recuerdo que esto mismo me paso otra vez en una instalación de Evolve OS y fue el propio Ikey Doherty quien me dijo lo que pasaba y había que indicarle a initrd la imagen del kernel a iniciar.

Todo esto contando con que yo uso siempre el GRUB de Antergos para manejar todas mis distros, alomejor a ti, si usas el GRUB de otra distro, no te pasa  ;)

Vamos entonces al lío, que se va el tío.

Con nuestro editor preferido le metemos mano al grub.cfg.
sudo gedit /boot/grub/grub.cfg
Y en las entradas del nuevo kernel lts, tanto en la entrada de inicio normal como en la de fallback, añadimos la siguiente línea.
initrd /boot/initramfs-linux-lts.img
Para que quede así, dejo como ejemplo solo las últimas líneas y en donde mi partición de arranque es sda1

echo 'Loading  lts kernel ...'
linux /boot/vmlinuz-linux-lts root=/dev/sda1 rw  quiet
initrd /boot/initramfs-linux-lts.img

 Como es de imaginar esto es válido  para distros que usen initrd y las opciones de montaje solo son mi ejemplo, también se suele usar los UUID de las particiones en vez de punto de montaje.

Si tu estás en el mismo caso que yo, que me consta que hay otros usuarios que si, espero que te haya serviso de ayuda :)

Les dejo como referencias estos hilos abiertos por mi en el foro de Desde Linux y de Antergos.

Enjoy  ;)

14 comentarios:

  1. el problema es que como el grub.cfg es de creación dinámica, cada vez que lo reconstruyas con
    sudo grub-mkconfig -o /boot/grub/grub.cfg
    se te joderá.
    Tal vez otra idea es meter una entrada personalizada para el kernel LTS en /etc/grub.d/40_custom
    de esa manera permanecerá aunque se recargue el GRUB.

    ResponderEliminar
  2. Cierto, lo había pensado. AL reconstruir de nuevo el GRUB por alguna actualización puede que se me estropee el invento.

    No obstante estaré pendiente del tema.

    Gracias por el consejo ;)

    ResponderEliminar
  3. Una pregunta Yoyo, para los que usamos Syslinux y no GRUB, ocurriría esta misma problematica?

    ResponderEliminar
    Respuestas
    1. Nunca he usado syslinux, no te sabría decir, pero en caso de que sucediera lo mismo el procedimiento sería mas o menos similar pero con ligeros cambios. Precisamente aquí lo comenta un Archero con Syslinux

      https://plus.google.com/+AlejandroCobo/posts/NdB9qFK1FB1

      Eliminar
  4. Si este es tu segundo kernel panic de tu vida linuxera, ¿el de Evolve fue el primero? Increíble, yo he tenido bastantes más y eso que no soy de probar distros y llevo menos tiempo en esto...

    ResponderEliminar
    Respuestas
    1. Si, mi segundo Kernel Panic y casi no podría catalogarse como tal pues no es un fallo del kernel en sí sino del GRUB que no lo inicia.

      Mi segundo panic kernel, y llevo con Linux desde el 2004 ;)

      Eliminar
  5. Buenas de nuevo y si en vez de ser con el grub de Antegros ( Lo tengo instalado )
    Uso el grub de Manjaro ? ( También lo tengo instalado, y es el GRUB que uso por defecto.)

    Serian los mismos pasos o simplemente con instalar el kernel en Antergos y usar los mismos pasos como explicas seria suficiente.

    sudo pacman -S linux-lts linux-lts-headers


    /boot/initramfs-linux-lts.img

    Claro todo esto desde Antergos para poder tener el kernel LTS de rescate.

    Espero no haberte liado Yoyo !!!!! ya se que es mas fácil poner el grub de Antergos pero me gusta mas el de manjaro y por eso pregunto como te aburres pues ya tienes otro tema !!!!..

    Saludos crack y que sepas que ya e visto la vueltecita en coche que te has pegadoooo !!!!

    ResponderEliminar
    Respuestas
    1. Que yo recuerde Manjaro no nombra los kernles como linux-lts si no con linux y la versión del kernel

      Ejemplo para el kernel 3.16.1 sería linux316
      Para el 3.15.x sería linux315

      En Manjaro es aún más fácil pues se instala con MHWD y se encarga de los drivers gráficos en caso de que uses los propietarios

      En las últimas Manjaro dentro de la herramienta Manjaro Settings ya hay una utilidad gráfica para manejar los kernels

      O bien se puede hacer via terminal con sudo mhwd-kernel -i linux315 (para el 3.15.x por ejemplo)

      Esto ya lo vimos hace tiempo en el otro lado

      http://yoyo308.com/2013/07/12/nueva-forma-de-trabajar-de-mhwd-kernel-en-manjaro/

      Para refrescar la lista de kernels en el grub, osea, recargar el grub, creo que en Manjaro era sudo update-grub

      http://yoyo308.com/2013/08/23/howto-restaurar-el-grub-de-manjaro-u-otras-distros-linux-desde-una-live-de-manjaro/

      No tienes que instalar el GRUB de Antergos Manjaro, de hecho, considero mejor el GRUB de Manjaro que el de Antergos

      En mis tiempos, el GRUB de Manjaro nunca falló a la hora de agregar kernels nuevos ;)

      Eliminar
    2. Si, parece que me lié un poco, he vuelto a releer tu pregunta y la veo distinta jajaja xDD

      Si lo que quieres es instalar el linux-lts en Anetrgos, los haces, y luego refrescas el GRUB de Manjaro que según tu es el que usas: sudo update-grub

      Y el GRUB de Manjaro debería agregarte las entras del nuevo Kernel linux-lts de Antergos

      Si no lo hiciera, entonces si debes seguir mi tutto, pero antes debes debes dejar trabajar al GRUB de Manjaro.

      Aparte de tener un kernel de rescate, en mi caso lo he instalado porque algunas cosas no van aún el en linux 3.16.1, como lo que comenté de la webcam, pero si van el el kernel lts (3.14.x) ;)

      Eliminar
    3. Si sabia que te podria liar !!! jejeje entiendo que hago los pasos que me nombras y actualizo como dices desde manjaro el gurb y ya estaría.
      Y si yo tuve tambien que hacer un downgrade en antergos por que el kernel 3.16.1 no se lleva bien con la GMA 4500 y peta el escritorio en cinnamon.
      Asi que voy a probar saludos crack.

      Eliminar
  6. Hola, Yoyo, soy hector del foro de Antergos. Te comento acerca de la instalación del núcleo LTS, a mí me ha ocurrido que si arranco con el kernel lts y tengo instalado virtualbox se produce el siguiente error: " Failed to start load-Kernel Modules ", esto es debido a un bug:

    https://bugs.archlinux.org/task/41602

    Después de estar buscando la solución la mañana entera y parte de esta tarde, abrí un hilo en el foro de Archlinux, aquí la solución:

    https://bbs.archlinux.org/viewtopic.php?id=186330

    SOLUCIÓN:

    $ sudo pacman -Rns virtualbox-host-modules
    $ sudo pacman -Rns virtualbox-host-modules-lts

    $ sudo pacman -S virtualbox-host-dkms
    $ sudo dkms install vboxhost/4.3.14
    # Systemctl enable dkms.service

    Saludos.

    ResponderEliminar
    Respuestas
    1. Gracias, hector

      Hace siglos que no uso Virtual Box en ninguna distro, pero seguro que este le vendrá bien a alguien ;)

      Un saludo

      Eliminar
  7. Un pequeño apunte, creo que al tener UEFI se necesita modificar la ruta y eliminar el "/boot" del principio.

    Es decir, en vez de:
    initrd /boot/initramfs-linux-lts.img

    Así:
    initrd /initramfs-linux-lts.img

    Probé en un pc con Bios y funcionó, así que imagino que será cosa del UEFI. Para comprobarlo solo hace falta ver como está esa línea en el kernel normal y salís de dudas.

    Un saludo.

    ResponderEliminar
  8. Hola a todos tengo una lap y tien el windows 8.1 reciente mente le instale el ubuntu 14.04 y me manda el kernel panic y nose como solucionarlo pues soy nuevo en esto agradesco su ayudaa

    ResponderEliminar