แก้ Grub ให้เลือกบูตตรง OS ที่ต้องการ
posted on 02 Jul 2008 22:28 by unlimitez in -Ubuntu-ตอนนี้มีเครื่องโน้ตบุ้คตัวหนึ่งซึ่งมีทั้ง Windows และ Debian อยู่ในตัวเดียวกัน. ที่นี้ไปๆมาๆโน้ตบุ้คตัวนี้กลับได้ใช้ Windows มากกว่าลินุกซ์แต่เวลาเปิดเครื่องเข้า Grub ที่ Debian ติดตั้งให้มันจะไปไฮไลท์ตรงลินุกซ์ทุกทีทำให้ต้องเลื่อนลูกศรไปบูต Windows เองหรือไม่ยิ่งร้ายกว่านั้นกดไม่ทัน timeout ทำให้เครื่องบูตลินุกซ์ต้องรีบูึตใหม่อีก. เลยอยากแก้ Grub ให้มันเลือกบูต Windows โดยปริยายแทนที่จะเป็นลินุกซ์.
ไฟล์ปรับแต่งของ Grub อยู่ที่ /boot/grub/menu.lst เป็นไฟล์ที่แสดงหน้าจอเมนูนั่นแหละ. ส่วนตรงที่ให้เลือกค่า default ก็คือบรรทัดที่ขึ้นต้นว่า default. ในนั้นจะใช้เป็น
default 0
เลข 0 หมายถึงรายการ (เอ็นทรี) แรกในรายการระบบปฏิบัติการ. ตัวอย่างเช่นมีรายการ OS อยู่สามตัว, เป็นลินุกซ์ 2, วินโดวส์ 1.
title Debian GNU/Linux, kernel 2.6.11-1-686 root (hd0,1) kernel /boot/vmlinuz-2.6.11-1-686 root=/dev/hda2 ro initrd /boot/initrd.img-2.6.11-1-686 savedefault boot title Debian GNU/Linux, kernel 2.6.11-1-686 (recovery mode) root (hd0,1) kernel /boot/vmlinuz-2.6.11-1-686 root=/dev/hda2 ro single initrd /boot/initrd.img-2.6.11-1-686 savedefault boot title Microsoft Windows XP Professional rootnoverify (hd0,0) makeactive savedefault chainloader +1
Grub ก็จะเลือก Debian GNU/Linux, kernel 2.6.11-1-686 ให้บูตโดยปริยาย. ที่นี้ถ้าต้องให้มันเลือก Windows XP ก็เปลี่ยนค่าของ default ให้เป็น 2. แต่เรื่องมันไม่จบเท่านั้นเพราะใน Debian ถ้าเพิ่ม kernel image หลายๆเวอร์ชันด้วย apt-get มันก็จะเพิ่มรายการ OS ต่อข้างบนไปเรื่อยๆและรายการของ Windows XP ก็อาจจะไม่ใช้เลข 2 อีกต่อไป, อาจจะเป็น 3, 4 ฯลฯ.
ในไฟล์ menu.lst ก็มีคอมเมนต์เขียนไว้ให้อยู่แล้ว, วิธีแก้คือตอนที่ระบุค่า default นั้นแทนที่จะเขียนเป็นตัวเลขก็ให้เขียนเป็น saved แทน. แล้ว Grub ก็จะเลือกรายการที่มีบรรทัด savedefault เป็นตัวบูตโดยปริยาย.
จากตัวอย่างข้างบนทุกรายการมีเขียน savedefault ก็ให้คอมเมนต์เอาต์ (เติมเครื่องหมาย # ที่ต้นบรรทัด) ส่วนที่ไม่ต้องการเช่นถ้าอยากให้ default เป็น Windows XP ก็สามารถเขียนได้แบบนี้.
... default saved ... title Debian GNU/Linux, kernel 2.6.11-1-686 root (hd0,1) kernel /boot/vmlinuz-2.6.11-1-686 root=/dev/hda2 ro initrd /boot/initrd.img-2.6.11-1-686 #savedefault boot title Debian GNU/Linux, kernel 2.6.11-1-686 (recovery mode) root (hd0,1) kernel /boot/vmlinuz-2.6.11-1-686 root=/dev/hda2 ro single initrd /boot/initrd.img-2.6.11-1-686 #savedefault boot title Microsoft Windows XP Professional rootnoverify (hd0,0) makeactive savedefault chainloader +1
พอเข้าเมนู Grub ครั้งต่อไปก็จะเห็นว่ามันเลือก Windows XP ให้โดยปริยายครับ.