Compare dois arquivos de configuração do kernel da perspectiva menuconfig?


13

Eu tenho uma situação em que tenho dois arquivos de configuração do kernel (para a mesma fonte do kernel). Ambos têm uma parte da funcionalidade que eu preciso (por um lado, o USB funciona corretamente, por outro, o segundo I2C).

Eu sei que as diferenças entre os dois arquivos de configuração, da perspectiva do menuconfig, incluem apenas algumas opções selecionadas. (Mas não sei quais)

No entanto, quando os arquivos de configuração são comparados manualmente (fusão entre dois arquivos .config), as diferenças não são simples de identificar. Eu tentei mesclá-los manualmente sem sucesso. Tenho certeza de que acabarei conseguindo, mas acredito que o processo poderá ser muito mais simples se os arquivos forem comparados da maneira que aparecem no menu de configuração.

Isso pode ser alcançado e, em caso afirmativo, como?

Respostas:


16

Tente usar a scripts/diffconfigpartir da árvore de fontes do kernel do Linux.

Uso:

diffconfig config-a config-b

Mostra uma lista de linhas removidas, modificadas e adicionadas ao arquivo config-b com relação a config-a.



3

Você pode tentar sortos arquivos antes de comparar:

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

3

Se os dois arquivos forem gerados por make menuconfig, eles terão as opções na mesma ordem; portanto, um simples diff(via Meld ou qualquer outro frontend que você queira) dará um resultado útil.

Você pode obter algo mais legível se ignorar as linhas de comentário:

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

Se, por algum motivo, os arquivos não estiverem na mesma ordem, você poderá classificá-los. Isso tem a desvantagem de diferenciar as opções relacionadas. Mais uma vez, remova os comentários. Use commpara retirar as linhas comuns.

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

1

Use kdiff3para comparar duas configurações.

Se alguém quiser comparar o arquivo .config (configuração atual) com alguma configuração padrão da árvore do kernel, primeiro exporte o defconfig da configuração atual:

make savedefconfig

Isso exportará o arquivo defconfig, que pode ser facilmente comparado a qualquer outro arquivo de configuração padrão.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.