ตอนนี้มีเครื่องโน้ตบุ้คตัวหนึ่งซึ่งมีทั้ง 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 ให้โดยปริยายครับ.


หลายๆท่านคงลงกันแบบ dual OS หรือ Triple OS หรืออาจจะลงกันมากกว่านี้ (ที่เคยเจอก็ 300 กว่าตัว - -!) มันคงเป็นเรื่องยากที่จะตัดเจ้า Window$ ออกไปจากคอมพิวเตอร์ของคุณได้ เนื่องด้วยเหตุและผลในหลายๆด้าน ในการใช้ทำงานในชีวิตประจำวัน และในหลายๆบ้าน เช่น ผม ก็มีเครื่องคอมฯอยู่เครื่องเดียว แต่มีคนที่ใช้งานคอมพิวเตอร์อยู่หลายคน และก็มีโดดเดี่ยวผู้น่ารักซึ่งกะแดะเล่น linux อยู่คนเดียวทั้งบ้าน… จึงทำให้ต้องเหลือ window$ ไว้ให้คนในบ้านใช้งาน และก็เป็นปัญหาตามมาด้วยที่ว่า “ทำไมไม่ให้มันเลือก window$ เป็นตัวแรกละฟ่ะ…คนเขาขี้เกียจมาเลือกเข้า window$ เองน่ะเว้ย - -! (ฉันก็ไม่อยากเลือกเข้า linux เองเหมือนกันอ่ะ) ” ฉะนั้นจึงต้องยอมมันเนื่องด้วยเสียงส่วนมากกว่า (เดียวโดดกระทืบเอาถ้าไม่ทำ)

ซึ่งโดยผกติแล้วถ้าเราจะจัดการเกี่ยวกับ Grub มันต้องเข้าไปแก้ไขใน /boot/grub/menu.lst อาจจะสร้างความรำบากให้กับ USER ตัวน้อยๆทั้งหลายร่วมถึงตัวผมเองด้วย ซึ่งวันนี้ผมมีวิธีทำ First Boot โดยวิธีง่ายๆ ผ่าน GUI (Graphical user interface) โอ้ว…พระเจ้ายอดมันจอร์นมากเลย แล้วทำไงล่ะ

1. ติดตั้งผู้ช่วยของเรากันก่อน โดยโหลดมาจาก SUM - StartUpManager

  • $sudo dpkg -i startupmanager_1.9.10-1_all.deb

2. เรียกโปรแกรมขึ้นมาใช้งาน

  • $sudo startupmanager

เราสามารถเปลี่ยนได้โดยการเลือกที่ช่อง Default operating system แล้วเลือก OS ที่เราต้องการให้มันเป็น First Boot อะไรมันจะง่ายถึงเพียงนี้…

ตัวโปรแกรม SUM ก็ใช่ว่าจะทำได้เพียงเท่านี้น่ะ ยังมีความสามารถที่จะปรับแต่งในหน้าของ Grub ได้อีกด้วย ให้แนวไม่เหมือนใครกันไปเลยทีเดียว

ในช่องของ Appearance สามารถที่จะใส่รูปภาพลงไปเป็น background ให้กับ Grub ได้ด้วย หุหุ ส่วนทำยังไงนั้นไม่ขอพูดถึงล่ะกันเพราะว่าคงไม่ยากจนเกินความสามารถของ USER อย่างเราๆ

edit @ 2 Jul 2008 22:28:46 by -Unlimitez-

หากท่านประสบปัญหา ลง windows ก่อน linux แล้วพอลบ windows ทิ้งแล้วลงใหม่ ท่านจะเข้า Linux ไม่ได้ ใช่หรือไหม? หรือลบ Linux แต่ grub ของมันก็ยังค้างคาให้เราเห็น (นั่นเพราะเนื่องจากดันไปทำ boot loader ที่ MBR) วิธีแก้ อาจจะมีหลายทาง แต่ขอเสนอ ทางที่เราจะไม่ต้อง รีโคเวอรี่ ตรงส่วนนั้นให้ยุ่งยาก (หรือทำให้มันยุ่งกว่าเดิมกันเนี่ย)

สมมุติ หากท่านมี partition 1 ที่เป็นวินโดวส์ และ partition2 เพิ่งลง linux

ในหน้าขั้นตอนสุดท้ายในตอนลง ubuntu (หน้าที่จะให้กดปุ่ม install อย่าเพิ่งกดครับ) 

  1. กดปุ่ม advance ที่ถามเราจะทำ boot manager ไว้ที่ไหน ซึ่ง default มันคือ (hda0)
  2. ให้เราเพิ่ม ไปเป็น (hda0,1)

ไอ่ 1 นี่มายังไง ก็คือ เอามาจาก การที่ hda2 เป็น partition ของ linux ดูให้ดีละกัน ก็ลองเปลี่ยนดูนะครับ ถ้าจะลง linux ไว้ที่อื่น

hda = 0 hda2 = 1 hda3 = 2 hda4 = 3 ประมาณนี้

ขั้นตอนนี้จะทำให้grubไม่ทับของเก่าใน mbr (ส่วนใหญ่คือ windows นั้นแหล่ะ เพราะมักจะลง windows ไว้ partition แรก)

พอ install ubuntu เสร็จ ก็อย่าเพิ่ง restart ให้เราไปทำไฟล์ที่เอาไว้บูทก่อนโดยการ Diskdump 512k แรก จาก partition ที่ ubuntu เราอยู่ก่อน

ด้วยคำสั่ง dd (sudo ด้วยนะ ถ้าเป็น ubuntu)

  1. เปิด terminal
  2. dd if=/dev/hda2 of=/media/hda1/ubuntu.bin bs=512 count=1

อธิบาย ก็คือ diskdump input file จาก hda2 (ทำไมต้อง2 ก็ต้องขึ้นกับ partition ที่ linux ลง) ไป เชฟเข้า drive ที่ windows อยู่(จะเอาไปไว้ที่ไหนก็แล้วแต่) ด้วย 512 byte แรก เท่านั้น count ข้างหลังเป็นตัวคูณ ถ้า 2 ก็เปง 512*2 ไปซะ (ซึ่งเราไม่ทำ - -" )

**ถ้าเผลอ restart ตอน install ไปแล้ว มันจะเข้า windows ไปซะงั้น ไม่มีไรเกิดขึ้นหรือ dd ผิด partition มันก็จะขึ้น grub เจ๊ง เราก็กลับ มาทำใหม่ได้ โดยการใช้แผ่น linux ที่สามารถรันด้วย CD ได้ ซึ่งก็คือ แผ่น ubuntu เองหรือ linux slax ไรทำนองนี้แล้ว dd ใหม่ซะ หรือจะมีโปรแกรมช่วยบน windows ก็ตามสะดวก

เอาหล่ะ!!

เมื่อมี ไฟล์ที่ dump มาแล้ว

  1. ก็บูทเข้าวินโดวส์
  2. แก้ไข ไฟล์ boot.ini ให้เพิ่มบรรทัดนี้ไป
  3. C:\ubuntu.bin="Ubuntu 7.0"

 


ถ้าใครก้อปไฟล์ที่ dump มาไปวางไว้ที่ไหน ก็ใส่ path ให้ถูกละกัน เท่านี้เราก็จะได้ boot manager ของ windows ที่แก้ง่ายๆ มาใช้งาน โดยที่ จะลบOSตัวรอง อะไรไปก็ไม่มีผลกะ ส่วน512 byte นี้ หรือจะลบ windows ก็เก็บไฟล์ ubuntu.bin นี้ไว้ทำกะ boot.ini ใหม่


เราอยากจะไม่บูท ubuntu เราก็ไปลบบรรทัด ใน boot.ini ซะ กลายเป็น OS ลึกลับไม่มีใครเห็น (จนตัวเองลืม) หุหุ

 

เขียนทำไมยาว ทำก็ยาก ถามประโยชน์ มันคืออะไร ก็คือ หากท่านลง 3 OS หล่ะ 4 OS หล่ะ จะลงยังไง อันไหนทับอันไหนแล้วจะเสีย อันไหนจะกลายเป็น บูทไม่ได้ไปซะ (แล้วจะบ้าลงอะไรหลายอัน ตอบ บางทีมันก็ไม่แน่เสมอไปนะพี่น้อง vmware อาจไม่ใช่ทางออก)

สิ่งสำคัญ

  1. วิธีนี้ใช้กับ logical partition ไม่ได้นะคับ ต้องเปง primary เลย ระหว่าง partition ที่จะลง OS
  2. ถ้าทับ MBR ไปแล้ว ก็อดนะครับ
  3. ไม่ขออธิบายเรื่อง mount partition ในส่วน diskdump นะครับ

link ที่ทำวิธีเดียวกัน English : http://www.geocities.com/epark/linux/grub-w2k-HOWTO.html