Bueno saludos seguro alguna vez pasaron por este error en alguna distribución linux, hmm sin embargo este error pudiésemos hecharselo a nuestros dispositivos de almacenamientos ides ha ha ha, lo cierto es que se considera como un fallo de lectura de los controladores ide de discos duros donde el kernel del sistema operativo en este caso Linux Ubuntu no logra reconocer dichos drivers:
Error: BusyBox v1.1.3 (Debian 1:1.1.3-5ubuntu7) Built-in Shell (ash)BusyBox v1.1.3 (Debian 1:1.1.3-5ubuntu7) Built-in Shell (ash) Enter «help» for a list of built-in commands (initramfs)
en alguna distro que usen, bien sea ubuntu…Aquí explicaré un poco el origen de este fallo, causas, síntomas y consecuencias y su posible solución.
No sin antes conocer como se produce la carga de un sistema operativo…
¿ Cómo se lleva a cabo el proceso de arranque en un Sistema Linux ?
Este proceso se lleva a cabo cuando los sistemas operativos Linux se inicializan. La mayoría de los procesos de inicio se dan en 4 etapas dichas cuales serán reconocidas por el código que tiene el control sobre la CPU.
Al inicio solo el BIOS tiene todo el control, luego será el Cargador de Arranque y después lo tendrá el Kernel de Linux siendo esta la última etapa donde se tendrán en memoria los programas del usuario.
El proceso init establece el ambiente del usuario. Verifica y monta los sistemas de archivos, inicia servicios de usuario necesarios y cambia a un ambiente basado en usuario cuando el proceso de inicio termina.
La etapa del cargador de arranque no es totalmente necesaria, un determinado BIOS puede cargar y pasar el control a Linux sin hacer uso del cargador de arranque, usar un cargador de arranque facilita al usuario la forma en que el kernel será cargado.
¿ Qué es un Cargador de arranque ?
Un cargador de arranque en inglés bootloader es un sencillo programa que con sólo parte de las funciones de un sistemas operativos es capaz de preparar todas las configuraciones necesarioas para que dicho sistema pueda funcionar. Generalmente se usan cargadores de arranque multietapas, en donde varios programas pequeños se entremezclan logrando así que el último de ellos cargue el sistema operativo.
Actualmente el proceso de arranque comienza en el CPU ejecutando los programas contenidos en la memoria ROM en una dirección predefinida configurando asi a ésta para ejecutar el cargador de arranque sin ninguna ayuda cuando prendemos el computador.
Cargadores de arranque en Linux:
Cargador de arranque GRUB
etapas:
- La primera etapa del cargador la lee el BIOS desde el MBR.
- La primera etapa carga el resto del cargador (segunda etapa). Si la segunda etapa está en un dispositivo grande, se carga una etapa intermedia (llamada etapa 1.5), la cual contiene código extra que permite leer cilíndros mayores que 1024 o dispositivos tipo LBA.
- La segunda etapa ejecuta el cargador y muestra el menú de inicio de GRUB. Aquí se permite elegir un sistema operativo junto con parámetros del sistema.
- Cuando se elige un sistema operativo, se carga en memoria y se pasa el control.
GRUB tambien llamado gestor de arranque, puede soportar métodos de arranque directo, arranque chain-loading, LBA, ext2 y hasta «un pre sistema operativo totalmente basado en comandos». Posee tres interfaces: un menú de selección, un editor de configuración y una consola de línea de comandos.
Cargador de Arranque LILO
LILO es más antiguo, es casi idéntico a GRUB en su proceso, excepto que no contiene una interfaz de línea de comandos. Por lo tanto todos los cambios en su configuración deben ser escritos en el MBR, y reiniciar el sistema. Un error en la configuración puede arruinar el proceso de arranque a tal grado de que sea necesario usar otro dispositivo que contenga un programa que sea capaz de arreglar ese defecto.
De forma adicional, LILO no entiende sistema de archivos, por lo tanto no hay archivos y todo se almacena en el MBR directamente.
Cuando el usuario selecciona una opción del menú de carga de LILO, dependiendo de la respuesta, carga los 512 bytes del MBR para sistemas como Microsoft Windows, o la imagen del kernel para Linux.
¿ Qué es el shell Initramfs ?
El initramfs es un sistema de inicio en los OS Linux que carga el código necesario para preparar el arranque del sistema. La mayoría de las distro Linux traen una única imagen genérica del núcleo encargada de arrancar en la mayor variedad posible el hardware.
El shell Initramfs es una cónsola de comandos donde se puede revertir dicho error con las sentencias correctas, ademas se puede el usuario que conozca bien su estructura podría identificar rápidamente este fallo.
El sistema de archivos initramfs debe su nombre al sistema de archivos RAMFS . Actualmente los usuarios pueden elegir qué sistema de archivos dinámico en RAM utilizar. Una ventaja del sistema Initramfs es que puede ser editado fácilmente sin privilegios de administrador.
¿ Qué es MBR ?
El Master Boot Record (MBR) es un pequeño programa que es ejecutado en cada Inicio del sistema operativo y se encuentra ubicado en el primer sector absoluto (Track 0, head 0, sector 1) del disco duro en una PC y que busca la Tabla de Particiones para transferirla al Sector de Arranque (Boot).
El MBR hace referencia al sector de arranque de 512 bytes sin embargo también puede direccionar al partition sector de alguna partición que sea compatible con ordenadores IBM. Este tipo de MBR es muy usado siendo incorporado en otros tipos de ordenadores y en estándares nuevos multi-plataforma para el particionado y el arranque.
En el arranque de Sistemas operativos bootstrap () tiene el fuerte de su utilización. También sirve para almacenar una tabla de particiones y para reconocer dispositivos de disco individual.
Eel código del MBR está compuesto de instrucciones de lenguaje máquina en modo real. Donde el código se transfiere el control a través del chain loading al volume boot record de la partición (primaria) activa.
Nota: el Master Boot Record, como otros sectores de arranque, es un blanco para los virus que infectan el sector de arranque.
Hacer un Back up del MBR en Linux
Para hacer la copia de seguridad (backup):
dd if=/dev/xxx of=mbr.backup bs=512 count=1
Para restaurarlo:
dd if=mbr.backup of=/dev/xxx bs=512 count=1
Donde xxx es el dispositivo, que puede ser hda, sda, o cualquier otro.
Al hacer una copia de seguridad del MBR, es muy necesario copiar los primeros 63 sectores del disco ( primer cilindro del disco ) y no sólo el primero, ya que nuestro sistema podría tener implementado el sistema GUID, el cual utiliza más sectores para guardar la información sobre las particiones del disco duro.
La instrucción sería:
dd if=/dev/xxx of=mbr_63.backup bs=512 count=63
Si quieres borrarlo, ya que si no tenemos una copia de seguridad pero queremos borrar la información de este sector, debemos poner los 512 bytes a cero:
dd if=/dev/zero of=/dev/xxx bs=512 count=1
¿ Qué es el Initrd ?
El Initrd es un sistema de archivos temporal que se usa en los núcleos Linux conocido también como disco RAM. Se usa generalmente para hacer las configuraciones necesarias previas al montaje que el sistema de archivos raiz ejecutará.
En un sistema Initrd todos los archivos que serán accedidos por el núcleo en el arranque ( inicio del sistema) se guardarán en un disco RAM, el cual se encuentra en un sistema de archivos encima de un archivo montado como un dispositivo bucle ( equivalente a un disquette 1,4 MB ), la ruta de esta imagen de dicho disco se pasa al núcleo ( kernel ) durante la carga por el cargador de arranque ( LILO o GRUB ).
¿ Causas y síntomas del fallo en Initramfs ?
- fallo al cargar un módulo initramfs llamado piix.
- es un fallo que impide cargar correctamente el kernel a algunos discos duros IDE antiguos.
- Al iniciar el sistema operativo linux el splash se tarda mucho y luego nos lanza a una cónsola con las siglas Initramafs.
- Es un fallo que ocurre en la lectura de las particiones donde está instalado el sistema linux debido a una carga errónea del kernel o mejor aun a la no carga de los controladores de dicho sistema para que pueda iniciarse.
¿ Cómo solucionar el fallo Initramfs en ubuntu ?
Solución A: «Editando el Grub con el live CD teniendo permisos de Root»
Al iniciar su LIVECD luego de seleccionar la opción de booteo con dicho CD/DVD de «Probar Ubuntu sin alterar el sistema» abren una cónsola con permisos de root ( administrador ) y acceden a esta ruta «/boot/grub/menu.lst «. Una vez ahí bajamos hasta las líneas donde está cargado nuestro Kernel LInux sería algo como esto: Kernel / boot/ vmlinuz-2.6.XX-X. vemos que al final de la línea diga «ro quiet splash» y colocamos la sentencia «pci=nomsi «.
Guardamos y reiniciamos el OS….Importante hacer un respaldo del archivo en cuestion.
Solución B: «Editando el Grub con el live CD teniendo permisos de Root»
De igual manera iniciamos con el LIVECD de su distro y al cargarse esta accedemos al archivo «menu.lst» en la carpeta GRUB con permisos de superusuario y editando las líneas donde se cargan los kernel de Linux agregamos la linea «all_generic_ide» al final de las líneas que dicen «ro quiet splash» generalmente Linux carga 4 módulos de Kernel: los modos recovery y los kernels versiones. Este cambio se hace en los modos no recovery como en la foto siguiente verán…
En las siguientes imágenes explico mejor como deben hacer la edición del archivo del GRUB:
abrimos una cónsola e iniciamos Nautilus en modo root
Introducimos la contraseña del superusuario
Nos vamos a la ruta donde se encuentra el archivo «menu.lst»
Abrimos el archivo menu.lst y bajamos a las siguientes líneas de nuestro kernel
Colocamos al fina la siguiente sentencia: «all generic_ide»
y reinician su sistema y ya debería terminar la carga de los controladores de sus dispositivos IDE.
Solución C: «Usando el shell initramfs y el LIVECD»
Paso 1: Ejecutar Live cd
Paso 2: Presionar F6 y añadir tras los » — »
break=top
Paso 3: tecleamos lo siguiente en la cónsola de initramfs
modprobe ide_generic
modprobe ide_cd
modprobe ide_disk
modprobe piix
exit
Paso 4: Con el LiveCd instalamos o iniciamos ubuntu con las opciones que queramos.
Paso 5: Hacemos un reboot ( reinicio ) del sistema
Paso 6: Llegamos al gestor de arranque GRUB nos situamos en la linea de kernel que usariamos para arrancar y presionamos » e «, nos situamos en la linea de kernel vamos al final de la linea y añadimos all_generic_ide.
Nota: es importante editar el archivo menu.lst para no tener que repetir estos pasos en caso que el error sea recurrente.
Enlaces relacionados:
Deja un comentario