vmlinuz e initrd no se encuentran después de construir el kernel?
9
Después de configurar y construir el kernel usando make, ¿por qué no tengo vmlinuz-<version>-default.imgy initrd-<version>.imgsolo tengo un vmlinuxbinario enorme (~ 150 MB)?
¿Olvidaste correr make bzImage? Además, ¿hiciste un núcleo monolítico? ¿Estás ejecutando un SO similar a Debian? Si es así, y no está compilando de forma cruzada, hay formas más fáciles de construir un núcleo.
Alexios
Lo compilé en OpenSUSE (sin embargo, descargué la última fuente de kernel.org). Después make menuconfig, escribí makey dejé que hiciera el trabajo.
Amumu
1
Necesita make bzImagegenerar el núcleo bzImage. Di make helppara ver algunas breves instrucciones. Consulte el Cómo del kernel de Linux para obtener instrucciones detalladas. Si respondió todas las make menuconfigpreguntas con Y (en lugar de M cuando corresponde), ha intentado incluir todos los controladores en el núcleo propiamente dicho. Esta es una muy, muy mala idea y el núcleo no arrancará porque es demasiado grande. La initrdimagen es generada por otras herramientas.
Alexios
Acabo de comprobar la configuración nuevamente. Parece que no he habilitado el soporte del módulo de kernel cargable. Pensé que es por defecto. Intentaré compilar nuevamente y notificaré cuando esté listo.
Amumu
Muchos de los comentarios anteriores me parecen buenas respuestas.
James Youngman
Respuestas:
9
Las imágenes comprimidas están debajo arch/xxx/boot/, donde xxxestá el arco. Por ejemplo, para x86y amd64, tengo una imagen comprimida en /usr/src/linux/arch/x86/boot/bzImage, junto con /usr/src/linux/vmlinux.
Si aún no tiene la imagen, verifique si bzip2está instalada y funcionando (pero supongo que si ese fuera el problema, obtendría un mensaje de error descriptivo, como "bzip2 no encontrado").
Además, la configuración del kernel le permite elegir el método de compresión, por lo que el nombre real del archivo y el algoritmo de compresión pueden diferir si cambia la configuración del kernel.
Como otros ya mencionaron, los initrds no son generados por el proceso de compilación de Linux, sino por otras herramientas. Tenga en cuenta que a menos que, por alguna razón, necesite archivos externos (por ejemplo, necesita módulos o udev para identificar o montar /), no necesita un initrd para arrancar.
make bzImage
? Además, ¿hiciste un núcleo monolítico? ¿Estás ejecutando un SO similar a Debian? Si es así, y no está compilando de forma cruzada, hay formas más fáciles de construir un núcleo.kernel.org
). Despuésmake menuconfig
, escribímake
y dejé que hiciera el trabajo.make bzImage
generar el núcleo bzImage. Dimake help
para ver algunas breves instrucciones. Consulte el Cómo del kernel de Linux para obtener instrucciones detalladas. Si respondió todas lasmake menuconfig
preguntas con Y (en lugar de M cuando corresponde), ha intentado incluir todos los controladores en el núcleo propiamente dicho. Esta es una muy, muy mala idea y el núcleo no arrancará porque es demasiado grande. Lainitrd
imagen es generada por otras herramientas.Respuestas:
Las imágenes comprimidas están debajo
arch/xxx/boot/
, dondexxx
está el arco. Por ejemplo, parax86
yamd64
, tengo una imagen comprimida en/usr/src/linux/arch/x86/boot/bzImage
, junto con/usr/src/linux/vmlinux
.Si aún no tiene la imagen, verifique si
bzip2
está instalada y funcionando (pero supongo que si ese fuera el problema, obtendría un mensaje de error descriptivo, como "bzip2 no encontrado").Además, la configuración del kernel le permite elegir el método de compresión, por lo que el nombre real del archivo y el algoritmo de compresión pueden diferir si cambia la configuración del kernel.
Como otros ya mencionaron, los initrds no son generados por el proceso de compilación de Linux, sino por otras herramientas. Tenga en cuenta que a menos que, por alguna razón, necesite archivos externos (por ejemplo, necesita módulos o udev para identificar o montar
/
), no necesita un initrd para arrancar.fuente
Según la documentación:
http://tldp.org/LDP/lame/LAME/linux-admin-made-easy/kernel-custom.html
Cuando tu lo hagas:
hacer bzImage
y entonces:
cp bzImage vmlinuz
para crear el archivo vmlinuz. Es decir, son el mismo archivo :-).
fuente