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

อ่าน 11 นาที

จีนู กรุบ

GNU GRUB (ชื่อย่อของ GNU GRand Unified Bootloader หรือเรียกสั้นๆ ว่า GRUB ) เป็น แพ็ก เกจบูตโหลดเดอร์ จาก โครงการ GNU GRUB เป็นการ ใช้งานอ้างอิง ของ ข้อกำหนด Multiboot...

จีนู กรุบ

จีนู กรุบ
ผู้เขียนต้นฉบับเอริช โบเลย์น
นักพัฒนาโครงการ GNU
ปล่อยพ.ศ. 2538 ( 1995 )
เวอร์ชันเสถียร
2.14 [ 1 ] แก้ไขข้อมูลนี้บนวิกิดาต้า / 14 มกราคม 2026
เขียนเป็นการประกอบ , C [ 2 ]
ระบบปฏิบัติการLinux , GNU/Hurd , macOS , BSD , ( Solaris / Illumos (พอร์ต x86)) และWindows (ผ่าน chainloading)
แพลตฟอร์มIA-32 , x86-64 , IA-64 , ARM , PowerPC , Power ISA , s390x , MIPS , RISC-V , LongArchและSPARC
มีจำหน่ายในภาษาอังกฤษและอื่นๆ
พิมพ์บูตโหลดเดอร์
ใบอนุญาต2007: GPL-3.0 หรือเวอร์ชันที่ใหม่กว่า[ a ] ​​[ 4 ] 1999: GPL-2.0 หรือเวอร์ชันที่ใหม่กว่า[ b ]
เว็บไซต์www.gnu.org/software/grub/แก้ไขข้อมูลนี้ได้ที่วิกิดาต้า
ที่เก็บข้อมูล
  • gitlab .freedesktop .org /gnu-grub /grub

GNU GRUB (ชื่อย่อของGNU GRand Unified Bootloaderหรือเรียกสั้นๆ ว่าGRUB ) เป็น แพ็ก เกจบูตโหลดเดอร์จากโครงการ GNU GRUB เป็นการใช้งานอ้างอิงของข้อกำหนด Multiboot SpecificationของFree Software Foundationซึ่งช่วยให้ผู้ใช้สามารถเลือกบูตระบบปฏิบัติการหลายระบบที่ติดตั้งอยู่ในคอมพิวเตอร์ที่ตั้งค่าไว้สำหรับการบูตหลายระบบ หรือเลือกการกำหนด ค่าเคอร์เนลเฉพาะที่มีอยู่ในพาร์ติชันของระบบปฏิบัติการนั้นๆ

GNU GRUB ได้รับการพัฒนามาจากแพ็กเกจที่เรียกว่าGrand Unified Bootloader (ซึ่งเป็นการเล่นคำจากGrand Unified Theory [ 5 ] ) โดยส่วนใหญ่จะใช้สำหรับระบบ ที่คล้าย Unix

การดำเนินการ

GRUB2 บน ฮาร์ดไดรฟ์ที่แบ่งพาร์ติชั่นแบบ MBR ; ขั้นตอนที่ 1 ( boot.img) สามารถเขียนลงในเซกเตอร์บูตของพาร์ติชั่นใดพาร์ติชั่น หนึ่ง ได้ เช่นกัน
GRUB2 บน ฮาร์ดไดรฟ์ที่แบ่งพาร์ติชั่นแบบ GPTบูตด้วยเฟิร์มแวร์ BIOSหรือโหมดความเข้ากันได้ของ UEFI (CSM)

กำลังบูต

เมื่อเปิดเครื่องคอมพิวเตอร์ที่เข้ากันได้กับ IBM PC ที่ มี BIOS BIOS จะค้นหาอุปกรณ์บูตหลัก (โดยปกติคือฮาร์ดดิสก์ของคอมพิวเตอร์) และเรียกใช้โปรแกรม บูตสแตรป เริ่มต้น จากมาสเตอร์บูตเรคคอร์ด (MBR) MBR คือเซกเตอร์ แรก ของฮาร์ดดิสก์ โปรแกรมบูตสแตรปนี้ต้องมีขนาดเล็กเพราะต้องพอดีกับเซกเตอร์เดียว เป็นเวลานานแล้วที่ขนาดของเซกเตอร์คือ 512 ไบต์ ตั้งแต่ปี 2009 มีฮาร์ดดิสก์ที่มีขนาดเซกเตอร์ 4096 ไบต์ เรียกว่า ดิสก์ Advanced Formatแต่ ณ เดือนตุลาคม 2013 ฮาร์ดดิสก์ดังกล่าวยังคงเข้าถึงได้ในเซกเตอร์ขนาด 512 ไบต์ โดยใช้ การ จำลอง512e [ 6 ]ตารางพาร์ติชัน MBR แบบดั้งเดิมรองรับพาร์ติชันได้สูงสุดสี่พาร์ติชันและใช้พื้นที่ 64 ไบต์เมื่อรวมกัน เมื่อรวมกับ ลายเซ็นดิสก์เสริม(สี่ไบต์) และการประทับเวลาของดิสก์ (หกไบต์) จะเหลือพื้นที่ระหว่าง 434 ถึง 446 ไบต์สำหรับรหัสเครื่องของบูตโหลดเดอร์ แม้ว่าพื้นที่ขนาดเล็กเช่นนี้จะเพียงพอสำหรับบูตโหลดเดอร์ที่ง่ายมาก[ 7 ]แต่ก็ไม่ใหญ่พอที่จะบรรจุบูตโหลดเดอร์ที่รองรับระบบไฟล์ ที่ซับซ้อนและหลายระบบ การเลือกตัวเลือกการบูตแบบเมนู ฯลฯ ดังนั้นบูตโหลดเดอร์ที่มีขนาดใหญ่กว่าจึงถูกแบ่งออกเป็นส่วนๆ โดยส่วนที่เล็กที่สุดจะพอดีกับ MBR ในขณะที่ส่วนที่ใหญ่กว่าหนึ่งส่วนหรือมากกว่านั้นจะถูกจัดเก็บไว้ในตำแหน่งอื่นๆ เช่น เซกเตอร์ว่างระหว่าง MBR และพาร์ติชันแรก จากนั้นรหัสใน MBR จะทำเพียงแค่เริ่มต้นส่วนที่สองเท่านั้น

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

แนวทางหนึ่งที่เป็นไปได้สำหรับบูตโหลดเดอร์คือการโหลดอิมเมจเคอร์เนลโดยการเข้าถึงเซกเตอร์ของฮาร์ดดิสก์โดยตรงโดยไม่ต้องเข้าใจระบบไฟล์พื้นฐาน โดยปกติแล้ว จะต้องมี การอ้างอิง เพิ่มเติมอีกระดับหนึ่ง ในรูปแบบของแผนที่หรือไฟล์แผนที่ซึ่งเป็นไฟล์เสริมที่มีรายการของเซกเตอร์ทางกายภาพที่ถูกครอบครองโดยอิมเมจเคอร์เนล แผนที่ดังกล่าวจะต้องได้รับการอัปเดตทุกครั้งที่อิมเมจเคอร์เนลเปลี่ยนตำแหน่งทางกายภาพบนดิสก์ เนื่องจากการติดตั้งอิมเมจเคอร์เนลใหม่ การจัดเรียงข้อมูลระบบไฟล์ ฯลฯ นอกจากนี้ ในกรณีที่แผนที่เปลี่ยนตำแหน่งทางกายภาพ ตำแหน่งของแผนที่เหล่านั้นจะต้องได้รับการอัปเดตภายในโค้ด MBR ของบูตโหลดเดอร์ เพื่อให้กลไกการอ้างอิงเซกเตอร์ยังคงทำงานต่อไป ซึ่งไม่เพียงแต่ยุ่งยากเท่านั้น แต่ยังทำให้ระบบต้องได้รับการซ่อมแซมด้วยตนเองในกรณีที่เกิดข้อผิดพลาดระหว่างการอัปเดตระบบ[ 8 ]

อีกแนวทางหนึ่งคือการทำให้บูตโหลดเดอร์รับรู้ถึงระบบไฟล์พื้นฐาน เพื่อให้ภาพเคอร์เนลได้รับการกำหนดค่าและเข้าถึงโดยใช้เส้นทางไฟล์ จริง วิธีนี้ต้องใช้บูตโหลดเดอร์ที่มีไดรเวอร์สำหรับแต่ละระบบไฟล์ที่รองรับ เพื่อให้บูตโหลดเดอร์สามารถเข้าใจและเข้าถึงได้ แนวทางนี้ช่วยขจัดความจำเป็นในการกำหนดตำแหน่งของเซกเตอร์ฮาร์ดดิสก์แบบตายตัวและการมีอยู่ของไฟล์แผนที่ และไม่จำเป็นต้องอัปเดต MBR หลังจากเพิ่มหรือย้ายภาพเคอร์เนล การกำหนดค่าของบูตโหลดเดอร์จะถูกจัดเก็บไว้ในไฟล์ปกติ ซึ่งสามารถเข้าถึงได้ในลักษณะที่รับรู้ถึงระบบไฟล์เพื่อรับการกำหนดค่าบูตก่อนการบูตภาพเคอร์เนลจริง ดังนั้นจึงมีสิ่งที่ผิดพลาดน้อยลงในระหว่างการอัปเดตระบบ ข้อเสียคือบูตโหลดเดอร์ดังกล่าวมีขนาดใหญ่และซับซ้อนกว่า[ 8 ]

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

โดยทั่วไปแล้ว GRUB มีสองเวอร์ชันหลักที่ใช้กัน: GRUB เวอร์ชัน 0 หรือที่เรียกว่าGRUB legacyนั้นพบได้เฉพาะในระบบปฏิบัติการ Linux รุ่นเก่าๆ เท่านั้น ส่วนGRUB 2 นั้นถูกเขียนขึ้นใหม่ทั้งหมดและมีจุดประสงค์เพื่อทดแทนเวอร์ชันก่อนหน้า และปัจจุบันถูกใช้งานโดยระบบปฏิบัติการ Linux ส่วนใหญ่

เวอร์ชัน 0 (GRUB รุ่นเก่า)

เมนู GRUB แบบดั้งเดิม (ทำงานเป็นส่วนหนึ่งของ การติดตั้ง Ubuntu 9.04)

GRUB 0.x ใช้แนวทางสองขั้นตอน โดยปกติแล้วมาสเตอร์บูตเรคคอร์ด (MBR) จะมี GRUB ขั้นตอนที่ 1หรืออาจมีการใช้งาน MBR มาตรฐานซึ่งโหลด GRUB ขั้นตอนที่ 1จากเซกเตอร์บูตของพาร์ติชัน ที่ใช้งานอยู่ เนื่องจากขนาดของเซกเตอร์บูตมีขนาดเล็ก (512 ไบต์) ขั้นตอนที่ 1จึงทำได้เพียงโหลด GRUB ขั้นตอนถัดไปโดยการโหลดเซกเตอร์ดิสก์เพียงไม่กี่เซกเตอร์จากตำแหน่งคงที่ใกล้กับจุดเริ่มต้นของดิสก์ (ภายใน 1024 ไซลินเดอร์แรก)

ขั้นตอนที่ 1สามารถโหลดขั้นตอนที่ 2ได้โดยตรง แต่โดยปกติแล้วจะตั้งค่าให้โหลดขั้นตอนที่ 1.5 ซึ่งอยู่ในพื้นที่ 30 KiBแรกของฮาร์ดดิสก์ถัดจาก MBR และก่อนพาร์ติชันแรก ในกรณีที่พื้นที่นี้ไม่ว่าง (ตารางพาร์ติชันผิดปกติ ไดรเวอร์ดิสก์พิเศษ ดิสก์GPTหรือLVM ) การติดตั้งขั้นตอนที่ 1.5จะล้มเหลว อิมเมจ ขั้นตอนที่ 1.5มีไดรเวอร์ระบบไฟล์ ทำให้สามารถโหลดขั้นตอนที่ 2 ได้โดยตรง จากตำแหน่งที่ทราบใดๆ ในระบบไฟล์ ตัวอย่างเช่น จาก/boot/grubขั้นตอนที่ 2จะโหลดไฟล์การกำหนดค่าเริ่มต้นและโมดูลอื่นๆ ที่จำเป็น

เวอร์ชัน 2 (GRUB 2)

GRUB 2 – การเปรียบเทียบพาร์ติชั่น MBR กับ GPT และลำดับการบูต (ระบบที่ใช้เฟิร์มแวร์ BIOS)

การเริ่มต้นระบบบนระบบที่ใช้เฟิร์มแวร์BIOS

  • ดูภาพประกอบในภาพสุดท้ายทางด้านขวา[ 9 ]
  • boot.img( ขั้นตอนที่ 1 ) จะถูกเขียนลงใน 440 ไบต์แรกของMaster Boot Record (MBR boot code ในเซกเตอร์ 0) หรืออาจเขียนลงในเซกเตอร์บูตของพาร์ติชัน (PBR) ก็ได้ โดยจะระบุแอดเดรส ด้วยแอดเดรส LBAdiskboot.img 64 บิตหมายเลขเซกเตอร์จริงจะถูกเขียนโดย. คือเซกเตอร์แรกของ ที่มีจุดประสงค์เดียวคือการโหลดส่วนที่เหลือของที่ระบุด้วยหมายเลขเซกเตอร์ LBA ซึ่งเขียนโดย. grub-installdiskboot.imgcore.imgcore.imggrub-install
    • ในดิสก์ที่แบ่งพาร์ติชั่นแบบ MBR core.img( ขั้นตอนที่ 1.5 ) จะถูกจัดเก็บไว้ในเซกเตอร์ว่าง (ถ้ามี) ระหว่าง MBR และพาร์ติชั่นแรก ระบบปฏิบัติการรุ่นใหม่ๆ แนะนำให้เว้นช่องว่าง 1 MiB ไว้สำหรับการจัดเรียง (2047 เซกเตอร์ขนาด 512 ไบต์ หรือ 255 เซกเตอร์ขนาด 4 KiB) ช่องว่างนี้เคยมีขนาด 62 เซกเตอร์ (31 KiB) เพื่อเป็นการเตือนถึงข้อจำกัดจำนวนเซกเตอร์ของ การกำหนดแอดเดรสแบบ Cylinder-Head-Sector (C/H/S) ที่BIOS ใช้ ก่อนปี 1996 ดังนั้นจึงcore.imgออกแบบให้มีขนาดเล็กกว่า 32 KiB
    • บนดิสก์ที่แบ่งพาร์ติชั่นแบบ GPT ข้อมูลcore.imgจะถูกเขียนลงในพาร์ติชั่นเฉพาะของตัวเอง ซึ่งจะต้องมีการกำหนดค่า "BIOS_grub" ไว้ ต้องไม่ทำการฟอร์แมตและมีขนาดเล็กสุดเพียง 1 MiB ก็ได้
  • ขั้นตอนที่ 2:core.imgโหลด/boot/grub/i386-pc/normal.modจากพาร์ติชันที่กำหนดค่าไว้grub-installหากดัชนีพาร์ติชันมีการเปลี่ยนแปลง GRUB จะไม่สามารถค้นหาพาร์ติชันนั้นได้normal.modและจะแสดงข้อความแจ้งเตือน GRUB Rescue ให้ผู้ใช้เห็น
  • ขึ้นอยู่กับวิธีการติดตั้ง GRUB2 ไฟล์ดัง/boot/grub/กล่าวอาจอยู่ใน พาร์ติชัน รูทของระบบปฏิบัติการ Linux หรืออาจอยู่ในพาร์ติชัน/boot แยกต่างหาก
  • หลังจากโหลด normal.mod เสร็จแล้ว:normal.modจะทำการวิเคราะห์/boot/grub/grub.cfgไฟล์ โหลดโมดูลเพิ่มเติม (เช่น สำหรับส่วนติดต่อผู้ใช้แบบกราฟิกและการสนับสนุนระบบไฟล์) และแสดงเมนู

เริ่มต้นระบบบนระบบที่ใช้เฟิร์มแวร์UEFI

  • /efi/<distro>/grubx64.efi(สำหรับ ระบบ x64 UEFI) จะถูกติดตั้งเป็นไฟล์ในพาร์ติชั่นระบบ EFIและบูตโดยเฟิร์มแวร์โดยตรง โดยไม่ต้องอยู่boot.imgในเซกเตอร์ MBR 0 ไฟล์นี้คล้ายกับ stage1 และ stage1.5
  • /boot/grub/สามารถติดตั้งได้ในพาร์ติชั่นระบบ EFI หรือ พาร์ติชั่น /boot แยก ต่างหาก เป็นต้น
  • สำหรับระบบ UEFI x64 ไฟล์ stage2 คือ/boot/grub/x86_64-efi/normal.modไฟล์และ/boot/grub/ไฟล์ อื่นๆ

หลังจากเริ่มต้นระบบ

GRUB นำเสนอเมนูที่ผู้ใช้สามารถเลือกระบบปฏิบัติการ (OS) ที่พบโดย grub-install ได้ GRUB สามารถกำหนดค่าให้โหลดระบบปฏิบัติการที่ระบุโดยอัตโนมัติหลังจากหมดเวลาที่ผู้ใช้กำหนด หากตั้งค่าหมดเวลาเป็นศูนย์วินาที การกดปุ่มค้างไว้⇧ Shiftหรือใน GRUB เวอร์ชันใหม่บางเวอร์ชันที่โหลดโดยใช้ UEFI การกดปุ่มอย่างรวดเร็วในขณะที่คอมพิวเตอร์กำลังบูตจะทำให้สามารถเข้าถึงเมนูบูตได้[ 10 ]Esc

ในเมนูเลือกการติดตั้งระบบปฏิบัติการ GRUB ยอมรับคำสั่งสองสามคำสั่งดังนี้:

  • โดยการกดปุ่มนี้คุณสามารถแก้ไขพารามิเตอร์เคอร์เนลของรายการเมนูที่เลือกก่อนที่ระบบปฏิบัติการจะเริ่มทำงานเหตุผลที่ต้องทำเช่นนี้ใน GRUB (เช่น ไม่แก้ไขพารามิเตอร์ในระบบที่บูตแล้ว) อาจเป็นกรณีฉุกเฉิน เช่น ระบบบูตไม่สำเร็จ การใช้บรรทัดพารามิเตอร์เคอร์เนลทำให้สามารถระบุโมดูลที่จะถูกปิดใช้งาน (แบล็คลิสต์) สำหรับเคอร์เนลได้ ซึ่งอาจจำเป็นหากโมดูลเคอร์เนลเฉพาะนั้นเสียหายและทำให้บูตไม่ขึ้น ตัวอย่างเช่น ในการแบล็คลิสต์โมดูลเคอร์เนลคุณสามารถเพิ่มต่อท้ายพารามิเตอร์เคอร์เนลได้envidia-currentmodprobe.blacklist=nvidia-current
  • เมื่อกดปุ่มผู้ใช้จะเข้าสู่บรรทัดคำสั่ง GRUB บรรทัดคำสั่ง GRUB มีลักษณะคล้ายกับ GNU Bash แต่ใช้งานเฉพาะฟังก์ชันการแก้ไขบรรทัดและคำสั่งเฉพาะของ GRUB เท่านั้น[ 11 ]c

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

การระบุพาร์ติชัน (วิธีแก้ปัญหาโดยใช้ UUID)

คอมพิวเตอร์เครื่องหนึ่งสามารถมีฮาร์ดดิสก์เชื่อมต่ออยู่หลายตัว โดยสามารถระบุฮาร์ดดิสก์เหล่านั้นได้ผ่านพอร์ต SATA ในแต่ละครั้งที่คอมพิวเตอร์ทำการ POSTฮาร์ดดิสก์ที่เชื่อมต่อกับพอร์ตบนเมนบอร์ดเฉพาะเจาะจงอาจได้รับการกำหนดตัวระบุเดียวกัน ตัวอย่างเช่นhd0, hd1, …แต่ถ้าหากความสม่ำเสมอเช่นนั้นไม่สามารถรับประกันได้ล่ะ? จะเกิดอะไรขึ้นถ้าลำดับของฮาร์ดดิสก์ที่เชื่อมต่อเปลี่ยนไปในแต่ละครั้งที่เปิดเครื่อง? จะเกิดอะไรขึ้นถ้าฮาร์ดดิสก์ตัวหนึ่งถูกเชื่อมต่อกับคอมพิวเตอร์เครื่องอื่น?

โดยการเข้าlsสู่คอนโซลกู้คืน GRUB (ใช้งานได้หลังจากโหลดเสร็จแล้วcore.img) หรือคอนโซล GRUB (ใช้งานได้หลังจากโหลดเสร็จแล้วnormal.mod) คุณจะได้รับรายการฮาร์ดดิสก์และพาร์ติชันทั้งหมดที่มีอยู่ ตัวอย่างเช่นls (hd0,5)/จะแสดงหมายเลขที่สามารถกำหนดให้กับฮาร์ดดิสก์และพาร์ติชันจริงได้

เนื่องจากไม่สามารถรับประกันได้ว่าการhd0"กำหนดหมายเลขฮาร์ดดิสก์ตามหมายเลขอุปกรณ์จะมีความสม่ำเสมอ GNU GRUB จึงสามารถใช้ตัวระบุที่ไม่ซ้ำกันทั่วโลก (UUID) เพื่อระบุพาร์ติชัน (ซึ่งก็คืออินสแตนซ์ของระบบไฟล์นั่นเอง)

ระบบไฟล์ ext2, ext3, ext4 และ xfs ใช้ UUID เพื่อระบุอินสแตนซ์แต่ละตัวอย่างไม่ซ้ำกัน UUID จะถูกสร้างขึ้นเมื่อทำการฟอร์แมตพาร์ติชัน UUID เป็นส่วนหนึ่งของระบบไฟล์และถูกเขียนลงในsuperblockการดำเนินการใดๆ นอกเหนือจากการฟอร์แมตควรปล่อยให้ UUID ไม่เปลี่ยนแปลง อย่างไรก็ตาม สามารถเปลี่ยน UUID หรือทำสำเนาได้โดยใช้คำสั่ง ddเพื่อโคลนพาร์ติชันทั้งหมด

ไฟล์นี้grub.cfgใช้สำหรับกำหนดค่า GRUB โดยมีคำสั่งที่จะถูกเรียกใช้ทุกครั้งที่เริ่มต้นระบบ หากไม่มีไฟล์ที่ถูกต้องและมีอยู่grub.cfgGRUB จะแสดงข้อความแจ้งให้ป้อนค่า

ไฟล์ ramdisk ขั้นต่ำสุดgrub.cfgอาจประกอบด้วยคำสั่งเพียงสองคำสั่งต่อไปนี้ (ดูตัวอย่างinitial ramdisk ):

linux (hd0,1)/kernel/vmlinuz-3.20.1-4 ro # ใช้ไฟล์ชื่อ "vmlinuz-…" ที่อยู่ในไดเร็กทอรี /kernel บนพาร์ติชันแรกของฮาร์ดดิสก์ตัวแรกเป็นอิมเมจเคอร์เนล Linux initrd (hd0,1)/boot/initrd.img-3.20.1-4 # ใช้ไฟล์ชื่อ "initrd.img–…" ที่อยู่ในไดเร็กทอรี /boot บนพาร์ติชั่นแรกของฮาร์ดดิสก์ตัวแรกเป็น initial ramdisk 

ผู้ที่พิถีพิถันgrub.cfgจะอธิบายเมนูที่จะนำเสนอ ใช้สีหลายสี และอาจระบุภาพพื้นหลังด้วย

ประวัติศาสตร์

GRUB ได้รับการพัฒนาครั้งแรกโดย Erich Boleyn ซึ่งเป็นส่วนหนึ่งของงานในการบูตระบบปฏิบัติการGNU / Hurdที่พัฒนาโดยFree Software Foundation [ 12 ]ในปี 1999 Gordon Matzigkeit และ Yoshinori K. Okuji ได้ทำให้ GRUB เป็นแพ็กเกจซอฟต์แวร์อย่างเป็นทางการของโครงการ GNUและเปิดกระบวนการพัฒนาสู่สาธารณะ[ 12 ]ภายในปี 2014 การแจกจ่าย Linux ส่วนใหญ่ได้นำ GNU GRUB 2 มาใช้

การพัฒนา

GRUB เวอร์ชัน 0 (หรือที่รู้จักกันในชื่อ "GRUB Legacy") ไม่ได้รับการพัฒนาต่อแล้วและกำลังถูกยกเลิก[ 13 ]นักพัฒนา GNU GRUB ได้เปลี่ยนไปมุ่งเน้นที่ GRUB 2 [ 14 ]ซึ่งเป็นการเขียนใหม่ทั้งหมดโดยมีเป้าหมายรวมถึงการทำให้ GNU GRUB สะอาดขึ้น แข็งแกร่งขึ้น พกพาสะดวกขึ้น และมีประสิทธิภาพมากขึ้น GRUB 2 เริ่มต้นภายใต้ชื่อPUPA PUPA ได้รับการสนับสนุนจากสำนักงานส่งเสริมเทคโนโลยีสารสนเทศ (IPA) ในญี่ปุ่น PUPA ถูกรวมเข้ากับการพัฒนา GRUB 2 ในช่วงประมาณปี 2002 เมื่อ GRUB เวอร์ชัน 0.9x ถูกเปลี่ยนชื่อเป็น GRUB Legacy

เป้าหมายบางส่วนของโครงการ GRUB 2 ได้แก่ การสนับสนุนแพลตฟอร์ม ที่ไม่ใช่ x86 การทำให้เป็นสากลและการแปล การใช้ตัวอักษรที่ไม่ใช่ ASCII โมดูลแบบไดนามิกการจัดการหน่วยความจำภาษา สคริปต์ ขนาดเล็กการย้ายโค้ดเฉพาะแพลตฟอร์ม (x86) ไปยังโมดูลเฉพาะแพลตฟอร์ม และเฟรมเวิร์กเชิงวัตถุ GNU GRUB เวอร์ชัน 2.00 ได้รับการเผยแพร่อย่างเป็นทางการเมื่อวันที่ 26 มิถุนายน 2012 [ 15 ] [ 16 ]

ระบบปฏิบัติการ Linuxที่ใช้กันอย่างแพร่หลายที่สุด 3 ระบบใช้ GRUB 2 เป็นตัวโหลดบูตหลัก[ 17 ] [ 18 ] [ 19 ] Ubuntuนำมาใช้เป็นตัวโหลดบูตเริ่มต้นในเวอร์ชัน 9.10 ในเดือนตุลาคม 2009 [ 20 ] Fedoraก็ทำตามเช่นกันใน Fedora 16 ที่วางจำหน่ายในเดือนพฤศจิกายน 2011 [ 21 ] OpenSUSEใช้ GRUB 2 เป็นตัวโหลดบูตเริ่มต้นในเวอร์ชัน 12.2 ที่วางจำหน่ายในเดือนกันยายน 2012 [ 22 ] Solarisก็ใช้ GRUB 2 บนแพลตฟอร์ม x86 ในเวอร์ชัน Solaris 11.1 เช่นกัน[ 23 ] Buildrootยังใช้ GNU GRUB สำหรับเป้าหมาย x86และx86_64 ด้วย

ในช่วงปลายปี 2558 ช่องโหว่การกดปุ่ม backspace 28 ครั้งเพื่อข้ามรหัสผ่านเข้าสู่ระบบถูกค้นพบและแก้ไขอย่างรวดเร็ว[ 24 ] [ 25 ]

ในเดือนมีนาคม พ.ศ. 2569 การพัฒนาได้ย้ายไปที่freedesktop.org [ 26 ] [ 27 ]

ตัวแปร

GNU GRUB เป็นซอฟต์แวร์โอเพนซอร์สดังนั้นจึงมีการสร้างเวอร์ชันต่างๆ ขึ้นมามากมาย บางเวอร์ชันที่น่าสนใจแต่ยังไม่ได้ถูกรวมเข้ากับเวอร์ชันหลักของ GRUB ได้แก่:

  • OpenSolarisประกอบด้วย GRUB Legacy ที่ได้รับการดัดแปลงซึ่งรองรับ Solaris VTOC slices การเลือกเคอร์เนล 64 บิตอัตโนมัติ และการบูตจากZFS (พร้อมการบีบอัดและสภาพแวดล้อมการบูตหลายแบบ) [ 28 ] [ 29 ]
  • Google Summer of Code 2008 มีโครงการสนับสนุน GRUB รุ่นเก่าให้บูตจากพาร์ติชันที่ฟอร์แมตด้วยext4 [ 30 ]
  • โครงการSyllableได้สร้าง GRUB เวอร์ชันที่แก้ไขแล้วเพื่อโหลดระบบจากระบบไฟล์ AtheOS [ 31 ]
  • TrustedGRUBขยาย GRUB โดยการนำการตรวจสอบความสมบูรณ์ของระบบและความปลอดภัยของกระบวนการบูตมาใช้ โดยใช้Trusted Platform Module (TPM) [ 32 ]
  • Intel BIOS Implementation Test Suite (BITS) มีสภาพแวดล้อม GRUB สำหรับทดสอบ BIOS และโดยเฉพาะอย่างยิ่งการเริ่มต้นใช้งานโปรเซสเซอร์ ฮาร์ดแวร์ และเทคโนโลยีของ Intel BITS รองรับการเขียนสคริปต์ผ่าน Python และมี API ของ Python เพื่อเข้าถึงฟังก์ชันระดับต่ำต่างๆ ของแพลตฟอร์มฮาร์ดแวร์ รวมถึง ACPI, รีจิสเตอร์ CPU และชิปเซ็ต, PCI และ PCI Express [ 33 ]
  • GRUB4DOS เป็นเวอร์ชันดัดแปลงของ GRUB ที่ปรับปรุงประสบการณ์การติดตั้งบน DOS และMicrosoft Windowsโดยการรวมทุกอย่างยกเว้นการกำหนดค่า GRLDR ไว้ในไฟล์รูปภาพเดียว สามารถโหลดได้โดยตรงจาก DOS หรือโดยNTLDRหรือWindows Boot Manager [ 34 ] [ 35 ] GRUB4DOSอยู่ระหว่างการพัฒนาอย่างต่อเนื่อง และในปี 2021 รองรับ UEFI แล้ว[ 36 ]

สาธารณูปโภค

เครื่องมือการกำหนดค่า GRUB

StartUp-Manager คือโปรแกรมที่ใช้ในการกำหนดค่า GRUB

เครื่องมือการตั้งค่าที่ใช้โดยการแจกจ่ายต่างๆ มักจะมีโมดูลสำหรับการตั้งค่า GRUB ตัวอย่างเช่นYaST2บนSUSE Linuxและ การแจกจ่าย openSUSEและAnacondaบนFedora / RHEL StartUp-Manager และ GRUB Customizer เป็นโปรแกรมแก้ไขการกำหนดค่าแบบกราฟิกสำหรับการแจกจ่ายที่ใช้ Debian เป็นพื้นฐาน การพัฒนา StartUp-Manager หยุดลงเมื่อวันที่ 6 พฤษภาคม 2011 หลังจากที่นักพัฒนาหลักอ้างเหตุผลส่วนตัวที่ไม่สามารถพัฒนาโปรแกรมต่อไปได้[ 37 ] GRUB Customizer ยังมีให้ใช้งานสำหรับการแจกจ่ายที่ใช้ Arch เป็นพื้นฐานด้วย

สำหรับ GRUB 2 มีโมดูลควบคุม KDE [ 38 ] [ 39 ]

GRLDR ICE เป็นเครื่องมือขนาดเล็กสำหรับแก้ไขการกำหนดค่าเริ่มต้นของไฟล์ grldr สำหรับ GRUB4DOS [ 40 ]

ยูทิลิตี้ซ่อมบูท

Boot-Repairเป็นเครื่องมือแบบกราฟิกที่ใช้งานง่ายสำหรับกู้คืนปัญหาที่เกี่ยวข้องกับการบูตเครื่องบ่อยครั้งของ GRUB และ บูตโหลดเดอร์ ของ Microsoft Windowsแอปพลิเคชันนี้อยู่ภายใต้ลิขสิทธิ์ GNU GPL Boot-Repair สามารถซ่อมแซม GRUB บนระบบปฏิบัติการ Linux หลายรุ่น รวมถึงแต่ไม่จำกัดเพียง Debian, Ubuntu, Mint , Fedora, openSUSE และArch Linux

GRUB Customizer

โปรแกรมติดตั้งสำหรับ Windows

Grub2Winเป็นซอฟต์แวร์โอเพนซอร์สสำหรับ Windows ช่วยให้ GNU GRUB สามารถบูตจากไดเร็กทอรีของ Windows ได้ โปรแกรมติดตั้งจะติดตั้ง GNU GRUB เวอร์ชัน 2.12 ลงในพาร์ติชั่น NTFS จากนั้นจะใช้แอปพลิเคชัน GUI ของ Windows ในการปรับแต่งเมนูบูต GRUB ธีม ลำดับการบูต UEFI สคริปต์ ฯลฯ รองรับสคริปต์และคำสั่ง GNU GRUB ทั้งหมดสำหรับทั้งระบบ UEFI และระบบเดิม Grub2Win สามารถกำหนดค่า GRUB สำหรับการบูตหลายระบบของ Windows, Ubuntu, openSUSE, Fedora และ Linux ดิสทริบิวชันอื่นๆ อีกมากมาย สามารถใช้งานได้ฟรีภายใต้ใบ อนุญาต GNU GPLที่SourceForge

ตัวจัดการบูตทางเลือก

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

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

  • rEFInd – โปรแกรมจัดการการบูตแบบกราฟิกสไตล์ Macintosh สำหรับคอมพิวเตอร์ที่ใช้ UEFI เท่านั้น (ไม่รองรับ BIOS)
  • CloverEFI – โปรแกรมจัดการบูตแบบกราฟิกสไตล์ Macintosh สำหรับคอมพิวเตอร์ที่ใช้ BIOS และ UEFI มันจำลอง UEFI ด้วยDUET ที่ได้รับการดัดแปลงอย่างมาก จากโครงการ TianoCore และต้องการพาร์ติชั่นที่ฟอร์แมตแบบ FAT แม้แต่ในระบบ BIOS ข้อดีคือ มีไดรเวอร์ระบบไฟล์พื้นฐานอยู่ในเซกเตอร์บูตของพาร์ติชั่น ทำให้หลีกเลี่ยงความเปราะบางของขั้นตอนที่สองหรือสาม และข้อความแจ้งเตือน GRUB Rescue ที่เป็นที่รู้จักกันดี ส่วนติดต่อผู้ใช้ดูคล้ายกับ rEFInd: ทั้งสองสืบทอดมาจากโปรแกรมจัดการบูตrEFIt ที่ถูกยกเลิกไป แล้ว

ทางเลือกอื่นที่ไม่ใช้ภาพ:

  • systemd-boot – ตัวจัดการการบูตแบบเบา สำหรับ UEFIเท่านั้น พร้อมเมนูเลือก OS แบบข้อความ

ดูเพิ่มเติม

หมายเหตุ

  1. ^ GPL-3.0 หรือเวอร์ชันที่ใหม่กว่า ตั้งแต่วันที่ 21 กรกฎาคม พ.ศ. 2550 [ 3 ]
  2. ^ลิขสิทธิ์ GPL-2.0 หรือเวอร์ชันที่ใหม่กว่า ตั้งแต่ปี 1999 จนถึงวันที่ 2 กรกฎาคม 2007
  • เว็บไซต์อย่างเป็นทางการแก้ไขข้อมูลนี้ได้ที่วิกิดาต้า

วิธีการใช้งานและการแก้ไขปัญหา

วิกิของระบบปฏิบัติการต่างๆ มีวิธีแก้ปัญหาทั่วไปและวิธีการตั้งค่าแบบกำหนดเองมากมาย:

เอกสารประกอบ

  • คู่มือ GRUB – เอกสารที่ละเอียดที่สุด รวมถึงคำสั่งทั้งหมด

บทความเบื้องต้น

รายละเอียดทางเทคนิค

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=GNU_GRUB&oldid=1354351366#GRUB_2 "

สรุปเนื้อหา

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

ข้อมูลสำคัญเกี่ยวกับ จีนู กรุบ

GNU GRUB (ชื่อย่อของ GNU GRand Unified Bootloader หรือเรียกสั้นๆ ว่า GRUB ) เป็น แพ็ก เกจบูตโหลดเดอร์ จาก โครงการ GNU GRUB เป็นการ ใช้งานอ้างอิง ของ ข้อกำหนด Multiboot...

การดำเนินการ

GRUB2 บน ฮาร์ดไดรฟ์ที่แบ่งพาร์ติชั่นแบบ MBR ; ขั้นตอนที่ 1 ( boot.img ) สามารถเขียนลงใน เซกเตอร์บูตของพาร์ติชั่นใดพาร์ติชั่น หนึ่ง ได้ เช่นกัน GRUB2 บน ฮาร์ดไดรฟ์ที่แบ่งพาร์ติชั่นแบบ GPT บูตด้วย เฟิร์มแวร์ BIOS หรือ โหมดความเข้ากันได้ของ UEFI (CSM)

กำลังบูต

เมื่อเปิดเครื่องคอมพิวเตอร์ ที่เข้ากันได้กับ IBM PC ที่ มี BIOS BIOS จะค้นหาอุปกรณ์บูตหลัก (โดยปกติคือฮาร์ดดิสก์ของคอมพิวเตอร์) และเรียกใช้โปรแกรม บูตสแตรป เริ่มต้น จาก มาสเตอร์บูตเรคคอร์ด (MBR) MBR คือเซ กเตอร์ แรก ของฮาร์ดดิสก์...

เวอร์ชัน 0 (GRUB รุ่นเก่า)

GRUB 0.x ใช้แนวทางสองขั้นตอน โดยปกติแล้วมาสเตอร์บูตเรคคอร์ด (MBR) จะมี GRUB ขั้นตอนที่ 1 หรืออาจมีการใช้งาน MBR มาตรฐานซึ่ง โหลด GRUB ขั้นตอนที่ 1 จาก เซกเตอร์บูตของพาร์ติชัน ที่ใช้งานอยู่ เนื่องจากขนาดของเซกเตอร์บูตมีขนาดเล็ก (512 ไบต์) ขั้นตอนที่ 1...