Grub สามารถกำหนดค่าให้จำ OS ล่าสุดที่คุณบูทได้หรือไม่?


17

โดยปกติฉันมี 2-3 OS ในเมนูบู๊ตของฉัน:

  • Ubuntu 10.04
  • วินโดว 7
  • [บางครั้งตัวเลือกที่สามเช่น Ubuntu 10.04 Netbook]

หากฉันอยู่ในระบบปฏิบัติการอื่นที่ไม่ใช่ตัวเลือกเริ่มต้น (Windows 7 ในกรณีนี้) และฉันรีบูตเครื่อง Grub จะบูตใน Ubuntu 10.04 สิ่งนี้จะไม่เกิดขึ้น - เมื่อฉันรีบูตใน Windows 7 ฉันต้องการที่จะอยู่ใน Windows 7 มีวิธีใดที่จะกำหนดค่า Grub ให้จดจำตัวเลือกสุดท้ายของฉัน

หรือมิฉะนั้นก็จะดียิ่งขึ้นหากด้วงเพียงทำอย่างนี้เมื่อฉัน rebooted (ไม่ใช่ครั้งแรกที่ผมเปิดคอมพิวเตอร์บน) ฉันรู้ว่านี่อาจเป็นไปไม่ได้ดังนั้นฉันจึงมีความสุขกับการจดจำครั้งสุดท้าย

คำตอบ:


20

ในด้วงเดิมที่คุณต้องการทำเช่นนี้โดยการตั้งค่าใน/boot/grub/menu.lstที่เริ่มต้นคำหลักเพื่อ"บันทึก"และจากนั้นใช้savedefaultคำหลักในแต่ละรายการเมนูการบูต


อัปเดต :
Grub2 นั้นซับซ้อนกว่าเล็กน้อย มันยังคงพัฒนาอยู่แม้ว่า Ubuntu 9.10 และ 10.04 จะใช้ Grub2 แต่ก็มีความแตกต่างกันมากพอที่จะบรรจุและกำหนดค่าสิ่งต่าง ๆ ให้น่าสนใจ

นี่คือวิธีการทำเคล็ดลับการบันทึกค่าเริ่มต้นในทั้งสอง:

  • Ubuntu 10.04:
    ทิศทาง 9.10 เป็นกลอุบาย สุวิมลนั้นง่ายกว่ามาก ดูความช่วยเหลือของ Ubuntuสำหรับรายละเอียดเต็มไปด้วยเลือด คุณต้องทำการเปลี่ยนแปลงสองอย่างใน/ etc / default / grub :

    1. เปลี่ยนบรรทัดที่อ่านGRUB_DEFAULT=0เป็นGRUB_DEFAULT=saved

    2. เพิ่มบรรทัดด้วย GRUB_SAVEDEFAULT=true

    แค่นั้นแหละ. จริงๆแล้วมันไม่ได้แย่ใช่มั้ย sudo update-grubอย่าลืมที่จะเรียกใช้

  • Ubuntu 9.10:
    มีหลายแฮ็คในฟอรัม Ubuntu เพื่อให้ใช้งานได้ เห็นได้ชัดsavedefaultคำหลักที่เป็นรถในด้วง v1.97 โพสต์นี้บนฟอรัม Ubuntuให้วิธีหนึ่ง โพสต์อื่นแนะนำวิธีการที่ง่ายกว่าเล็กน้อย:

    1. ตั้งGRUB_DEFAULT = บันทึกไว้ใน/ etc / default / ด้วง

    2. วางสองบรรทัดเหล่านี้ลงใน/etc/grub.d/40_custom (ใกล้ด้านล่างหลังจากบรรทัด"exec tail" ):

      saved_entry=${chosen}
      save_env saved_entry
      

    ฉันทดสอบวิธีนี้ใน Ubuntu 9.10 และใช้งานได้ การบูตครั้งถัดไปจะไฮไลต์รายการสุดท้ายที่เลือกโดยอัตโนมัติ เมื่อรวมกับการหมดเวลาระบบจะบูตเข้าสู่ระบบปฏิบัติการล่าสุดที่คุณบูทโดยอัตโนมัติ

sudo update-grubและไม่ลืมที่จะเรียกใช้ หลังจากเสร็จสิ้นการเปลี่ยนแปลง มันสำคัญและง่ายที่จะลืม ....


Grub ไม่มีวิธีแยกความแตกต่างระหว่างการเริ่มระบบใหม่กับการบูตแบบเย็นดังนั้น Grub จึงไม่สามารถทำสิ่งนี้ในการรีบูตด้วยตัวเอง อย่างไรก็ตามหากคุณบูตเข้าสู่ Linux คุณสามารถใช้sudo grub-set-default N(โดยที่ N คือจำนวนรายการเมนูการบู๊ตเริ่มต้นจาก 0) เพื่อตั้งค่ารายการ N ให้เลือกในการบูตครั้งถัดไป (แทนที่จะบันทึกรายการใด ๆ )

ในทางทฤษฎีคุณสามารถแฮ็คสิ่งที่ติดอยู่ในรูทีนการปิดเครื่อง ( สคริปต์พุ่งพรวดหรือบางที) ที่รันgrub-set-defaultสำหรับคุณเมื่อคุณบอกให้ Linux ปิดการทำงาน (แต่ไม่ใช่เมื่อคุณบอกให้รีบูต) อย่างไรก็ตามคุณจะไม่ได้รับฟังก์ชันการทำงานเดียวกันเมื่อปิดระบบ Windows

ฉันเคยได้ยินเกี่ยวกับเทคนิค Grub4DOS หรือ Grub1 ที่เกี่ยวข้องกับการติดตั้ง Grub ไปยังพาร์ติชันFAT32 หรือ NTFS / bootซึ่งจะช่วยให้คุณสามารถเรียกใช้grub-set-defaultจาก Windows ได้ดังนั้นคุณสามารถเรียกใช้สคริปต์ออกจาก Windows ได้ ครั้งล่าสุดที่ฉันเห็นอะไรเกี่ยวกับเรื่องนี้มันเป็นไปไม่ได้ใน Grub2 ที่อาจมีการเปลี่ยนแปลงในขณะนี้


โซลูชัน # 2 ดูเหมือนจะไม่ทำงานสำหรับฉัน ฉันแก้ไข / etc / default / ด้วง /etc/grub.d/40_custom sudo update-grubแก้ไขและวิ่ง ฉันทดสอบโดยการบูทเป็น Windows 7 ปิดเครื่องแล้วเปิดคอมพิวเตอร์ใหม่ ยังคงเลือก Ubuntu 10.04 (ค่าเริ่มต้น) ฉันยังลองวาง "hidden_entry" ใน / etc / default / grub แทน "save" (ไม่แน่ใจว่าสคริปต์ config grub ทำงานอย่างไร) แต่ก็ไม่ได้ช่วยอะไร ฉันยังไม่ได้ลอง # 1
Matthew

@Matthew: ตรวจสอบอีกครั้งว่า /etc/grub.d/40_custom สามารถใช้งานได้ (sudo chmod + x ถ้าไม่ใช่) แต่ใช่ฉันเพิ่งลองบนเครื่อง Ubuntu 10.04 ของฉันและมันก็ไม่ทำงานเหมือนกัน ตรวจสอบว่าทำไม ...
ต้มตุ๋น quixote

@ Matthew: ตกลงคิดออก ฉันขอโทษฉันควรรู้จัก Lucid และ Karmic จะแตกต่างกัน (โอ้และให้แน่ใจว่าคุณทำงานsudo update-grub)
ต้มตุ๋น quixote

3

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.