การตั้งค่าลำดับการบูทของ grub

จาก Wiki Opensource

บันทึกนี้ปรับปรุงล่าสุดเมื่อวันที่ 01-11-2554

ดูแลโดย WIPAT


  • ทดสอบกับ ubuntu 10.04  และ grub2


  1. ให้บูทเข้าเป็นลินุกซ์ตามปรกติ

  2. ตรวจสอบแฟ้ม /boot/grub/grub.cfg  ดูลำดับของเมนูที่แสดง  ใช้คำสั่ง
    grep menuentry /boot/grub/grub.cfg
    ได้ผลข้อความขึ้นต้นบรรทัดว่า menuentry...
    เริ่มนับลำดับ menuentry... อันแรกเป็นลำดับที่ศูนย์
    แล้วนับเพิ่มไปเรื่อยๆจนถึงเมนูตัวที่ต้องการ สมมติว่าเป็นลำดับที่ 4

    ให้แก้ไขแฟ้ม /etc/default/grub ประมาณบรรทัดที่ 4
    ไปที่ค่าตัวอย่างตัวแปรเดิม GRUB_DEFAULT=0
    ตัวอย่างนี้แก้ไขให้เป็นให้เป็น GRUB_DEFAULT=4

    แล้วสร้าง /boot/grub/grub.cfg ใหม่ ด้วยคำสั่ง
    sudo update-grub
    เป็นอันเสร็จ ทดสอบผลงานได้เลย

  3. หากต้องการเอา menu ชุด recovery ออก
    ให้แก้ไขแฟ้ม /etc/default/grub ประมาณบรรทัดที่ 31
    ลบเครื่องหมาย # หน้าสุดของบรรทัด #GRUB_DISABLE_RECOVERY="true" ออกไป
    เหลือเพียง GRUB_DISABLE_RECOVERY="true"

    แล้วสร้าง /boot/grub/grub.cfg ใหม่ ด้วยคำสั่ง
    sudo update-grub
    ทำแค่นี้ทดสอบผลงานได้เลย

  4. หากต้องการเอา menu ชุด Memorytest ออก
    ให้ยกเลิก execute  ของแฟ้ม  /etc/grub.d/20_memtest86+ ออก ด้วยคำสั่ง
    sudo chmod -x /etc/grub.d/20_memtest86+

    แล้วสร้าง /boot/grub/grub.cfg ใหม่ ด้วยคำสั่ง
    sudo update-grub
    ทำแค่นี้ทดสอบผลงานได้เลย

  5. ตัวอย่างการสร้างเมนูของตนเอง เป็นการตั้งค่าเมนูบูทของวินโดวส์ 3 partition  และปิดเครื่อง
    ให้สร้างแฟ้มชื่อ /etc/grub.d/09_mymenu  ให้มีข้อมูลประมาณว่า
    #!/bin/sh
    exec tail -n +3 $0
    # This file provides an easy way to add custom menu entries.  Simply type the
    # menu entries you want to add after this comment.  Be careful not to change
    # the 'exec tail' line above.
    menuentry "CAD/CAM (on /dev/sda1)" --class windows --class os {
        insmod part_msdos
        insmod ntfs
        parttool (hd0,1) hidden-
        parttool (hd0,2) hidden+
        parttool (hd0,3) hidden+
        parttool (hd0,1) boot+
        set root='(hd0,1)'
        chainloader +1
    }
    menuentry "PROGRAMMING (on /dev/sda2)" --class windows --class os {
        insmod part_msdos
        insmod ntfs
        parttool (hd0,1) hidden+
        parttool (hd0,2) hidden-
        parttool (hd0,3) hidden+
        parttool (hd0,2) boot+
        set root='(hd0,2)'
        chainloader +1
    }
    menuentry "COE Windows 7 (loader) (on /dev/sda3)" --class windows --class os {
        insmod part_msdos
        insmod ntfs
        parttool (hd0,1) hidden+
        parttool (hd0,2) hidden+
        parttool (hd0,3) hidden-
        parttool (hd0,3) boot+
        set root='(hd0,3)'
        chainloader +1
    }
    menuentry "Shutdown Now" {
        halt
    }

    บันทึกข้อมูลแล้ว ตั้งค่า execute ด้วยคำสั่ง
    sudo chmod +x /etc/grub.d/09_mymenu

    แล้วสร้างเมนูของ grub ใหม่ด้วยคำสั่ง
    sudo update-grub

  6. หากต้องการเอารายการ kernel รุ่นเก่า ออกจากรายการเมนูตอนบูทของ grub
    แนะนำให้ถอด kernel รุ่นก่อนออก แล้วมันก็จะหายไปจากรายการเมนูเอง

    ตัวอย่างต้องการลบ 2.6.32-28-generic ใช้คำสั่งประมาณว่า
    sudo apt-get remove linux-image-2.6.32-28-generic