Menuconfig के नजरिए से दो कर्नेल कॉन्फिग फाइलों की तुलना करें?


14

मेरे पास एक ऐसी स्थिति है जिसमें मेरे पास दो कर्नेल कॉन्फिग फाइल हैं (एक ही कर्नेल स्रोत के लिए)। उन दोनों की कार्यक्षमता का एक हिस्सा है जो मुझे चाहिए (एक पर, यूएसबी सही ढंग से काम करता है, दूसरे पर, दूसरा I2C)।

मुझे पता है कि menuconfig के नजरिए से दो कॉन्फिग फाइलों में अंतर केवल कुछ चुनिंदा विकल्पों में शामिल है। (लेकिन जो नहीं जानते)

हालाँकि, जब कॉन्फ़िगर फ़ाइलों की मैन्युअल रूप से तुलना की जाती है (दो .config फ़ाइलों के बीच मेल), तो अंतर को पहचानना आसान नहीं है। मैंने सफलता के बिना उन्हें मैन्युअल रूप से मर्ज करने की कोशिश की है। मुझे यकीन है कि मैं आखिरकार सफल हो जाऊंगा, लेकिन यकीन मानिए अगर फाइल मेन्यूफेक्चर में दिखाई देती है तो फाइलों की तुलना में यह प्रक्रिया काफी ज्यादा दर्द रहित हो सकती है।

क्या यह हासिल किया जा सकता है, और यदि हां, तो कैसे?

जवाबों:


17

scripts/diffconfigलिनक्स कर्नेल स्रोत ट्री से उपयोग करने का प्रयास करें ।

उपयोग:

diffconfig config-a config-b

कॉन्फ़िगर-ए के संबंध में कॉन्फ़िगर-बी फ़ाइल में हटाए गए, संशोधित और जोड़े गए लाइनों की एक सूची दिखाता है।


7

कर्नेल स्रोत में एक स्क्रिप्ट है;

लिपियों / kconfig / merge_config.sh

यह तर्क के रूप में 2 कर्नेल कॉन्फ़िगर करेगा - यह पहले के शीर्ष पर 2 को मर्ज करेगा। 2nd config में कुछ भी पहले कॉन्फिगर को ओवरराइड करेगा - भले ही यह "# CONFIG_ सेट न हो" जैसी लाइन हो

Http://processors.wiki.ti.com/index.php/Quick_start_with_3.14_linux देखें


4

यदि दो फाइलें उत्पन्न होती हैं make menuconfig, तो उनके पास एक ही क्रम में विकल्प होंगे, इसलिए एक सरल diff(मेल्ड के माध्यम से या जो भी आपको पसंद है) एक प्रयोग करने योग्य परिणाम देगा।

यदि आप टिप्पणी लाइनों को अनदेखा करते हैं, तो आपको कुछ और पढ़ने योग्य मिल सकता है:

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

यदि किसी कारण से फाइलें उसी क्रम में नहीं हैं, तो आप उन्हें सॉर्ट कर सकते हैं। इससे संबंधित विकल्पों को दूर रखने का नकारात्मक पहलू है। फिर से, टिप्पणियों को हटा दें। commआम लाइनों को बंद करने के लिए उपयोग करें ।

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

3

आप sortतुलना करने से पहले फ़ाइलों को निगलना कर सकते हैं:

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

1

kdiff3दो कॉन्फ़िगरेशन की तुलना करने के लिए उपयोग करें ।

अगर कोई कर्नेल ट्री से कुछ डिफ़ॉल्ट कॉन्फ़िगरेशन के लिए .config (वर्तमान कॉन्फ़िगरेशन) फ़ाइल की तुलना करना चाहता है, तो पहले मौजूदा नेटवर्क से डिफ़ॉन्फ़िग निर्यात करें:

make savedefconfig

यह defconfig फ़ाइल को निर्यात करेगा, जिसे किसी भी अन्य डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल की तुलना में आसानी से किया जा सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.