กลับไปหน้าบทความ

อ่าน 3 นาที

วีเอ็มลินุกซ์

vmlinux (Virtual Memory Linux) คือ ไฟล์ ปฏิบัติการ ที่เชื่อมโยงแบบคงที่ ซึ่งประกอบด้วย เคอร์เนลของ Linux ใน รูปแบบ ไฟล์ออบเจ็กต์รูปแบบใดรูปแบบ หนึ่ง ที่ Linux รองรับ ซึ่งรวมถึง...

วีเอ็มลินุกซ์

กระบวนการบูตเคอร์เนล Linux และการคลายไฟล์

vmlinux(Virtual Memory Linux) คือ ไฟล์ ปฏิบัติการที่เชื่อมโยงแบบคงที่ ซึ่งประกอบด้วยเคอร์เนลของ Linuxใน รูปแบบ ไฟล์ออบเจ็กต์รูปแบบใดรูปแบบ หนึ่ง ที่ Linux รองรับ ซึ่งรวมถึงExecutable and Linkable Format (ELF) และCommon Object File Format (COFF) ไฟล์นี้อาจจำเป็นสำหรับการดีบักเคอร์เนล การสร้าง ตารางสัญลักษณ์หรือการดำเนินการอื่นๆ แต่ต้องทำให้สามารถบูตได้ก่อนที่จะใช้เป็นเคอร์เนลของระบบปฏิบัติการโดยการเพิ่มส่วนหัวมัลติบูตเซกเตอร์บูตและรูทีนการตั้งค่าคือเวอร์ชันที่บีบอัดของ. vmlinuxvmlinuzvmlinux

นิรุกติศาสตร์

ตามธรรมเนียมแล้ว แพลตฟอร์ม UNIXเรียกอิมเมจเคอร์เนลว่า/unix. ด้วยการพัฒนาหน่วยความจำเสมือนเคอร์เนลที่รองรับคุณสมบัตินี้จะได้รับvmคำนำหน้า - เพื่อแยกความแตกต่าง ชื่อนี้vmlinuxเป็นการเปลี่ยนแปลงมาจากvmunixโดยvmlinuzตัวอักษรzสุดท้ายบ่งบอกว่าเป็นการบีบอัด (เช่นgzipped ) [ 1 ]

ที่ตั้ง

ตามธรรมเนียมแล้ว เคอร์เนลจะอยู่ในไดเร็กทอรีรากของลำดับชั้นของระบบไฟล์ อย่างไรก็ตาม เนื่องจากบูตโหลดเดอร์ต้องใช้ไดรเวอร์BIOS ในการเข้าถึง ฮาร์ดดิสก์ข้อจำกัดใน ระบบ i386 บาง ระบบทำให้สามารถเข้าถึงได้เพียง1024 ไซลินเดอร์แรกของฮาร์ดดิสก์ เท่านั้น

เพื่อแก้ไขปัญหานี้ ผู้จัดจำหน่ายลินุกซ์จึงสนับสนุนให้ผู้ใช้สร้างพาร์ติชันที่ส่วนต้นของไดรฟ์โดยเฉพาะสำหรับจัดเก็บไฟล์บูตโหลดเดอร์และไฟล์ที่เกี่ยวข้องกับเคอร์เนลGRUB , LILOและSYSLINUXเป็นบูตโหลดเดอร์ที่นิยมใช้กัน

ตามธรรมเนียมปฏิบัติ พาร์ติชั่นนี้จะถูกติดตั้งบนลำดับชั้นของระบบไฟล์เป็น ซึ่ง/bootต่อมาได้รับการกำหนดมาตรฐานโดยมาตรฐานลำดับชั้นของระบบไฟล์ (FHS) ซึ่งปัจจุบันกำหนดให้ภาพเคอร์เนล Linux ต้องอยู่ใน/หรือ/bootแม้ว่าจะไม่มีข้อจำกัดทางเทคนิคที่บังคับใช้ก็ตาม[ 2 ]

การบีบอัด

ตามธรรมเนียมแล้ว เมื่อสร้างอิมเมจเคอร์เนล ที่สามารถบูตได้ เคอร์เนลจะถูกบีบอัดโดยใช้gzipหรือตั้งแต่ Linux 2.6.30 [ 3 ]โดยใช้LZMAหรือbzip2 ซึ่งต้องมีส่วนย่อย สำหรับการคลายการบีบอัดขนาดเล็กมาก รวมอยู่ในอิมเมจที่ได้ ส่วนย่อยนี้จะคลายการบีบอัดโค้ดเคอร์เนล ในบางระบบจะพิมพ์จุดไปยังคอนโซลเพื่อแสดงความคืบหน้า จาก นั้นจึงดำเนินการบูตต่อไป การสนับสนุน การบีบอัด LZO [ 4 ] xz [ 5 ] LZ4 [ 6 ]และzstd [ 7 ]ถูกเพิ่มเข้ามาใน ภายหลัง

ขั้นตอนการคลายการบีบอัดนั้นแทบไม่มีผลต่อเวลาในการบูต และก่อนการพัฒนา bzImage ข้อจำกัดด้านขนาดของสถาปัตยกรรมบางอย่าง โดยเฉพาะ i386 นั้นมีมาก ทำให้การบีบอัดกลายเป็นสิ่งจำเป็น

ใน สถาปัตยกรรม SPARCไฟล์ vmlinux จะถูกบีบอัดโดยใช้gzip แบบง่าย เนื่องจาก บูตโหลดเดอร์ SILOจะคลายการบีบอัดภาพที่บีบอัดด้วย gzip อย่างโปร่งใส

ชื่อไฟล์ของอิมเมจที่ใช้บูตนั้นไม่สำคัญ แต่ระบบปฏิบัติการดิสทริบิวชันยอดนิยมหลายตัวใช้ชื่อ vmlinuz

bzImage

กายวิภาคของภาพ bzImage

เมื่อเคอร์เนล Linux พัฒนาขึ้น ขนาดของเคอร์เนลที่สร้างโดยผู้ใช้ก็เพิ่มขึ้นเกินขีดจำกัดที่กำหนดโดยสถาปัตยกรรมบางอย่าง ซึ่งมีพื้นที่จำกัดสำหรับจัดเก็บโค้ดเคอร์เนลที่บีบอัด รูปแบบ bzImage ( big zImage ) ได้รับการพัฒนาขึ้นเพื่อเอาชนะข้อจำกัดนี้โดยการแบ่งเคอร์เนลออกเป็นส่วนๆ ในพื้นที่หน่วยความจำ ที่ไม่ต่อเนื่องกัน [ 8 ]

bzImage ถูกบีบอัดโดยใช้gzipจนถึง Linux 2.6.30 [ 3 ]ซึ่งแนะนำอัลกอริทึมเพิ่มเติมแม้ว่าbzคำนำหน้าอาจบ่งชี้ว่า ใช้การบีบอัด bzip2แต่ก็ไม่ใช่เช่นนั้น[ 1 ] (แพ็คเกจ bzip2 มักจะถูกแจกจ่ายพร้อมกับเครื่องมือที่มีคำนำหน้าbzเช่นbzless, bzcat, เป็นต้น)

ไฟล์ bzImage อยู่ในรูปแบบเฉพาะ ประกอบด้วยbootsect.o+ setup.o+ misc.o+ ที่ต่อ piggy.oกัน[ 9 ]piggy.oประกอบด้วยไฟล์ vmlinux ที่บีบอัดด้วย gzip ในส่วนข้อมูล สคริปต์extract-vmlinuxที่พบscripts/ในซอร์สโค้ดของเคอร์เนลจะคลายการบีบอัดอิมเมจเคอร์เนล การแจกจ่ายบางอย่าง (เช่นRed Hatและโคลน) อาจมาพร้อมกับkernel-debuginfoRPMที่มีvmlinuxไฟล์สำหรับ RPM เคอร์เนลที่ตรงกัน และโดยทั่วไปจะติดตั้งภายใต้ /usr/lib/debug/lib/modules/$(uname -r)/vmlinuxหรือ/usr/lib/debug/lib64/modules/$(uname -r)/vmlinux

ดูเพิ่มเติม

หมายเหตุและเอกสารอ้างอิง

  1. ^ a b "คำจำกัดความของ vmlinuz" . www.linfo.org . Bellevue Linux. 29 มีนาคม 2005 . สืบค้นเมื่อ21 มิถุนายน 2015 .
  2. ^ "ส่วนที่ 3.5.2 — /boot : ไฟล์คงที่ของบูตโหลดเดอร์" FHS 2.3 2004-01-29 สืบค้นเมื่อ 2014-03-11 เคอร์เนลของระบบปฏิบัติการต้องอยู่ใน / หรือ /boot อย่างใดอย่างหนึ่ง
  3. ^ a b Linux 2.6.30 ซึ่งวางจำหน่ายเมื่อวันที่ 9 มิถุนายน พ.ศ. 2552 ได้เพิ่มการสนับสนุนการบีบอัดภาพเคอร์เนลด้วยอัลกอริธึม LZMA และ bzip2 [1]
  4. ^ Linux 2.6.33 ซึ่งวางจำหน่ายเมื่อวันที่ 24 กุมภาพันธ์ 2010 ได้เพิ่มการสนับสนุนการบีบอัดภาพเคอร์เนลด้วย LZO [2]
  5. ^ Linux 2.6.38 ซึ่งวางจำหน่ายเมื่อวันที่ 14 มีนาคม 2011 ได้เพิ่มการสนับสนุนการบีบอัดอิมเมจเคอร์เนลด้วย xz [3]
  6. ^ Linux 3.11 ซึ่งวางจำหน่ายเมื่อวันที่ 2 กันยายน 2013 ได้เพิ่มการสนับสนุนการบีบอัดอิมเมจเคอร์เนลด้วย LZ4 [4]
  7. ^ Linux 5.9 ซึ่งวางจำหน่ายเมื่อวันที่ 11 ตุลาคม 2020 ได้เพิ่มการสนับสนุนการบีบอัดอิมเมจเคอร์เนล, initrdและ initramfsด้วย zstd [5]
  8. ^ Rubini, Alessandro (มิถุนายน 1997). "การบูตเคอร์เนล" . www.linux.it . สืบค้นเมื่อ2025-08-26 .
  9. ^ Yann Droneaud (28 กันยายน 1999). "Re: การคลายการบีบอัด bzImage" . LKML (รายชื่อผู้รับจดหมาย). zImage ประกอบด้วย bootsect.o + setup.o + misc.o + piggy.o

อ่านเพิ่มเติม

  • Alavor Vasudevan (15 สิงหาคม 2546). "10. ข้อมูลไฟล์เคอร์เนล". คู่มือการใช้งานเคอร์เนลของลินุกซ์ . เก็บถาวรจากต้นฉบับเมื่อ 10 ตุลาคม 2560. เรียกดูเมื่อ11 มีนาคม 2557 .
  • Daniel Pierre Bovet (2013-01-03). "ส่วนพิเศษในไบนารี Linux" . LWN.net . ส่วนพิเศษทั้งหมดที่ปรากฏในเคอร์เนล Linux จะถูกบรรจุไว้ในส่วนใดส่วนหนึ่งที่กำหนดไว้ในส่วนหัว ELF ของ vmlinux แต่ละส่วนพิเศษมีวัตถุประสงค์เฉพาะอย่าง
  • กระบวนการบูต
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Vmlinux&oldid=1337977769 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ วีเอ็มลินุกซ์

vmlinux (Virtual Memory Linux) คือ ไฟล์ ปฏิบัติการ ที่เชื่อมโยงแบบคงที่ ซึ่งประกอบด้วย เคอร์เนลของ Linux ใน รูปแบบ ไฟล์ออบเจ็กต์รูปแบบใดรูปแบบ หนึ่ง ที่ Linux รองรับ ซึ่งรวมถึง...

นิรุกติศาสตร์

ตามธรรมเนียมแล้ว แพลตฟอร์ม UNIX เรียกอิมเมจเคอร์เนลว่า /unix .

ที่ตั้ง

ตามธรรมเนียมแล้ว เคอร์เนลจะอยู่ใน ไดเร็กทอรีราก ของลำดับชั้นของระบบไฟล์ อย่างไรก็ตาม เนื่องจาก บูตโหลดเดอร์ ต้องใช้ไดรเวอร์ BIOS ในการเข้าถึง ฮาร์ดดิสก์ ข้อจำกัดใน ระบบ i386 บาง ระบบทำให้สามารถเข้าถึงได้เพียง 1024 ไซลินเดอร์แรก ของฮาร์ดดิสก์ เท่านั้น

การบีบอัด

ตามธรรมเนียมแล้ว เมื่อสร้าง อิมเมจเคอร์เนล ที่สามารถบูตได้ เคอร์เนลจะ ถูกบีบอัด โดยใช้ gzip หรือตั้งแต่ Linux 2.6.