
หากคุณเพิ่งตั้งค่าการกำหนดค่าดูอัลบูตด้วย Windows และ Linux คุณอาจพบปัญหาเดียวกันกับที่ฉันเคยทำ: Windows ไม่แสดงเป็นตัวเลือกในเมนู GRUB ฉันจะแสดงให้คุณเห็นว่าฉันแก้ไขมันได้อย่างไร (และเหตุผลทางเทคนิคเบื้องหลัง)
เพื่อให้เจาะจงมากขึ้น ฉันติดตั้ง CachyOS บนไดรฟ์ที่แยกจากไดรฟ์ Windows 11 ของฉัน ฉันติดตั้งลีนุกซ์รุ่นต่างๆ บนไดรฟ์นี้หลายครั้งแล้ว และโดยทั่วไปแล้วเมนูบู๊ตก็ใช้งานได้ ตัวเลือกการบูต Windows 11 ของฉันจะปรากฏขึ้นโดยไม่ต้องใช้ความพยายามใด ๆ จากฉัน ในกรณีนี้ ต้องใช้ขั้นตอนเพิ่มเติมสองสามขั้นตอนเพื่อให้ใช้งานได้
หากเมื่อคุณเปิดเครื่อง PC คุณไม่เห็นเมนูการบูตเลย คุณจะต้องเรียนรู้วิธีทำให้เมนู GRUB ปรากฏขึ้นก่อน
ทำไม Windows จึงไม่แสดงใน GRUB
ปรากฎว่าการติดตั้ง GRUB ในปัจจุบันมักมาพร้อมกับการปิดการใช้งาน os-prober และนั่นคือสาเหตุที่ Windows ไม่ปรากฏขึ้น หากคุณไม่ทราบ os-prober เป็นแพ็คเกจที่ช่วยให้ GRUB สามารถระบุระบบปฏิบัติการอื่นที่ติดตั้งบนพีซีของคุณโดยอัตโนมัติ เมื่อปิดใช้งาน GRUB จะไม่สามารถระบุ Windows ได้หากไม่มีการแทรกแซงด้วยตนเอง
เหตุผลนี้คือความไม่ไว้วางใจในแพ็คเกจ os-prober ผู้พัฒนาบรรจุภัณฑ์ GRUB ได้เลือกที่จะปิดการใช้งาน os-prober เพื่อเป็นการป้องกันความปลอดภัยย้อนกลับไปในปี 2021 เมื่อ Julian Andres Klode ผู้พัฒนา Canonical ได้สรุปเหตุผลในการปิดการใช้งาน os-prober ใน Ubuntu พวกเขากล่าวว่า “os-prober นั้นไม่ปลอดภัยโดยธรรมชาติ เนื่องจากมันจะเมาต์พาร์ติชั่นทั้งหมดบนดิสก์ของคุณโดยใช้ grub-mount เพื่อตรวจสอบระบบปฏิบัติการอื่น ๆ” แม้ว่าจะมีการสร้างแพตช์ตั้งแต่นั้นมา แต่หลายคนก็ไม่ไว้วางใจมัน
คุณสามารถเปิดใช้งาน os-prober อีกครั้งได้อย่างง่ายดายหากต้องการ ไม่ว่าคุณจะควรหรือไม่ควร ขึ้นอยู่กับสถานการณ์ของคุณ ฉันไม่ได้อยู่ในธุรกิจการให้คำแนะนำด้านความปลอดภัยทางไซเบอร์โดยไม่ทราบรูปแบบภัยคุกคามของคุณเป็นอย่างน้อย
สำหรับตัวฉันเอง ฉันรู้สึกสบายใจที่จะเปิดใช้งาน os-prober อีกครั้ง เนื่องจากการวิจัยของฉันบอกฉันว่าข้อกังวลส่วนใหญ่อยู่ที่วิธีแก้ปัญหา Secure Boot และฉันได้ปิดการใช้งาน Secure Boot บนพีซีของฉันแล้ว มันขึ้นอยู่กับคุณอีกครั้งที่จะตัดสินใจว่าเส้นทางที่ปลอดภัยที่สุดคืออะไร ด้วยเหตุนี้ ฉันจะแสดงสองตัวเลือกที่แตกต่างกันให้คุณดู โดยหนึ่งในนั้นหลีกเลี่ยง os-prober โดยสิ้นเชิง

ที่เกี่ยวข้อง
วิธีกำหนดการตั้งค่า GRUB2 Boot Loader
เลือกระบบปฏิบัติการเริ่มต้นและแม้แต่แสดงภาพพื้นหลัง
ตัวเลือกง่าย ๆ: เปิดใช้งาน os-prober
หากคุณรู้สึกมั่นใจในการเปิดใช้งาน os-prober เนื่องจากผลกระทบด้านความปลอดภัย คุณสามารถทำได้โดยแก้ไขการกำหนดค่า GRUB เริ่มต้นของคุณ โดยทั่วไป คุณสามารถค้นหาไฟล์การกำหนดค่าได้ที่ /etc/default/grub ดังนั้นการแก้ไขจะต้องเปิดไฟล์ด้วยโปรแกรมแก้ไขข้อความที่คุณเลือกและมีสิทธิ์การเข้าถึงระดับผู้ดูแลระบบ หากต้องการแก้ไขด้วยนาโน ฉันใช้คำสั่งนี้:
sudo nano /etc/default/grub
เลื่อนดูไฟล์จนกว่าคุณจะพบบรรทัดที่อ่านว่า #GRUB\_DISABLE\_OS\_PROBER=false ยกเลิกการแสดงความคิดเห็นโดยการลบสัญลักษณ์ # นั่นคือทั้งหมดที่คุณต้องทำเพื่อเปิดใช้งาน os-prober นอกเหนือจากการบันทึกไฟล์ ในนาโน คุณทำได้โดยกด Ctrl+o ตามด้วย Enter เพื่อยืนยันชื่อไฟล์ จากนั้นกด Ctrl+x เพื่อออกจากนาโน อย่าลืมอัปเดต GRUB เพราะฉันจะอธิบายในภายหลัง
ตัวเลือกที่ปลอดภัยกว่า: เพิ่ม Windows เป็นรายการเมนูด้วยตนเอง
อีกทางเลือกหนึ่งที่ปลอดภัยกว่าแต่เกี่ยวข้องมากกว่านั้นอีกเล็กน้อยคือการข้ามการเปิดใช้งาน os-prober และเพิ่ม Windows ลงในเมนูบูตของ GRUB ด้วยตัวเองแทน
ในการดำเนินการนี้ คุณต้องทราบก่อนว่าระบบ Linux ของคุณตั้งตำแหน่งพาร์ติชัน EFI ของการติดตั้ง Windows ไว้ที่ใด คุณสามารถค้นหาได้โดยการรันคำสั่งต่อไปนี้ ซึ่งแสดงรายการดิสก์ทั้งหมดและวัตถุประสงค์:
sudo dfisk -l

ฉันเห็นว่าในไดรฟ์ Windows ของฉันมีอุปกรณ์ชื่อ “ระบบ EFI” ซึ่งอยู่ที่ /dev/nvme0n1p1 ฉันจะคัดลอกที่อยู่นั้นและเตรียมให้พร้อมสำหรับคำสั่ง blkid ต่อไปนี้ ซึ่งจะเปิดเผย UUID ของอุปกรณ์ ซึ่งเราต้องการสำหรับรายการบูตแบบกำหนดเอง:
sudo blkid /dev/nvme0n1p1

มองหาค่า UUID ในเครื่องหมายคำพูดแล้วจดบันทึกไว้ จากนั้น เราจะแก้ไขไฟล์ 40\_custom ของ GRUB ซึ่งช่วยให้เราสามารถเพิ่มรายการบูตแบบกำหนดเองให้กับ GRUB ได้ ฉันใช้นาโนเพื่อทำสิ่งนี้ แต่คุณสามารถใช้โปรแกรมแก้ไขข้อความที่คุณต้องการได้
sudo nano /etc/grub.d/40_custom
วางในบล็อคโค้ดต่อไปนี้ จากนั้นแทนที่ your-Windows-EFI-partition-UUID ด้วย UUID ที่คุณพบ
menuentry "Windows" --class windows --class os {
insmod ntfs
search --no-floppy --set=root --fs-uuid your-Windows-EFI-partition-UUID
ntldr /bootmgr}
โปรดทราบว่าคุณสามารถเปลี่ยนข้อความภายในเครื่องหมายคำพูดตาม “เมนู” ด้วยสิ่งที่คุณต้องการให้รายการบูต Windows ของคุณปรากฏเป็น
หลังจากทำการเปลี่ยนแปลงไฟล์การกำหนดค่าเริ่มต้นของ GRUB หรือเพิ่มรายการบูตแบบกำหนดเองแล้ว อย่าลืมสร้างการกำหนดค่า GRUB ของคุณใหม่ กระบวนการนี้คือสิ่งที่ทำให้การเปลี่ยนแปลงของคุณมีผลจริงๆ พูดตามตรง ฉันลืมเรื่องนี้ไปเองตอนที่ปิดการใช้งาน os-prober และสับสนเมื่อ Windows ไม่ปรากฏขึ้นหลังจากรีบูตเครื่อง
เพื่อให้สิ่งต่าง ๆ ง่ายขึ้น distros บางตัวได้กำหนดค่านามแฝงไว้ล่วงหน้าสำหรับการอัพเดต GRUB เช่น update-grub คุณสามารถลองรันมันก่อนได้ (เหมือน sudo) แต่หากไม่ได้ผล คุณสามารถอัพเดตด้วยตนเองได้ตลอดเวลาด้วยคำสั่งนี้:
sudo grub-mkconfig -o /boot/grub/grub.cfg
รอให้การสร้างใหม่เสร็จสิ้น จากนั้นลองรีบูตเครื่อง คุณควรเห็น Windows รวมถึงระบบปฏิบัติการอื่น ๆ ที่คุณติดตั้งไว้ในเมนูบูต GRUB
พิจารณาเปลี่ยน GRUB เพื่อหลีกเลี่ยงปัญหา
หากคุณกังวลเกี่ยวกับช่องโหว่ของ os-prober และคุณไม่ต้องการจัดการกับการแก้ไขเมนู GRUB ด้วยตนเอง ฉันขอแนะนำให้พิจารณาตัวจัดการการบูตอื่น
ตัวอย่างเช่น คุณสามารถแทนที่ GRUB ด้วย systemd-boot แม้ว่าการรองรับ BIOS รุ่นเก่า (ซึ่งต่างจาก UEFI) จะไม่เพียงพอก็ตาม คุณอาจลองใช้ Clover Bootloader ซึ่งเดิมออกแบบมาสำหรับ Hackintoshes และรองรับทั้ง UEFI และ BIOS อีกตัวเลือกหนึ่งที่จะทำให้คุณได้รับประสบการณ์ที่คล้ายกับตัวจัดการการบูตของ macOS คือ rEFInd
*️⃣ ลิงค์ที่มา:
วิธีทำให้เมนู GRUB ของคุณปรากฏขึ้น นักพัฒนา Canonical Julian Andres Klode สรุปเหตุผลในการปิดการใช้งาน os-prober ปิดการใช้งาน Secure Boot วิธีกำหนดค่าการตั้งค่า GRUB2 Boot Loader แสดงรายการดิสก์ทั้งหมดและวัตถุประสงค์ นามแฝง systemd-boot , Clover Bootloader , rEFInd ,