เคอร์เนล linux มีขนาดเล็กได้อย่างไร?


56

เคอร์เนล 3 * แบบเสถียรธรรมดาตอนนี้ประมาณ 70 mb แต่มีการแจกแจงลินุกซ์เล็กน้อยที่ 30-10 mb พร้อมซอฟต์แวร์และสิ่งอื่น ๆ ที่เหลืออยู่ในกล่อง

เคอร์เนล linux มีขนาดเล็กใน distros เหล่านี้ได้อย่างไร การถอดโมดูลและไดรเวอร์ที่ไม่จำเป็นออกจะช่วยลดขนาดได้หรือไม่? จะทำอะไรเพื่อลดขนาดเคอร์เนล?


3
อีกทางเลือกหนึ่งคือใช้การปรับขนาดให้เหมาะสมเมื่อทำการคอมไพล์ แต่ฉันไม่แน่ใจว่าจะสามารถสร้างผลกระทบขนาดใหญ่ได้อย่างไร
AndrejaKo

5
"Linus เรียก Linux ว่า" มีขนาดใหญ่และใหญ่โต "" theregister.co.uk/2009/09/22/linus_torvalds_linux_bloated_huge
Aki

1
@AndrejaKo - มาก (ถ้าคุณมีขนาดเล็ก)
Apache

19
70 MB เป็นขนาดของแหล่งที่มา เคอร์เนลที่คอมไพล์และบีบอัดมาตรฐานอยู่ที่ประมาณ 2 MB โมดูลเช่น 10 MB
ott--

1
ใช่แน่นอนมัน 3.6 mb ในขณะที่ initramfs อยู่ที่ 21mb ใน distro ของฉัน
งงงงงง

คำตอบ:


37

ใช่. หากคุณถอดมันออก (คอมไพล์ / สร้างโมดูลเฉพาะสิ่งที่คุณต้องการ) บีบอัดเคอร์เนล (ปรับขนาดให้เหมาะสม) ... มันจะส่งผลให้เคอร์เนลขนาดเล็กดังกล่าว คุณสามารถสร้างชิ้นที่เล็กกว่านี้สำหรับระบบเป้าหมาย เหมือนที่ฉันรู้จักพีซีของฉันฉันรู้เรื่องของฉัน ดังนั้นฉันจะรวบรวมสิ่งที่ฉันต้องการ เช่นเดียวกับไดรเวอร์ SATA ของฉันเองไดรเวอร์สำหรับ USB ฯลฯ ไม่มีอะไรอีกแล้ว ไม่มีเว็บแคมไม่มีไดรฟ์ IDE เก่าไม่มีอะไร

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

(โปรดทราบว่าโมดูลจะไม่ได้รับการโหลดจนกว่าจะมีความจำเป็นมี 3 สถานะ:
[ ]- จะไม่ได้รับการรวบรวมจะไม่เป็นส่วนหนึ่งของเคอร์เนลของคุณ
[M]- จะถูกรวบรวมเป็นโมดูล
(คุณสามารถแก้ไขมันได้ หรือระบบของคุณจะโหลดอัตโนมัติเมื่อจำเป็น
ขึ้นอยู่กับระบบ userland)
[X]- มันจะถูกรวบรวมไว้ในเคอร์เนลและจะปรากฏขึ้น - เสมอ

Distros ที่มีเคอร์เนลขนาดเล็ก:


เพิ่มเพียงเล็กน้อย - [X] หมายถึงมันจะถูกรวบรวมไว้ในเคอร์เนลดังนั้นสาเหตุที่ทำให้โหลดอยู่เสมอ
ลอเรนซ์

"มือใหม่คาดหวัง" การพูดเป็นผู้เชี่ยวชาญด้านเทคโนโลยีคอมพิวเตอร์และ Linux ที่มีประสบการณ์ 20 ปี ... ฉันคาดหวังว่าสิ่งต่าง ๆ จะได้ผลเช่นกัน
Cliff Armstrong

20

การแจกจ่ายลีนุกซ์รุ่นแรกเช่นTom's Root-Boot , MuLinux , Diet-router , (หมดอายุแล้ว) LOAFและอื่น ๆ อีกมากมายตอนนี้ก็หายไปทั้งหมดติดตั้งระบบลีนุกซ์ที่ใช้งานได้ในหนึ่งหรือสองดิสก์ขนาด 1.44 MB

เคอร์เนลลินุกซ์โตขึ้น แต่อย่าลืมว่ามันเป็นแบบแยกส่วนโมดูลเคอร์เนลถูกโหลดตามต้องการ ดังนั้นจึงยังคงเป็นไปได้ที่จะสร้างการกระจาย Linux ที่มีขนาดเล็กมาก

ดู: คำแนะนำในการปรับขนาดเคอร์เนล - eLinux.org

หากคุณอ่านLinux_tiny.pdf คุณจะเห็นสิ่งนี้

  • เคอร์เนล 0.99pl15 อันเก่าแก่: Slackware 1.1.2, 1994 301K
  • Fedora Core 2 1.2M
  • SuSE 9.1 1.5M
  • 2.6.5-tiny1 การกำหนดค่าการทดสอบ: IDE, ext2, TCP, NIC 363K

11

การกำหนดค่าเริ่มต้นเคอร์เนลมีการกำหนดค่าเพื่อรองรับฮาร์ดแวร์ให้ได้มากที่สุด เคอร์เนลที่ไม่ได้สตริดพร้อมการกำหนดค่าเริ่มต้นส่งผลให้มีขนาด 1897996 kB (รวมถึงเคอร์เนล + โมดูล) เมื่อถอดไดรเวอร์และตัวเลือกที่ไม่จำเป็นออกไป (ทำไมฉันต้องใช้โมดูล HP หากฉันเป็นเจ้าของโน้ตบุ๊ค Clevo) ทำให้มีขนาด 892892 kB ซึ่งมีขนาดลดลง 53% เมื่อเทียบกับเคอร์เนลสต็อค

เมื่อติดตั้งโมดูลเคอร์เนลผนวกINSTALL_MOD_STRIP=1ตัวเลือก สิ่งนี้จะตัดสัญลักษณ์การดีบักทั้งหมดและลดขนาด 92% ให้ฉัน (จาก 892892 kB เป็น 69356 kB) หมายเหตุสิ่งนี้จะมีผลกับโมดูลที่จะติดตั้งเท่านั้นและไม่ใช่เคอร์เนล (vmlinuz):

make INSTALL_MOD_STRIP=1 modules_install

จากDocumentation / kbuild / kbuild.txt :

INSTALL_MOD_STRIP
--------------------------------------------------
INSTALL_MOD_STRIP, if defined, will cause modules to be
stripped after they are installed.  If INSTALL_MOD_STRIP is '1', then
the default option --strip-debug will be used.  Otherwise,
INSTALL_MOD_STRIP value will be used as the options to the strip command.

3
ว้าว, 1897996 kB เกือบ 2GB!
netvope

3

distros สำคัญส่วนใหญ่กำหนดค่าเมล็ดของพวกเขาด้วยการสนับสนุนฮาร์ดแวร์สูงสุดดังนั้นมันจะทำงานนอกกรอบกับคอมพิวเตอร์ส่วนใหญ่และสิ่งที่คุณเสียบในภายหลัง พวกเขายังใช้ระบบ initrd ซึ่งไม่จำเป็นในกรณีส่วนใหญ่ นอกจากนี้ยังมีตัวเลือกในการกำหนดค่าเคอร์เนลที่ทำให้กระบวนการสร้างปรับให้เหมาะสมกับขนาดและวิธีการบีบอัดที่ดีกว่า (แม้ว่าช้ากว่า) ก็สามารถเลือกได้เช่นกัน สุดท้ายหากคุณกำลังมองหาขนาดของซอร์สโค้ดเคอร์เนลโปรดทราบว่ามันยังมีการสนับสนุนสถาปัตยกรรมหลาย ๆ ตัวที่นอกเหนือจาก x86 / amd64, โปรโตคอลเครือข่าย, ระบบไฟล์และคุณสมบัติอื่น ๆ ที่คุณอาจไม่เคยใช้และสามารถ ถูกปิดการใช้งาน


1

มันค่อนข้างง่ายระบบขั้นต่ำต้องการเพียงแค่ bootloader + kernel แม้ว่ามันจะเกือบจะไร้ประโยชน์ คำสั่งส่วนใหญ่ที่ใช้ในชีวิตประจำวันเป็นตัวเลือกไบนารีสำหรับระบบเช่น sh, ls และอื่น ๆ หากคุณสนใจ internals, Linux จาก Scratch! เป็นจุดเริ่มต้นที่ดี


โปรดทราบว่า Busybox จะดูแลสิ่งต่างๆ "ส่วนใหญ่" ทุกวัน
new123456

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