Чи можна налаштувати Grub, щоб запам'ятати останню ОС, яку ви завантажили?


17

У моєму завантажувальному меню у мене зазвичай є 2-3 ОС:

  • Ubuntu 10.04
  • Windows 7
  • [Іноді, третій варіант, наприклад Ubuntu 10.04 Netbook]

Якщо я перебуваю в іншій ОС, ніж вибір за замовчуванням (в цьому випадку Windows 7), і я перезавантажую, Grub завантажується в Ubuntu 10.04. Цього не повинно статися - коли я перезавантажуюсь у Windows 7, я хочу залишитися в Windows 7. Чи є спосіб налаштувати Grub, щоб запам’ятати мій останній вибір, і ввімкнути його?

Крім того, було б ще краще, якби Grub робив це лише тоді, коли я перезавантажувався (не коли я вперше вмикаю комп'ютер). Я усвідомлюю, що це може бути неможливим, тому я буду задоволений простим запам'ятовуванням останнього вибору.

Відповіді:


20

У початковому Grub ви зробите це, встановивши в /boot/grub/menu.lst ключове слово за замовчуванням "збережене", а потім використовуючи ключове слово savedefault у кожному записі меню завантаження.


Оновлено :
Grub2 трохи складніше. Він також все ще розвивається, тому хоча Ubuntu 9.10 і 10.04 обидва використовують Grub2, є достатньо відмінностей у тому, як речі упаковані та налаштовані, щоб зробити речі цікавими.

Ось як зробити трюк savedefault в обох:

  • Ubuntu 10.04:
    напрямки 9.10 - це трюк; Lucid набагато простіше. Докладніші відомості див. У довідці Ubuntu . Вам потрібно внести дві зміни в / etc / default / grub :

    1. Змініть рядок , яка зчитує GRUB_DEFAULT=0зGRUB_DEFAULT=saved

    2. Додайте рядок із GRUB_SAVEDEFAULT=true

    Це воно. Насправді це не так вже й погано, чи не так? Не забувайте бігати sudo update-grub.

  • Ubuntu 9.10:
    на форумах Ubuntu є декілька хаків, щоб змусити це працювати; мабуть, ключове слово savedefault було баггі в Grub v1.97. Цей пост на форумах Ubuntu надає один метод. Ще одна публікація пропонує трохи простіший метод:

    1. Встановити GRUB_DEFAULT = збережено в / etc / default / grub .

    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, який буде обраний при наступному завантаженні (замість того, щоб запис був збережений).

Теоретично, ви могли зламати разом щось, що зачепилося для процедур вимкнення ( можливо, сценарій Upstart ), який запустив grub-set-default для вас, коли ви сказали Linux про закриття (але не тоді, коли ви сказали йому перезавантажуватися). Однак ви не отримаєте однакову функціональність при відключенні Windows.

Я чув про техніку Grub4DOS або Grub1, яка передбачала встановлення Grub на розділ FAT32 або NTFS / boot - це дозволило б також запустити grub-set-default з Windows, так що ви можете викликати його зі сценарію виходу з системи Windows. Востаннє я щось про це не бачив, на Grub2 це було неможливо. Це, можливо, вже змінилося.


Рішення №2, здається, не працює для мене. Я редагував / etc / default / grub, редагував /etc/grub.d/40_custom, і біг sudo update-grub. Я перевірив, завантажившись у Windows 7, вимкнувшись, а потім увімкнувши комп’ютер. Ubuntu 10.04 (за замовчуванням) все ще обраний. Я також спробував поставити "save_entry" в / etc / default / grub, замість "збереженого" (не впевнений, як працюють сценарії конфігурації grub), але це не допомогло. Я ще не пробував рішення №1.
Матвій

@Matthew: перевірте, чи /etc/grub.d/40_custom виконується (sudo chmod + x, якщо його немає). але так, я просто спробував на моїй машині Ubuntu 10.04, і вона також не працює. перевірка того, чому ...
крякав кіхот

@Matthew: Добре, зрозумів. Мені шкода, я мав знати, що Люцид і Кармік будуть такими різними. (о. і переконайтесь, що ти біжиш sudo update-grub.)
крякав кіхот

3

Цей пост , мабуть, буде вам корисним, він досить зрозумілий. Зауважте, що 10.04 та 9.10 використовують ту саму версію GRUB, тож для вас має бути абсолютно однаково.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.