วิธีสร้างเคอร์เนลที่กำหนดเองด้วย localmodconfig ที่รองรับฮาร์ดแวร์ของหลายเครื่อง?


9

เมื่อกำหนดค่าเซิร์ฟเวอร์ให้รันงานเดียวเช่นอุปกรณ์อาจมีความจำเป็นในการสร้างเคอร์เนลที่กำหนดเอง ตัวอย่างเช่นการประหยัดพื้นที่ดิสก์

ระบบไฟล์รูท Ubuntu Core 13.10 amd64 คือการดาวน์โหลด38 MBซึ่งแพคเกจ meta "linux-image-generic" รวมถึงการขึ้นต่อกันที่จำเป็นจะดาวน์โหลดไฟล์เก็บถาวร79 MBและขนาดของ kernel-image-xyz-generic 14 MB .

สำหรับการสร้างเคอร์เนลที่ถอดจากโมดูลที่ฮาร์ดแวร์ของคุณจะไม่ใช้make localmodconfigคำสั่งเป็นเครื่องมือที่เหมาะสมสำหรับงาน อย่างไรก็ตามเครื่องเสมือนของคุณที่รันสภาพแวดล้อมการสร้างและทดสอบของคุณโหลดโมดูลที่แตกต่างจากฮาร์ดแวร์การปรับใช้เป้าหมายของคุณ และ / หรือหลังจากนั้นไม่นานฮาร์ดแวร์การปรับใช้ของคุณอาจกลายเป็น eol และใช้ฮาร์ดแวร์ที่แตกต่างกัน และในความถี่ที่การปรับปรุงเคอร์เนลถูกปล่อยออกมามันอาจยุ่งยากเกินไปที่จะสร้างเคอร์เนลแบบกำหนดเองสำหรับการกำหนดค่าฮาร์ดแวร์ที่แตกต่างกัน

วิธีการสร้างเคอร์เนล Linux ที่กำหนดเองที่ทำงานบนกล่องฮาร์ดแวร์ที่แตกต่างกันสองสามอย่างรวดเร็ว?

คำตอบ:


11

make localmodconfigคำสั่งยังคงเป็นเครื่องมือที่เหมาะสมสำหรับงาน ในความเป็นจริงการทำงานmake localmodconfigscripts/kconfig/streamline_config.pl

ไฟล์อินพุต

เมื่ออ่านstreamline_config.plซอร์สโค้ด (perl) มีคุณสมบัติที่ไม่มีเอกสารmy $lsmod_file = $ENV{'LSMOD'};ที่อนุญาตให้อินพุตไฟล์สำหรับการตรวจจับโมดูลที่โหลดแทนการส่งออกจากlsmodคำสั่ง

ซีดีสด

เนื่องจาก localmodconfig ใช้เอาต์พุตlsmodเพื่อตรวจหาโมดูลที่โหลด เราเรียกใช้ Ubuntu Live CD บนการตั้งค่าฮาร์ดแวร์ที่แตกต่างกันเปิดเทอร์มินัล ( Ctrl+ Alt+ T) เรียกใช้lsmodและบันทึกผลลัพธ์

ตัดการเชื่อมต่อเอาต์พุต

โดยเชื่อมโยงlsmodไฟล์ที่ส่งออกในขณะที่ปอกสายหัวต่อเนื่องคุณได้อย่างรวดเร็วสามารถสร้างแฟ้มการป้อนข้อมูลที่ครอบคลุมทุกโมดูลเคอร์เนลของคุณจำเป็นต้องใช้ เราชอบที่จะตรวจสอบรายการโมดูลด้วยมือและใช้สูตรคู่มือเพิ่มเติม:

  1. $ cd linux-3.11.0/
    หรือไปที่ไดเร็กตอรี่ที่คุณจะรันคำสั่งสร้าง

  2. $ lsmod > lsmod.txt
    สร้างไฟล์ข้อความด้วยโมดูลที่โหลดของคุณ

  3. $ nano lsmod.txt
    จะเปิดตัวแก้ไขข้อความนาโนแน่นอนคุณสามารถใช้โปรแกรมแก้ไขที่คุณชื่นชอบ

  4. ผนวกโมดูลที่คุณต้องการที่ไม่ได้มีไว้ที่ด้านล่างของไฟล์นี้ (ดูตัวอย่างที่ด้านล่างของ anwer นี้) และบันทึกเมื่อคุณพร้อม
    หมายเหตุ: ใช้ช่องว่างที่ไม่ใช่แท็บเพื่อจับคู่ตำแหน่งตัวสร้างคอลัมน์

  5. $ make LSMOD="lsmod.txt" localmodconfig
    สิ่งนี้จะบอก localmodconfig ให้ใช้ไฟล์ lsmod.txt ของคุณเป็นอินพุตสำหรับการตรวจจับโมดูลที่โหลด

ในส่วนที่เกี่ยวกับ Steven Rostedt - ผู้เขียน steamline_config.pl - สำหรับการแนะนำสัญกรณ์สั้นลงในขั้นตอนที่ 5


ตัวอย่างสำหรับสิ่งที่จะผนวกและไม่ผนวกกับ lsmod.txt (ขั้นตอนที่ 4):

เนื่องจากเมนบอร์ด Intel D33217CK มีเซ็นเซอร์ความร้อนของ Intel ที่เราต้องการอ่านเราจึงผนวกบรรทัดเหล่านี้:

x86_pkg_temp_thermal   13810  0
intel_powerclamp       14239  0

แต่เราไม่ต้องการเรียกใช้เครื่องเสมือนบนฮาร์ดแวร์นี้นั่นคือเหตุผลที่เราข้ามสายเหล่านี้:

kvm_intel             128218  0
kvm                   364766  1 kvm_intel

มีอะแดปเตอร์อีเธอร์เน็ต Gibabit ethernet ของ Apple (Broadcom) ที่เชื่อมต่อกับพอร์ต Thunderbolt ดังนั้นเราจึงผนวก:

tg3                   152066  0
ptp                    18156  1 tg3
pps_core               18546  1 ptp

เราคิดว่าเราไม่จำเป็นต้องมีการมิเรอร์ระดับเสียงและดังนั้นอย่าเพิ่ม:

dm_mirror              21715  0
dm_region_hash         15984  1 dm_mirror
dm_log                 18072  2 dm_region_hash,dm_mirror

และเราก็ไม่ต้องการเอาท์พุทกราฟิก (ข้อความจะทำบนเซิร์ฟเวอร์หัวขาด) ดังนั้นเราจึงไม่รวม:

i915                  589697  3
i2c_algo_bit           13197  1 i915
drm_kms_helper         46867  1 i915
drm                   242354  4 i915,drm_kms_helper

สำหรับเครื่องอื่นเราต้องการไดร์เวอร์อีเทอร์เน็ต Realtek นี้ตามปกติ:

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