¿Comparar dos archivos de configuración del núcleo desde la perspectiva menuconfig?


13

Tengo una situación en la que tengo dos archivos de configuración del núcleo (para la misma fuente del núcleo). Ambos tienen una parte de la funcionalidad que necesito (en uno, USB funciona correctamente, en otro, el segundo I2C).

Sé que las diferencias entre los dos archivos de configuración, desde la perspectiva de menuconfig, incluyen solo algunas opciones seleccionadas. (Pero no sé cuáles)

Sin embargo, cuando los archivos de configuración se comparan manualmente (se combinan entre dos archivos .config), las diferencias no son fáciles de identificar. He intentado fusionarlos manualmente sin éxito. Estoy seguro de que finalmente lo lograré, pero creo que el proceso podría ser mucho más sencillo si los archivos se comparan de la forma en que aparecen en la configuración del menú.

¿Se puede lograr esto y, de ser así, cómo?

Respuestas:


16

Intente usar scripts/diffconfigdesde el árbol fuente del kernel de Linux.

Uso:

diffconfig config-a config-b

Muestra una lista de líneas eliminadas, modificadas y agregadas al archivo config-b con respecto a config-a.



3

Puede probar sortlos archivos antes de comparar:

meld <(sort config-a) <(sort config-b)

3

Si los dos archivos son generados por make menuconfig, tendrán las opciones en el mismo orden, por lo que un simple diff(a través de Meld o cualquier interfaz que desee) dará un resultado útil.

Puede obtener algo más legible si ignora las líneas de comentarios:

diff -I '^#' old.config new.config

Si por alguna razón los archivos no están en el mismo orden, puede ordenarlos. Esto tiene el inconveniente de poner las opciones relacionadas muy separadas. Nuevamente, elimine los comentarios. Use commpara quitar las líneas comunes.

comm -3 <(<old.config grep '^[^#]' | sort) <(<new.config grep '^[^#]' | sort)

1

Use kdiff3para comparar dos configuraciones.

Si alguien quiere comparar el archivo .config (configuración actual) con alguna configuración predeterminada del árbol de kernel, primero exporte defconfig desde la configuración actual:

make savedefconfig

Esto exportará el archivo defconfig, que se puede comparar fácilmente con cualquier otro archivo de configuración predeterminado.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.