เปรียบเทียบไฟล์กำหนดค่าเคอร์เนลสองไฟล์จากเปอร์สเปคทีฟของ menuconfig หรือไม่


14

ฉันมีสถานการณ์ที่ฉันมีไฟล์กำหนดค่าเคอร์เนลสองไฟล์ (สำหรับเคอร์เนลแหล่งเดียวกัน) ทั้งสองอย่างมีส่วนหนึ่งของฟังก์ชั่นที่ฉันต้องการ (ที่หนึ่ง, USB ทำงานอย่างถูกต้อง, ที่อื่น ๆ , I2C ที่สอง)

ฉันรู้ว่าความแตกต่างระหว่างสองไฟล์ปรับแต่งจากมุมมองของ menuconfig นั้นมีเพียงไม่กี่ตัวเลือกที่เลือก (แต่ไม่รู้ว่าอันไหน)

อย่างไรก็ตามเมื่อเปรียบเทียบไฟล์กำหนดค่าด้วยตนเอง (รวมอยู่ระหว่างไฟล์. config สองไฟล์) ความแตกต่างนั้นไม่สามารถระบุได้ง่าย ฉันพยายามรวมเข้าด้วยกันโดยไม่สำเร็จ ฉันแน่ใจว่าฉันจะประสบความสำเร็จในที่สุด แต่เชื่อว่ากระบวนการอาจไม่เจ็บปวดมากกว่านี้หากเปรียบเทียบไฟล์ในลักษณะที่ปรากฏในเมนู Menuconfig

สามารถทำได้และถ้าเป็นเช่นนั้นได้อย่างไร

คำตอบ:


17

ลองใช้scripts/diffconfigจากต้นกำเนิดเคอร์เนล Linux

การใช้งาน:

diffconfig config-a config-b

แสดงรายการของบรรทัดที่ถูกลบแก้ไขและเพิ่มลงในไฟล์ config-b ที่เกี่ยวข้องกับ config-a


7

มีสคริปต์ในเคอร์เนลซอร์ส

สคริปต์ / kconfig / merge_config.sh

มันจะใช้ 2 เคอร์เนล configs เป็นข้อโต้แย้ง - มันจะรวม 2 ที่ด้านบนของครั้งแรก สิ่งใดในการกำหนดค่าที่ 2 จะแทนที่การตั้งค่าแรก - แม้ว่าจะเป็นบรรทัดเช่น "# CONFIG_ ไม่ได้ตั้งค่า"

ดูhttp://processors.wiki.ti.com/index.php/Quick_start_with_3.14_linux


4

หากไฟล์ทั้งสองถูกสร้างขึ้นโดยmake menuconfigพวกเขาจะมีตัวเลือกในลำดับเดียวกันดังนั้นแบบง่าย ๆdiff(ผ่าน Meld หรือส่วนหน้าใด ๆ ที่คุณชอบ) จะให้ผลลัพธ์ที่ใช้ได้

คุณอาจได้รับสิ่งที่อ่านได้มากกว่าถ้าคุณไม่สนใจบรรทัดความคิดเห็น:

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 (การกำหนดค่าปัจจุบัน) กับการกำหนดค่าเริ่มต้นจากเคอร์เนลทรีให้ส่งออก defconfig แรกจากการกำหนดค่าปัจจุบัน:

make savedefconfig

สิ่งนี้จะส่งออกไฟล์ defconfig ซึ่งสามารถเปรียบเทียบได้ง่ายกับไฟล์การกำหนดค่าเริ่มต้นอื่น ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.