GNU/Linux >> Tutoriales Linux >  >> Ubuntu

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

cada vez que trato de arrancar con Linux kernel 3.0.0.13 (el instalado por las actualizaciones) obtengo un error de Kernel Panic:

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

Afortunadamente, si inicio con la versión anterior, no tengo ningún problema.
¿Cómo puedo solucionar esto? ¿Dónde debo agregar la opción root= option correcta? ? Si no logro que este Kernel funcione, ¿cómo puedo eliminarlo como predeterminado y mantener el anterior?

Respuesta aceptada:

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

El siguiente es un extracto de un enlace al que hace referencia uno de los enlaces anteriores:

Lo más probable es que sea uno de los problemas más frecuentes (pero una vez que lo resolvió,
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,0 o 8,3 puede ser diferente en su caso:se refiere a
el dispositivo al que el kernel intenta acceder (y que falla).
En términos generales, se puede decir que, si el primer dígito es 0, entonces
kernel 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:

  • a la configuración del kernel le faltan controladores para su controlador HDD (casos 1, 4, 5)
  • a la configuración del núcleo le faltan controladores para el bus que utiliza el controlador de su HDD
  • a la configuración del núcleo le faltan controladores para el sistema de archivos que está utilizando
  • el dispositivo está mal identificado en su parámetro root=(casos 2, 3)

Resolver el problema es fácil si sabe cuál es el motivo. Lo más probable
es que no, así que aquí hay una revisión rápida.

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

  • Compruebe si ha incorporado (y no como un módulo) soporte para el bus/protocolo que usa su controlador de disco duro.
  • Lo más probable es que sea compatible con PCI, SATA (que se encuentra debajo de la compatibilidad con dispositivos SCSI),...
  • Compruebe si tiene soporte integrado (y no como un módulo) para el controlador HDD que utiliza.
    Uno de los casos más frecuentes:seleccionó soporte para el protocolo de su controlador de disco duro (IDE, SATA, SCSI, …) pero se olvidó de
    seleccionar el controlador del controlador HDD (como Intel PIIX). Intente
    ejecutar el siguiente comando lscpi y pegue su resultado en
    http://kmuto.jp/debian/hcl/. El sitio le mostrará qué controladores del kernel
    necesita 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 tiene soporte integrado (y no como un módulo) para los sistemas de archivos que utiliza.
  • Digamos 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 ve . Asegúrese de que el soporte del sistema de archivos
    esté integrado en el kernel.
  • Compruebe si el parámetro del kernel para root= option apunta a la partición correcta.

    Esto no es tan estúpido como parece. Cuando arranca con un kernel
    , es posible que sus discos aparezcan como /dev/sda mientras que su kernel
    (configurado) espera que sea /dev/hda. Esto no es
    porque los kernels son inconsistentes entre sí, sino por los
    controladores utilizados:los controladores más antiguos usan la sintaxis hda, los más nuevos sda.

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

    Además, los núcleos recientes brindan una descripción general de las particiones que encontraron
    en el dispositivo indicado. Si es así, 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 kernel recibió
    instrucciones para arrancar El tercero). Si no es así, lo más probable es que
    se deba a que el kernel no conoce el dispositivo para empezar (por lo que no puede
    intentar mostrar las particiones).

  • Compruebe si el kernel que está arrancando el gestor de arranque es el kernel correcto.
    He visto gente que, después de construir un primer kernel (que no arranca), olvida que tiene que montar /boot antes de
    sobrescribir el kernel con uno nuevo. Como resultado, copian el kernel
    al sistema de archivos raíz (/ ) mientras que el gestor de arranque aún
    espera que la imagen del núcleo esté en el /boot partición.


Ubuntu
  1. Analizar el kernel de Linux con ftrace

  2. ¿Error al firmar Csr con la clave raíz Ca?

  3. ¿Cómo sincronizar el Root Gedit con las preferencias del usuario Gedit?

  4. "gzip:Stdout:No queda espacio en el dispositivo" al actualizar el kernel?

  5. ¿Jungledisk falla con el error Libnotify?

Cómo resolver el error "no se puede conectar con el demonio Docker"

Cómo agregar una aplicación en la lista de aplicaciones abiertas con Ubuntu

¿Cómo agregar una aplicación a la lista de aplicaciones abiertas con?

¿Cómo resolver "El disco duro parece demasiado pequeño" con la opción de búsqueda más profunda de Testdisk?

¿Cómo monta un kernel la partición raíz?

¿Adónde va la memoria restante de vm.overcommit_ratio?