17

У меня обычно есть 2-3 ОС в моем загрузочном меню:

  • Ubuntu 10.04
  • Windows 7
  • [Иногда третий вариант, такой как Ubuntu 10.04 Netbook]

Если я использую ОС, отличную от выбора по умолчанию (в данном случае Windows 7), и перезагружаюсь, Grub загружается в Ubuntu 10.04. Этого не должно быть - когда я перезагружаюсь в Windows 7, я хочу остаться в Windows 7. Есть ли способ настроить Grub для запоминания моего последнего выбора и загрузки в него?

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

2 ответа2

20

В исходном Grub вы могли бы сделать это, установив в /boot/grub/menu.lst ключевое слово по умолчанию "сохранено", а затем используя ключевое слово savedefault в каждой записи загрузочного меню.


Обновлено:
Grub2 немного сложнее. Он также все еще развивается, поэтому, несмотря на то, что Ubuntu 9.10 и 10.04 используют Grub2, существует достаточно различий в том, как все упаковано и настроено, чтобы сделать вещи интересными.

Вот как сделать трюк с сохранением по умолчанию в обоих случаях:

  • 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. Это, возможно, изменилось к настоящему времени.

3

Этот пост , вероятно, будет вам полезен, он довольно понятен. Обратите внимание, что 10.04 и 9.10 используют одну и ту же версию GRUB, поэтому для вас все должно быть одинаково.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .