Kernel entra en pánico con el error "No se puede abrir el dispositivo raíz", ¿dónde agrego la opción "root ="?

9

cada vez que intento arrancar con linux kernel 3.0.0.13 (el instalado por las actualizaciones) me sale un error Kernel Panic:

VFS: no se puede abrir el dispositivo raíz "sda1" o bloque desconocido (0,0) Agregue una opción de arranque "root =" correcta;

Por suerte, si inicio con la versión anterior, no tengo ningún problema. ¿Como puedo resolver esto? ¿Dónde debo agregar el correcto root= option? Si no logro que este Kernel funcione, ¿cómo puedo eliminarlo como predeterminado y seguir con el anterior?

lucacerona
fuente
El mismo problema aqui. La principal diferencia que observo es que hasta 3.0.0.12, el grub conf intenta identificar el disco duro usando su UUID, 3.0.0.13 ahora usa / dev / sda6 ... raro ...
Dan Soap

Respuestas:

11

No ha proporcionado mucha información con los registros y con qué proceder, pero supongo que lo más probable es que este error que enfrenta se deba a que el núcleo está confundido por una unidad IDE / SATA. Hacer una búsqueda rápida en Google me llevó al enlace 1 , enlace 2 , enlace 3

El siguiente es el extracto de un enlace que se refiere por uno de los enlaces de arriba :

Probablemente sea uno de los problemas más frecuentes (pero una vez que lo haya resuelto, lo más probable es que nunca lo vuelva a ver):

Unable to mount root fs on unknown-block(0,0)

o

VFS: Cannot open root device "sda3" or unknown-block(8,3)
Please append a correct "root=" boot option; here are the available partitions:
  sda driver: sd
    sda1 sda2

Los dígitos 0,0o 8,3pueden ser diferentes en su caso: se refiere al dispositivo al que el núcleo intenta acceder (y que falla). En términos generales, se puede decir que, si el primer dígito es 0, el núcleo no puede identificar el hardware. Si es otro dígito (como 8), no puede identificar el sistema de archivos (pero puede acceder al hardware).

El problema aquí es que el núcleo que está arrancando no puede traducir el root=/dev/...parámetro que le dio (dentro de la configuración del cargador de arranque) en un sistema de archivos real y accesible. Varias razones pueden resultar en tal falla:

  • faltan controladores en la configuración del kernel para su controlador HDD (casos 1, 4, 5)
  • faltan controladores en la configuración del kernel para el bus utilizado por su controlador HDD
  • faltan controladores en la configuración del kernel para el sistema de archivos que está utilizando
  • el dispositivo está mal identificado en su raíz = parámetro (casos 2, 3)

Resolver el problema es fácil si sabes cuál es el motivo. Lo más probable es que no, así que aquí hay un chequeo rápido.

Abra el asistente de configuración del kernel (la parte make menuconfig ) para que pueda actualizar la configuración del kernel en consecuencia.

  • Compruebe si ha incorporado (y no como módulo) soporte para el bus / protocolo que utiliza su controlador de disco duro.
  • Lo más probable es que sea soporte PCI, soporte SATA (que está debajo del soporte del dispositivo SCSI), ...
  • Compruebe si ha incorporado (y no como módulo) soporte para el controlador HDD que usa. Uno de los casos más frecuentes: seleccionó el soporte para su protocolo de controlador de disco duro (IDE, SATA, SCSI, ...) pero olvidó
    seleccionar el controlador del controlador HDD (como Intel PIIX). Intente
    ejecutar el siguiente comando lscpi y pegue su salida en
    http://kmuto.jp/debian/hcl/ . El sitio le mostrará qué controladores de núcleo debe seleccionar para su sistema. Dentro de la configuración del menú,
    puede escribir "/" para abrir la función de búsqueda y escribir el
    nombre del controlador para averiguar dónde reside. # lspci -n
  • Compruebe si ha incorporado (y no como módulo) soporte para los sistemas de archivos que usa.
  • Supongamos que su sistema de archivos raíz usa btrfs (que definitivamente no recomiendo) pero no lo seleccionó, o lo seleccionó para construirlo como un
    módulo, entonces obtendrá el error que verá. Asegúrese de que el
    soporte del sistema de archivos esté integrado en el núcleo.
  • Compruebe si el parámetro del kernel root=apunta a la partición correcta.

    Esto no es tan estúpido como parece. Cuando se inicia con un núcleo, puede enumerar sus discos como / dev / sda mientras que su núcleo (configurado) espera que sea / dev / hda. Esto no se debe a que los núcleos sean inconsistentes entre sí, sino a los controladores utilizados: los controladores más antiguos usan la sintaxis hda, los nuevos sda.

    Intente cambiar hda con sda (y hdb con sdb, y ...).

    Además, los núcleos recientes ofrecen una descripción general de las particiones que encontraron en el dispositivo indicado. Si lo hace, podría ayudarlo a identificar si seleccionó incorrectamente una partición (en el ejemplo dado al comienzo de esta sección, solo se encuentran dos particiones, mientras que el núcleo recibió instrucciones de iniciar la tercera). Si no es así, lo más probable es que el núcleo no conozca el dispositivo para empezar (por lo que no puede intentar mostrar particiones).

  • Compruebe si el núcleo que está iniciando el gestor de arranque es el núcleo correcto. He visto personas que, después de construir un primer kernel (que no arranca), olvidan que tienen que montar /bootantes de sobrescribir el kernel con uno nuevo. Como resultado, copian el kernel al sistema de archivos raíz ( /) mientras que el gestor de arranque todavía espera que la imagen del kernel esté en la /bootpartición.

Nitin Venkatesh
fuente
1
Hola, pasó mucho tiempo, pero gracias. ¡Tenía un CD-Rom defectuoso, eliminando que todo funcionaba bien!
lucacerone
Enlace 1, Enlace 4 y Enlace 5 están todos muertos ahora.
Questionmark
0

Después de leer esta respuesta que explica lo que está sucediendo, intente usar el [Boot-Reapir CD] [1] [1]: https://help.ubuntu.com/community/Boot-Repair

Funcionó muy bien en la reparación de "el dispositivo está mal identificado en su raíz = parámetro (casos 2, 3)".

madcap66
fuente