Как изменить порядок загрузки GRUB?

336

У меня есть и Windows 7, и Ubuntu, установленные на общей машине. Поскольку многие не разработчики используют Windows, я бы хотел изменить порядок загрузки, чтобы им было легче.

В настоящее время порядок загрузки выглядит следующим образом:

  • Ubuntu 11.10 kernelgeneric * 86
  • Ubuntu 11.10 kernelgeneric * 86 (безопасная загрузка)
  • Тест памяти
  • Тест памяти
  • Windows 7 на /dev/sda6

Как изменить порядок по умолчанию, чтобы Windows 7 находилась вверху списка?

  • Windows 7 на /dev/sda6
  • Ubuntu 11.10 kernelgeneric * 86
  • Ubuntu 11.10 kernelgeneric * 86 (безопасная загрузка)
  • Тест памяти
  • Тест памяти
chrisjlee
источник
5
Аналогичные вопросы и ответы: askubuntu.com/questions/52963/…
fossfreedom
Вы делали 'sudo update-grub' после изменения файла grub?
Тинеллус
да, я думаю, что я забыл это сделать, спасибо! Я постараюсь обновить с результатами.
jeffery_the_wind
kubuntu 14.04, sudo apt-get install kde-config-grub2затем в системном конфиге
перейдите к закрытию при

Ответы:

295

Вы можете использовать простое в использовании приложение с графическим интерфейсом Grub Customizer, чтобы сделать вашу жизнь немного проще. Как следует из названия, вы можете сделать гораздо больше, чем просто изменить порядок пунктов меню GRUB.

Вы можете установить его:

sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt-get update
sudo apt-get install grub-customizer

(См. Вопрос «Задать вопрос об Ubuntu ». Безопасно ли добавлять PPA в мою систему, и какие «красные флажки» нужно соблюдать? )

Об этом есть статья How-To Geek , Как легко настроить загрузочное меню Linux GRUB 2 . Посмотрите на это, если вам интересно. Кроме того, на форумах Ubuntu есть решенная тема « Изменение порядка загрузки в GRUB 2», в которой упоминается этот инструмент.

Вот несколько скриншотов:

screen_1

screen_2

screen_3


Некоторое устранение неполадок:

Настройки Grub Customizer могут работать только в самой последней установке Linux / Ubuntu, той, которая установила Grub.

Например, если кто-то установил две ОС (Windows и Ubuntu), а затем установил третью ОС (Manjaro и т. Д.), А затем попытался выполнить приведенный выше ответ, изменения Grub Customizer не будут работать при внесении из второй ОС ( Ubuntu, в примере). Программа должна быть установлена ​​в их ОС, так как кажется, что Grub Customizer может редактировать только файлы Grub, созданные установкой системы, на которой она установлена.

Файлы, которые определяют загрузочное меню Grub, в большинстве случаев поставляются с последней установленной системой на компьютере, поэтому Grub Customizer должен быть установлен и использован из этой системы Linux.

Нитин Венкатеш
источник
4
Очень приветствуется :) Скриншоты взяты из поста блога, который связан выше: P
Nitin Venkatesh
2
Это не работает с последней версией Ubuntu. Можем ли мы получить обновленный пост здесь?
AT
7
Я думаю, что ваш ответ хорош и полезен, поэтому, пожалуйста, не поймите меня неправильно. Хотя инструменты с графическим интерфейсом аккуратны и просты, они скрывают факты. В ответе Marve ниже обсуждаются используемые файлы и способы их обновления вручную, что дает представление о том, как работает Grub. Когда графический интерфейс терпит неудачу, и для некоторых это будет, по крайней мере, взглянуть на основы - они не так уж и сложны, и ручные манипуляции, вероятно, будут легче в долгосрочной перспективе.
barrypicker
1
Я также столкнулся с проблемами при использовании этого инструмента. Кажется, что он обновляет / etc / default / grub correclty, но затем он сообщает дамп ядра и прерван.
Маурисио Грасия Гутьеррес
1
Это требует обновления, связанного с двойными уровнями текущего меню grub.
Ханну
244

Вы также можете изменить загрузочную запись grub по умолчанию из командной строки, не устанавливая никаких дополнительных инструментов. Это не изменит порядок в списке, но позволит по умолчанию загружать другую ОС, что в любом случае звучит так, как вы этого хотите.

Сначала сделайте резервную копию /etc/default/grub. В случае, если что-то пойдет не так, вы можете легко вернуться к хорошо известной копии:

sudo cp /etc/default/grub /etc/default/grub.bak

Затем отредактируйте файл, используя vimтекстовый редактор по вашему выбору:

sudo vim /etc/default/grub

Найдите строку, которая содержит

GRUB_DEFAULT=0

и установите его

GRUB_DEFAULT=x

где x- индекс пункта меню grub, в который вы хотите загрузить по умолчанию. Обратите внимание, что пункты меню имеют нулевую индексацию. Это означает, что первый элемент в списке 0и шестой элемент на самом деле 5. Таким образом, чтобы загрузить шестой элемент в списке, строка должна выглядеть так:

GRUB_DEFAULT=5

Если вы забыли порядок пунктов, взгляните на /boot/grub/grub.cfg. Каждый пункт меню определяется строкой типа:

menuentry 'Ubuntu' [options] {

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

GRUB_DEFAULT='Ubuntu'

если была menuentry 'Ubuntu'линия на /boot/grub/grub.cfg. Это может быть лучшим методом, так как он не зависит от порядка записей, которые могут измениться.

Чтобы использовать ядро ​​в подменю «Предыдущие версии Linux», используйте:

GRUB_DEFAULT="Previous Linux Versions>x"

(обязательно включите в него цитаты), где xуказатель старого ядра в подменю или имя ядра, в котором оно отображается /boot/grub/grub.cfg. Например,

GRUB_DEFAULT="Previous Linux Versions>4.13.0-43-generic"

Затем создайте обновленное меню grub:

sudo update-grub
dcharles
источник
5
В последний раз я смотрел, что grub2 генерирует так много записей на лету, что действительно трудно понять, какой номер использовать для записи.
Джо
52
Использование индекса может быть довольно запутанным - список ОС может измениться после обновления. Но вы можете заглянуть в /boot/grub/grub.cfg и найти имя нужной операционной системы по умолчанию. Затем используйте имя в кавычках вместо индекса. Пример: GRUB_DEFAULT="Microsoft Windows XP Professional (on /dev/sda1)"вместоGRUB_DEFAULT=7
geekQ
1
Это требует обновления, связанного с двойными уровнями текущего меню grub.
Ханну
5
В текущей версии Ubuntu 16.04, если вы хотите выбрать конкретное ядро ​​для загрузки, вам нужно добавить его в Advanced options for Ubuntuподменю, например:GRUB_DEFAULT='Advanced options for Ubuntu>Ubuntu, with Linux 4.4.0-34-generic'
Джефф Уильямс
1
@BandaMuhammadAlHelal Это попытается загрузить 7-й элемент в вашем списке - это то, что вы хотите? Если вы хотите 6-й элемент в вашем списке, используйте GRUB_DEFAULT=5.
Ник
39

С сайта tombuntu (статья Тома ):

GRUB можно настроить с помощью /etc/default/grubфайла. Прежде чем вносить в него какие-либо изменения, рекомендуется создать резервную копию, создав резервную копию:

sudo cp /etc/default/grub /etc/default/grub.bak

Вы можете восстановить копию резервной копии поверх оригинала:

sudo cp /etc/default/grub.bak /etc/default/grub

Откройте файл с помощью текстового редактора с правами root:

gksu gedit /etc/default/grub

Строка GRUB_DEFAULT=0означает, что GRUB выберет первый пункт меню для загрузки. Измените это на GRUB_DEFAULT=saved. Это изменение облегчит изменение элемента по умолчанию позже.

Сохраните и закройте файл. Запустите эту команду, чтобы применить ваши изменения к конфигурации GRUB:

sudo update-grub

Внесенное нами изменение конфигурации позволяет использовать команды grub-set-default и grub-reboot в любое время. Это позволяет вам изменять загрузочный элемент по умолчанию постоянно или только для следующей загрузки, соответственно.

Запустите grub-set-defaultили grub-rebootsudo) с номером пункта меню для загрузки (первый пункт - 0). Эта команда изменит значение по умолчанию на второй элемент:

sudo grub-set-default 1
silenTK
источник
15
Этот ответ взят почти дословно от tombuntu.com/index.php/2011/09/25/… . Пожалуйста, дайте кредит, где кредит должен.
Джеймс МакМэхон
Этот ответ, похоже, не меняет порядок элементов загрузки.
Sparhawk
Я использую Linux Mint Debian Edition. У меня не было / etc / default / grub, но я нашел значение GRUB_DEFAULT, которое нужно изменить, вместо этого в /etc/grub.d/00_header. После изменения GRUB_DEFAULT в 00_header с моим желаемым именем загрузочной записи я просто запустил «sudo update-grub» и вуаля, успех.
Нечеткий анализ
Я видел эти же самые команды на tipsonubuntu.com/2016/07/20/grub2-boot-order-ubuntu-16-04. Я понял, что эти команды будут работать только в том случае, если они были сначала введены из системы в порядке загрузки 0.
Солнечный Медведь
-2

Я попробовал следующее и получил хорошие результаты.

Откройте окно терминала ( Ctrl+ Alt+ T),

Введите sudo gksu nautilusи нажмите Enter. Введите свой пароль пользователя.

Перейдите к файлу /boot/grub/grub.cfg. Скопируйте и вставьте файл в тот же каталог, создайте копию файла grub.cfg для резервного копирования. Затем дважды щелкните файл grub.cfg, чтобы открыть файл в текстовом редакторе.

В файле вы найдете строку ( set default="0"). Измените 0 на номер строки в Grub, который вы хотите загрузить. У меня была шестая строка, поэтому я использовал 5, так как первая строка считается 0. Сохраните файл. Перезагрузите компьютер, и если вы выбрали правильную строку, она будет выделена при загрузке Grub.

Удачи

Outkast
источник
10
как вы можете видеть в начале файла, он говорит, что вы не должны этого делать. вместо этого отредактируйте /etc/default/grubи затем запустите update-grub.
сазары
7
и я бы не советовал гксу наутилус. Слишком легко сбросить бомбу в вашу систему оттуда.
sylvainulg
проверить это сообщение: psychocats.net/ubuntu/bootmenu
tqjustc
По какой-то причине этот ответ отображается в Google как «автоматический ответ» при поиске: «порядок загрузки grub change».
Лепе
@lepe, не волнуйся, для меня по умолчанию это linuxandubuntu.com/home/…
vladkras
-5

Откройте окно терминала ( Ctrl+ Alt+ T) или нажмите Alt+ F2.

Введите gksu nautilusи нажмите Enter.

Это откроет файловый браузер Nautilus с правами на изменение файлов, принадлежащих пользователю root.

Перейдите к файлу /boot/grub/grub.cfgи дважды щелкните, чтобы открыть файл в текстовом редакторе.

Вырежьте, переместите и вставьте разделы в тот файл, который принадлежит различным операционным системам. При этом вы должны быть очень осторожны , так как если вы сделаете это неправильно, вы больше не сможете загружаться. Загрузку Windows всегда можно восстановить с помощью инструментов с установочного диска Windows ( FIXMBR), который перезаписывает GRUB-MBR с помощью типичной Windows-MBR.

Я тестировал его с Ubuntu 9.04 до 12.04, и он каждый раз работал нормально.

Но я только попытался переместить раздел загрузки Windows в верхнюю часть списка, чтобы он стал по умолчанию.

Если мне не изменяет память, каждый раздел меню загрузки в файле начинается с begin... и заканчивается ... end. И охватывает несколько строк текста.

Текст в этом файле стал немного сложнее, и в последней версии Ubuntu он выглядит не так, как в предыдущих версиях. Так что используйте свой мозг, чтобы спасти вас от ошибки.

Курт Йонссон
источник
4
Вам не нужно бежать sudo update-grubв какой-то момент?
Элия ​​Каган
4
/boot/grub/grub.cfgперезаписывается при каждом установленном / обновленном пакете, вызывая обновление Grub, эффективно вызывая update-grub. И это порождает новое grub.cfg. Поэтому настройка Grub выполняется в файлах в /etcкаталоге, как объяснено в других ответах, чтобы обеспечить его постоянство.
gertvdijk