Estoy desarrollando módulos kernel en este momento, y los tiempos de construcción están empezando a entrar en mi piel. Como efecto secundario, estoy tomando demasiados descansos de "café" durante las compilaciones.Tratando de encontrar todos los módulos del kernel necesarios para mi máquina usando la secuencia de comandos de shell
Así que estaba buscando una manera de construir solo las cosas que necesito para mi plataforma. Los capítulos 7 y 8 de "linux kernel in a nutshell" ofrecían un buen detalle de cómo hacerlo a mano. Es una buena lectura: http://www.kroah.com/lkn/
Pero a pesar de que entiendo las cosas, esto sigue siendo un montón de ajustes para que funcione.
2.6.32 y kernels posteriores agregaron un nuevo objetivo make localmodconfig
. que escanea a través de lsmod
y cambia el archivo .config de manera apropiada. Así que pensé que encontré mi "automatización". Pero este script perl también tiene un problema.
Este hilo se describen los problemas: https://bbs.archlinux.org/viewtopic.php?pid=845113
Hubo también una propuesta de solución que aparentemente trabajaba para otros, es para ejecutar el script directamente en lugar de utilizar el objetivo del maquillaje.
Aunque para mí, make localmodconfig no funciona en absoluto. su por lo siguiente:
make clean
make mrproper
cp /boo/config-'uname -r' .config
make localmodconfig
y se detiene con
vboxguest config not found!!
nf_defrag_ipv6 config not found!!
vboxsf config not found!!
vboxvideo config not found!!
La cosa es que mi entorno de desarrollo del núcleo está dentro de VirtualBox. Estos módulos de vbox se instalaron cuando elegí instalar "la adición de invitado de virtualbox".
Y el módulo netfilter podría ser un módulo específico de Distribución (Muchos módulos de filtro de red no son parte del kernel principal, así que no me sorprende), que no está incluido en el núcleo principal.
Ahora la solución alternativa es obviamente descargar este módulo y volver a intentarlo. Pero estoy pensando si hay parche para el streamline_config.pl
que permitirá al usuario excluir ciertos módulos si lo desea. El problema es que tengo cero conocimiento sobre perl y me gusta de esa manera.
Así que mis problemas en pocas palabras
parches
streamline_config.pl
por lo que puede dar una lista de nombre de módulo como argumento que se excluirán del proceso el archivo de configuración.El script se encuentra en kernel.org
EDIT: Se ha eliminado la materia sobre script de perl no se está ejecutando. Como señaló Mugen Kenichi (¿Qué tan tonto puedo ser?). Pero aún así, haga que
localmodconfig
no funcione porque no tiene ningún código de módulos en el árbol de fuentes. parchestreamline_config.pl
requisito todavía válido.
no se puede ejecutar un script Perl con 'sh'. Prueba 'perl' y no obtendrás esos errores' my: command not found' y los errores perl o advertencias en su lugar. –
Parece que soy el tipo más estúpido del mundo. ¿Cómo podría hacerlo :) – Aftnix
¿Realmente el script falla? Desde el código, parece que solo imprime errores, pero no falla si el código de un módulo no está en el árbol. Ver [línea 375] (http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=blob;f=scripts/kconfig/streamline_config.pl;h=bccf07ddd0b67a0e2f761fd5721f274a49bf9bbb ; hb = HEAD # l375) –