He leído muchos tutoriales sobre cómo construir núcleos personalizados y arrancar Ubuntu usando esos núcleos, y seguí con éxito las guías y los núcleos personalizados arrancados, pero no entiendo qué hace cada uno de los comandos en las guías y qué está sucediendo realmente con cada comando
El procedimiento descrito en el sitio de Ubuntu hace un montón de trabajo con fakeroot, dpkg, make-kpkg, algunos initramfs, y otras cosas horribles que las obras, sino que simplemente no ayuda a entender lo que está pasando.
- ¿Cuál es la salida de
makeun directorio de kernel de Linux? - ¿Crea una "imagen del núcleo comprimido"?
- ¿Cuál es el nombre del archivo de "imagen comprimida del núcleo" y dónde está ubicado?
- ¿Qué
make moduleshacer? - ¿Debe
make moduleshacerse antes o despuésmake? - ¿No
makeconstruye mis módulos automáticamente? - ¿Cuál es el proceso (en inglés, no solo la lista de comandos) de agregar núcleos recién creados a la lista de núcleos de arranque?
- ¿Qué
make installhacer? - ¿Lo
make installagregaré a mi lista de núcleos de arranque para que no tenga que hacer nada más? - ¿Hay un equivalente
make modules_install?
ubuntu
linux-kernel
make
AnkurVj
fuente
fuente

Respuestas:
Desde la parte superior...
makecompila y vincula la imagen del núcleo. Este es un archivo único llamadovmlinuz.make modulescompila archivos individuales para cada pregunta que respondióMdurante la configuración del kernel. El código objeto está vinculado a su núcleo recién construido. (Para las preguntas respondidasY, estas ya son parte devmlinuz, y para las preguntas respondidasNse omiten).make installinstala tu kernel integrado en/vmlinuz.make modules_installinstala los módulos del kernel en/lib/moduleso/lib/modules/<version>.En cuanto a agregarlo a la lista de núcleos disponibles, el gestor de arranque se encarga de eso. Es diferente para cada gestor de arranque, pero
grubes el más común en x86 y amd64, así que lo describiré. En realidad es bastante simple. Grub busca y/, para cualquier cosa que parezca que podría ser un núcleo en funcionamiento, lo agrega. Y sí, esta es una descripción demasiado simplificada./boot/lib/modulesEsas "cosas horribles" adicionales en la documentación de Ubuntu son cosas adicionales para crear un
debpaquete. Cuando lo hace por más que usted, es mucho mejor empaquetarlo. Cambiarás a tiempo.La construcción del kernel y los módulos se mantiene separada porque para las personas que lo necesitan (es decir, los desarrolladores del kernel) a menudo solo realizan cambios en un módulo. Pueden aplicar sus cambios, reconstruir e instalar solo los módulos. Esto ahorra mucho tiempo cuando tiene que hacerse 20 veces al día. Nunca se actualizará para tener un solo
make everythingcomando. En su lugar, ejecutamake && make modules && make install && make modules_installcomo la documentación dice hacer . El proceso de compilación favorece a los desarrolladores del kernel, no a ti. Y así es como debe ser.En realidad, casi no hay razón para que nadie, excepto los desarrolladores del núcleo o los empaquetadores de distribución, compilen un núcleo. En casi cualquier circunstancia, la característica del núcleo que desea ya se ha creado para usted y está disponible en uno de los núcleos preempaquetados. Hay excepciones, pero son extremadamente raras en estos días.
No es que te esté desanimando de construir tu propio núcleo, en realidad te animo a que lo hagas. Creo que construir su núcleo desde cero es una práctica invaluable para aprender cómo funciona todo allí. En parte, porque quizás algún día serás la excepción que necesita. Pero también le enseña mucho sobre el proceso de kernel y arranque en general. Serás una mejor persona por haberlo hecho.
fuente
/vmlinuzun directorio en la carpeta raíz? cuando haga una instalación, ¿se creará este directorio y se colocará un nuevo núcleo allí? ¿make modules_installReemplazará mis módulos instalados actualmente? Supongamos que coloco mi vmlinux en el directorio / boot, ¿necesito hacer algo más (como editar archivos de configuración de grub y hacer grub-update o algo después?)make bzimagees lo que hace eso./vmlinuzes un archivo binario, no un directorio. He estado haciendo solo kernels empaquetados durante los últimos 5 años, por lo que no recuerdo exactamente el comportamiento demodules_installun kernel instalado directamente. Grub encontrará tu kernel/bootsin ayuda. Sí, siempre debe ejecutargrub-updatedespués de instalar un nuevo núcleo.make bzimagelugar demake? ¿Necesito hacer unamake cleanymake bzimageotra vez? Por/vmlinuzqué se refiere el archivo se creará en el directorio raíz o en el directorio de origen del núcleo de Linux?/es una ruta absoluta, así que sí, es un archivo en la raíz.Yse compilan en (es decir, son parte de vmlinuz). Los módulos respondidosMse compilan como módulos cargables. Los módulos respondidosNno se compilan.make modules_installsolo se aplica a los respondidosM.