Incrustar initramfs en el kernel existente

Incrustar initramfs en el kernel existente

¿Es posible incrustar una imagen de initramfs en un kernel existente sin volver a compilarlo todo? No tengo recursos para hacer eso.

Respuesta1

initramfs se puede incrustar en el kernel en el momento de la compilación (por supuesto, esto está permitido desde menuconfig, seleccionando el árbol rootfs). Y puede resultar útil para algunas circunstancias específicas. Sólo tenga en cuenta que una vez integrada, cualquier herramienta rootfs adecuada en el binario final puede romper la GPL. Pero hasta que su initramfs solo contenga algunas cosas de Busybox, no debería haber ningún problema.

Respuesta2

Normalmente, nadie integraría una imagen de initramfs en un kernel, hasta donde yo sé, eso ni siquiera es posible (sin reescribir el código según el concepto), al menos no es así.

El initrd es siempre un flujo de datos (archivo) separado que se carga junto con el kernel para ayudar con el arranque. Es opcional pero casi siempre se incluye en las distribuciones modernas de GNU/Linux.

así que no tienes que preguntarte cómo incrustarlo sino cómo cambiarlo, así que echa un vistazo a la configuración de tu gestor de arranque, normalmente deberías identificar 3 cosas (también principalmente en este orden)

  • Imagen del kernel (algo que guía a su gestor de arranque a la imagen del kernel (la mayoría de las veces un archivo) para cargarlo en la RAM.
  • línea de comando (una cadena que también está escrita en la RAM para que el kernel acceda y la use (como dar parámetros dentro de un sistema operativo, pero fuera de solo escribir y llamar (código ensamblador))) (esto la mayoría de las veces tiene algo de root=/ dev/xy ro cualquier opción
  • una imagen initrd (imagen opcional del disco RAM inicial que se carga después del kernel en la RAM, el kernel luego lo usa como un disco virtual que se usa principalmente (pero hay sistemas en vivo que se ejecutan completamente dentro de él, por ejemplo) para ayudar al arranque antes de la raíz fs se encuentra y se monta (como si los discos fueran lentos y fluidos (orden del disco, elementos scsi, arranque desde la red, cifrado del sistema de archivos, shell de recuperación de emergencia si falla fsck,... etc.)

entonces, para responder a su pregunta, no lo haga, si su cargador de arranque no puede usar initrd directamente y no puede reemplazarlo, simplemente cargue otro cargador de arranque con él (como cosas muy arcaicas que aún pueden cargar grub como un kernel, por ejemplo), de lo contrario, simplemente actualice la ruta al archivo initrd separado en la configuración de su gestor de arranque.

Por cierto, si usa grub2, no edite la configuración directamente, la genera update-grub usando datos dentro de /etc/default/grub y /etc/default/grub.d/, en grub heredado aún puede editar menu.lst directamente en la partición de arranque, pero grub2 es demasiado complejo para esto, aún puedes editar cosas directamente pero lo más probable es que se sobrescriba después, así que no es una buena idea...

información relacionada