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.