# plantilla del .config al compilar un kernel con menuconfig

## essau

hola gentooza,

hoy, al compilar el nuevo kernel 3.17 me ha sorprendido (gratamente, eso es cierto) que al hacer el make menuconfig no me carga una configuración limpia del kernel, yo pensaba que la tomaba del directorio de la arquitectura adecuada en el archivo de las fuentes del kernel. Lo curioso es que editando la configuración de partida en el menuconfig, veo que es la personalizada por mí en anteriores kernels instalados, pues está configurada la tarjeta ethernet, la wifi, así como la configuración de sonido ALSA para intel o incluso los algoritmos cipher criptográficos del kernel.

Yo no he sido consciente de guardar una configuración de menuconfin general para el sistema, sí lo hago para cada kernel que compilo en su directorio de fuentes en /usr/src/nombre-kernel mediante un archivo .config (que es el que carga por defecto a partir de la primera vez). Incluso guardo un .config-01 .config-02, etc, para tener control de versiones compiladas.

Mi pregunta es:

¿de donde saca Gentoo la plantilla de mi menu de configuración personalizado al instalar un nuevo kernel?, ya que veo que recuerda la configuración adecuada de anteriores núcleos.

Gracias de antemano.

Un saludo.

----------

## esteban_conde

Si te aparece /proc/config.gz entonces es que has habilitado al kernel actual para que lo guarde ahí.

No puedo asegurarte que de ahí salga la configuración que comentas pero tiene toda la pinta.

----------

## quilosaq

Hasta la version 3.14.14 el .config por defecto sale, como tu dices, de las propias fuentes del kernel.

Puede que, aunque hayas instalado las nuevas fuentes, no hayas actualizado el enlace /usr/src/linux (eselect kernel) y te hayas posicionado en tus fuentes antiguas. Comprueba que estas en las nuevas fuentes con 

```
cd /usr/src/linux && make kernelversion
```

----------

## essau

hola, gracias por contestar,

en cuanto a /proc/config.gz no tengo ese archivo, y además me parece un sitio un poco raro /proc para aguardar una plantilla del .config para make.

y en cuanto al enlace simbólico /usr/src/linux sí que lo cambio siempre mediante eselect antes de compilar un nuevo kernel. Es necesario además cambiarlo, pues como genero la initramfs mediante genkernel: 

genkernel --install initramfs

este necesita siempre saber mediante el enlace qué fuentes son las que utilizar.

Compilando con genkernel sí que tiene este una configuración de salida, aquí:

/usr/share/genkernel/arch/x86_64/kernel-config

y a partir de la segunda vez aquí:

/etc/kernels/kernel-config_nombre-del-kernel

pero sin usar genkernel, tan sólo com make, sigo sin saber de dónde saca el menuconfig la configuración guardada correcta.

 :Question: 

----------

## esteban_conde

 *essau wrote:*   

> en cuanto a /proc/config.gz no tengo ese archivo, y además me parece un sitio un poco raro /proc para aguardar una plantilla del .config para make. 

 

Pues bien no voy a demostrártelo ya que voy a tardar lo mismo que tu en encontrarlo en las opciones del kernel, a mi si me aparece y además me parece /proc el sitio más adecuado debido a que ahí se guarda al vuelo toda la información de tu sistema y se borra cada vez que se apaga el ordenador ya que si no fuese así al iniciar con otro kernel habría dualidades que el sistema no podría resolver, tal y como digo en el post anterior hay que configurar el kernel para que lo haga.

Por otro lado cuando tengas esa opción activada en el kernel podrás hacer cosas como "zcat /prog/config.gz >/usr/src/linux/.config" dejo a tu imaginación para que sirve esa orden.

----------

## essau

muchas gracias Esteban,

disculpa mi ignorancia pero sólo llevo un mes con Gentoo, precisamente por eso os pregunto aquí para aprender de quienes sabéis mucho más que yo. No entendía qué tenía que ver /proc/ pero ahora empiezo a verlo con lo que tú me dices.

Tengo que investigar lo que me cuentas para ver como y cuando se crea /proc/config.gz de manera que pueda utilizarlo como plantilla un nuevo kernel. Tal vez se haga al emerger un nuevo kernel y crear su directorio en /usr/src/

Muchas gracias de nuevo y perdona una vez más mi ignorancia. Pero aprendo rápido.   :Wink: 

Soy un linuxero quisquilloso pues no me gusta hacer cosas que no entiendo, lo típico de consultar en un foro y copiar y pegar en consola, así no se aprende. Quiero entender cada cosa que hago, por eso, tras Ubuntu, Debian y Arch, he terminado llegando a Gentoo.

Un saludo.

----------

## gringo

 *Quote:*   

>  me parece un sitio un poco raro /proc para aguardar una plantilla del .config para make. 

 

desde luego, make no va a leer ese archivo. Que yo sepa este archivo es simplemente para que root tenga un acceso rápido a la configuración del kernel en ejecución.

y si, que esté en /proc es absurdo. Supongo que habrá algún motivo por el cuál esté /proc pero su sitio supongo que sería /sys.

 *Quote:*   

> sigo sin saber de dónde saca el menuconfig la configuración guardada correcta. 

 

no sé exactamente como funciona, nunca me he parado a mirarlo, pero si es cierto que los scripts que vienen en las fuentes del kernel hacen una configuración mínima en base a la información que obtienen del kernel que está en ejecución y en base a los módulos que tiene cargados ( y disponibles) el kernel en ejecución. Supongo que en caso de que no encuentre nada útil en su primera ejecución se lanza simplemente silentoldconfig.

dicho esto, esta configuración inicial es muy básica y creo que no te servirá para que el kernel cargue así sin mas.

saluetes

----------

## essau

gracias,

yo tampoco sé de donde lo saca pero el caso es que el kernel nuevo recupera de alguna manera, tanto lo que carga directamente el kernel como los módulos, lo cual, hay que reconocer, es algo muy bien hecho.

----------

## esteban_conde

 *gringo· wrote:*   

> Supongo que habrá algún motivo por el cuál esté /proc pero su sitio supongo que sería /sys.
> 
> 

 

gringo recuerda cuando si querias tener un directorio /sys habia que crearlo, además sin profundizar demasiado creo que sys se crea también en el arranque o al menos su contenido, ahora que estamos con esta discusión investigaré arrancado desde otra partición para ver cuantos directorios se llenan en el arranque.

----------

## esteban_conde

Confirmado que hay varios directorios que se llenan en el arranque con los valores que obtienen.

Ni que decir tiene a la vista del copy/paste que vacían al apagar.

 *Quote:*   

> localhost esteban # mount /dev/sda7 montar
> 
> localhost esteban # cd montar
> 
> localhost montar # ls
> ...

 

Esa particion en su día era una copia de la que estoy y sigue siendo operativa.

----------

## Stolz

Para que el kernel guarde la configuración hay que activar "General setup > Kernel .config support". Con eso activado y ejecutando el script /usr/src/linux/scripts/extract-ikconfig puedes extraer la configuración. Lo que no puedo confirmar es si así es como el kernel está obteniendo la configuración.

Si además de la opción anterior también activas la que aparece justo debajo "Enable access to .config through /proc/config.gz" puedes obtener la config de /proc con los siguientes comandos

```
modprobe configs

zcat /proc/config.gz
```

essau, si eres nuevo te recomiendo que leas http://wiki.gentoo.org/wiki/Kernel/Upgrade/es , especialmente la parte de "make oldconfig". Esto no es cosa de Gentoo sino genérico de todos los kernels. Dicho comando te permite importar una configuración antigua y además de pregunta por todas las opciones nuevas del nuevo kernel. Ideal para mantenerse al día de los cambios.

----------

## essau

muchas gracias Stolz,

parece que ahora estoy mucho más cerca de comprender en profundidad esto. Había leído la documentación de la que me hablas sobre Kenel/Actualización, el problema es que últimamente me he leído TODA la ducumentación es español que hay en el Handbook (y parte de la que está en inglés) y claro, una cosa es leer y otra recordar y asimilar todo. De hecho soy un poco psicópata de la documentación y la descargo, ordeno y archivo para tener acceso a ella de manera más fácil. En cualquier caso esto es muy esclarecedor:

**************************************************************************************

    En el sistema de ficheros procfs si la opción del núcleo Enable access to .config through /proc/config.gz se activó en su núcleo actual:

 root # zcat /proc/config.gz > /usr/src/linux/.config

    En el directorio /boot si instaló allí su fichero de configuración:

root # cp /boot/config-3.3.8-gentoo /usr/src/linux/.config

    En el directorio del núcleo que actualmente está corriendo:

root # cp /usr/src/linux-3.3.8-gentoo/.config /usr/src/linux/

******************************************************************************************************

tres sitios donde está la configuración del kernel que está corriendo, y de alguno de ellos la tomará make al instalar un kernel nuevo.

Muchas gracias a todos.

----------

## gringo

 *esteban_conde wrote:*   

>  gringo recuerda cuando si querias tener un directorio /sys habia que crearlo, además sin profundizar demasiado creo que sys se crea también en el arranque o al menos su contenido, ahora que estamos con esta discusión investigaré arrancado desde otra partición para ver cuantos directorios se llenan en el arranque.

 

no entiendo que me quieres decir : /sys es un directorio creado dinámicamente por el kernel al igual que /proc. 

Solo digo que a mi entender el mejor sitio para la configuración del kernel sería en /sys y ahi  tb. se generaría automáticamente con la carga del sistema, no hay que crear nada.

saluetes

----------

## esteban_conde

 *grigo wrote:*   

> Solo digo que a mi entender el mejor sitio para la configuración del kernel sería en /sys y ahi tb. se generaría automáticamente con la carga del sistema, no hay que crear nada.
> 
> 

 

 Posiblemente esté equivocado pero de un tiempo a esta parte /sys se crea desde el stage3 antes eso no era así el sistema funcionaba sin necesidad de ese directorio solamente para algunas cosas se recomendaba crearlo y basándome en eso como /proc siempre ha existido al menos desde que estoy con linux pienso que  debido a esto los desarrolladores han optado por esa solución en vez de por la otra.

  Tal y como digo arriba posiblemente.

----------

## essau

hola,

acabo de compilar el nuevo kernel 3.17.1.r1  activando en el menuconfig las opciones que dijo Stolz:

General setup > Kernel .config support

Enable access to .config through /proc/config.gz

y ahí está el famoso archivo /proc/config.gz del que hablaba esteban_conde

ahora sí.    :Razz: 

en cualquier caso, antes eso no estaba activado, ni se creaba el /proc/config.gz y aún así, de algún lado se copiaba mi config anterior al compilar un nuevo kernel, eso sigue siendo un misterio. 

Pero gracias a los dos, he aprendido un poco más de los entresijos de Gentoo.

Seguiré dando la tabarra   :Wink: 

Saludos.

----------

## papu

yo no tengo General setup > Kernel .config support, ya que prefiero copiar a mano la configuración anterior del kernel que se guarda en /boot automaticamente  con  make install.

mis pasos:

sudo cp /boot/config-X.XX.X-gentoo .config

sudo make oldconfig 

sudo make -j5 && sudo make modules_install && sudo make install

https://tinyurl.com/ayekds5

utiliza make nconfig en lugar de menuconfig quizás  te guste más como me paso a mi   :Wink: 

----------

