Confrontare due file di configurazione del kernel dal punto di vista menuconfig?


13

Ho una situazione in cui ho due file di configurazione del kernel (per la stessa fonte del kernel). Entrambi hanno una parte delle funzionalità di cui ho bisogno (su uno, USB funziona correttamente, sull'altro, il secondo I2C).

So che le differenze tra i due file di configurazione, dal punto di vista di menuconfig, includono solo alcune opzioni selezionate. (Ma non so quali)

Tuttavia, quando i file di configurazione vengono confrontati manualmente (fusione tra due file .config), le differenze non sono semplici da identificare. Ho provato a fonderli manualmente senza successo. Sono sicuro che alla fine ci riuscirò, ma credo che il processo potrebbe essere molto più indolore se i file fossero confrontati in un modo in cui appaiono nel menuconfig.

Ciò può essere ottenuto e, in tal caso, come?

Risposte:


16

Prova a utilizzare scripts/diffconfigdall'albero dei sorgenti del kernel Linux.

Uso:

diffconfig config-a config-b

Mostra un elenco di righe rimosse, modificate e aggiunte al file config-b rispetto a config-a.



3

È possibile provare a sortimportare i file prima di confrontare:

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

3

Se i due file sono generati da make menuconfig, avranno le opzioni nello stesso ordine, quindi un semplice diff(tramite Meld o qualunque frontend ti piaccia) darà un risultato utilizzabile.

Potresti ottenere qualcosa di più leggibile se ignori le righe di commento:

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

Se per qualche motivo i file non sono nello stesso ordine, è possibile ordinarli. Questo ha il rovescio della medaglia di mettere le opzioni correlate distanti. Ancora una volta, rimuovere i commenti. Utilizzare commper eliminare le linee comuni.

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

1

Utilizzare kdiff3per confrontare due configurazioni.

Se qualcuno vuole confrontare il file .config (configurazione corrente) con una configurazione predefinita dall'albero del kernel, prima esporta defconfig dalla configurazione corrente:

make savedefconfig

Questo esporterà il file defconfig, che può essere facilmente confrontato con qualsiasi altro file di configurazione predefinito.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.