Андрей Смирнов
Время чтения: ~7 мин.
Просмотров: 46

Как изменить приоритет загрузки ОС в GRUB 2

/Для загрузки Linux-систем (как впрочем и любой другой UNIX-подобной системы) существует универсальный загрузчик GRUB – GRand Unified Boot loader. Он обладает довольно широким функционалом. Позволяющим не только осуществлять корректную загрузку операционных систем (ОС), но и управлять непосредственно конфигурацией и самим процессом загрузки в интерактивном режиме. В деятельности, связанной с системным администрированием знание возможностей GRUB и умение их применять очень часто экономит в различных и нестандартных ситуациях огромное количество времени системным администраторам.

Содержание

Как работает GRUB?

Загрузчик GRUB – это GNU-проект, разработанный специально для использования в качестве загрузчика по-умолчанию для систем UNIX и Linux. Для подавляющего числа дистрибутивов GRUB давно поставляется «из коробки». Его главной задачей является работа со списком (который подготавливается заранее вручную или автоматически) вариантов загрузки, из которого выбирается нужный для последующей загрузки системного ядра с определёнными для выбранного варианта параметрами.

Стоит отметить, что на данный момент в большинстве случаев используется загрузчик GRUB2, однако некоторые разработчики дистрибутивов по прежнему продолжают применять первоначальную версию загрузчика, часто называемую GRUB Legacy. Обе эти ветви развития существуют и развиваются параллельно. Основное же отличие между ними — это синтаксис в файлах конфигурации.

GRUB читает конфигурацию загрузки при каждом запуске компьютера. Сами файлы конфигурации (в зависимости от используемой версии и дистрибутива) следующие: /boot/grub/menu.lst, /boot/grub/grub.conf или /boot/grub/grub.cfg для версии 2. В системах Red Hat используются файлы grub.conf, а для Ubuntu, SUSE и Solaris – menu.lst. Эти файлы имеют незначительные различия в синтаксисе конфигурации. Для примера, содержимое grub.conf может быть таким:

default=0  timeout=10  splashimage=(hd0,0)/boot/grub/splash.xpm.gz  title Red Hat Enterprise Linux Server (2.6.18-92.1.10.el5)  root (hd0,0)  kernel /vmlinuz-2.6.18-92.1.10.el5 ro root=LABEL=/

В этом примере конфигурируется загрузка всего одной системы Red Hat, которая (согласно default=0) будет загружена автоматически по прошествии 10 секунд (timeout=10), если не будет нажата какая-либо клавиша на клавиатуре. При этом корневая файловая система должна искаться, согласно параметру (hd0,0) команды root, на первом разделе первого жесткого диска.

Для поиска файла ядра задаётся путь относительно загрузочного раздела, монтируемого в каталог /boot. Для приведённого примера ядро будет загружаться из файла /vmlinuz-2.6.18-92.1.10.el5. Затем загрузчик выведет на экран заставку из файла /boot/grub/splash.xpm.gz, находящегося, как указано в команде splashimage, на разделе (hd0,0).

Настраивать параметры загрузки можно и в интерактивном режиме, используя интерфейс командной строки. Для этого нужно на экране меню загрузки нажать клавишу «c».

grub1.jpg

После чего мы попадем в командную строку. В которой уже можно выполнять команды.

grub2.jpg

Таким образом с помощью командной строки возможны все те же действия, что выполняются по инструкциям из файлов конфигурации. Как можно видеть, для этого загрузчик предоставляет целый набор команд со своими параметрами. Это бывает очень полезным, когда необходимо загружать системы, не имеющие соответствующей конфигурации в конфигурационных файлах или когда нужно восстановить «сломанную» конфигурацию. Для ознакомления со списком самых главных команд используется клавиша в режиме работы командной строки загрузчика. В следующей таблице представлены наиболее часто используемые команды GRUB:

Команда Назначение
reboot Перезагружает систему
find Производит поиск файла во всех смонтированных логических разделах
root Задаёт корневое устройство (логический раздел)
kernel Загружает ядро системы с корневого устройства
help Выводит интерактивную справку по команде
boot Загружает систему с указанного образа ядра

Настройка параметров ядра

Системное ядро во время его загрузки можно (и нужно) заставить вести себя определённым образом, например опрашивать определённые устройства, искать демон init по нестандартным путям, указывать корневое устройство и т. д. Всё это легко позволяет настроить загрузчик. Для этого он использует некоторые параметры, самые основные из которых приведены в следующей таблице:

Параметр Назначение
acpi=off Отключает системы Advanced Configuration и Power Interface (управление питанием)
init=/bin/bash Указывает ядру запускать только интерпретатор bash — обычно используется для восстановления системы после сбоев
root=/dev/foo Указывает ядру, что корневым устройством является /dev/foo
single Задает режим однопользовательской загрузки (только для Linux. Для систем Solaris используется ключ -s — предназначен для работы со стандартом OpenBoot

Важно заметить, что конфигурация, задаваемая при помощи интерфейса командной строки GRUB не сохраняется. Для задания постоянной конфигурации загрузки необходимо отредактировать файл grub.conf (grub.cfg для GRUB2) или menu.lst.

Мультисистемная конфигурация

Энтузиасты очень любят держать на одной машине несколько разных ОС. GRUB хоть и был разработан не для энтузиастов и экспериментов. Однако он универсален и мультисистемную загрузку обеспечивает в полной мере. Для того, чтобы GRUB мог работать с несколькими загрузочными конфигурациями и находить на жёстких дисках (или других устройствах хранения) разные ОС, должна быть задана соответствующая мультисистемная конфигурация. Она подобна тому примеру, что уже был рассмотрен в предыдущей главе, но только теперь необходимо иметь отдельные наборы инструкций для каждой из систем.

Важно понимать, что каждый раздел может содержать отдельный вторичный загрузчик для своей системы, но должен быть также и основной — главный загрузчик, который будет, при необходимости, передавать управление вторичному. В качестве главного в большинстве случаев необходимо использовать загрузчик GRUB. Так, например и в случае мультисистемной конфигурации, в которой соседствуют системы Windows и Linux в качестве главного обязательно должен быть загрузчик GRUB, да ещё и на отдельном от Windows устройстве.

Конфигурация GRUB для загрузки Windows-систем несколько отличается от Linux. Так, например конфигурация запуска Windows XP может быть такой:

title Windows 10  rootnoverify (hd0,0)  chainloader +1

Здесь команда chainloader предназначена для передачи управления Windows-загрузчику, расположенному в первом секторе (+1) первого раздела первого жёсткого диска (hd0,0). А команда rootnoverify указывает GRUB, что монтировать раздел (hd0,0) не нужно, т. к. должна загружаться «неродная» система Windows. Пример мультисистемной конфигурации:

default=0  timeout=5  splashimage=(hd0,2)/boot/grub/splash.xpm.gz  hiddenmenu  title Windows 10  rootnoverify (hd0,0)  chainloader +1  title Red Hat  root (hd0,1)  kernel /vmlinuz

В этом примере ОС Windows должна будет загружаться по-умолчанию (default=0). Через 5 секунд (в течение которых не нажата какая-либо клавиша на клавиатуре) с первого раздела первого жёсткого диска. А ОС Red Hat – со второго раздела того же диска.

Также важно отметить, что в процессе обновлений (как правило автоматических) системного ядра, файлы старых версий ядер не удаляются. Но при этом скрипты из пакета обновлений могут автоматически отредактировать конфигурацию загрузки. Добавив новый вариант загрузки для нового ядра. Которое устанавливается в систему независимо от уже имеющихся в ней других ядер. Поэтому ничего удивительного в том, что пунктов меню, отражающих варианты загрузки. Cо временем (после каждого обновления ядра) становится всё больше и больше. Это довольно удобно, т. к. в случае, если с новым ядром система стала работать некорректно. Или вовсе «сломалась» – есть возможность использовать старое ядро. Воспользовавшись соответствующим пунктом меню загрузки GRUB.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

prioritet_zagruzki_grub_2_logo-630x315.png

Предыстория

У меня на одном из компьютеров раньше стояла одна Windows 7. Позже на этот же компьютер была установлена Ubuntu и в меню GRUB она стала на первое место. На тот момент Windows использовалась чаще чем Ubuntu, поэтому почти каждый раз запуская компьютер, приходилось ждать появления меню загрузчика и выбирать для загрузки другую ОС. Это раздражало и я начал искать способ изменить приоритет загрузки ОС в GRUB 2. Условием было сделать это без установки дополнительного ПО. И решение было найдено.

Меняем приоритет загрузки ОС в GRUB 2

Для начала нужно узнать точное название пункта меню, который должен загружаться по умолчанию. Для этого нужно выполнить два пункта:

  1. Открываем файл конфигурации GRUB 2:
gedit /boot/grub/grub.cfg

Обратите внимание на то, что этот файл мы открываем без прав суперпользователя, так как его редактирование крайне не рекомендуемое, да и делать этого нам не надо. В этом файле нам нужно найти тот пункт меню, который нам нужен для загрузки по умолчанию. Мне нужна была Windows и в моем случае пункт назывался так:

prioritet_zagruzki_grub_2_1-630x104.png

Запоминаем его.

  1. Перезагружаем компьютер, и во время запуска сверяем еще раз, точно ли мы выбрали пункт меню и совпадают ли навания.

Открываем еще один файл конфигурации GRUB 2 уже для редактирования (перед этим желательно сохранить его копию):

sudo gedit /etc/default/grub

Почти в самом начале файла есть строчка, начинающаяся с GRUB_DEFAULT и в ней в скобках пишем название нашего пункта меню:

prioritet_zagruzki_grub_2_2-630x100.png

Внимательно все сверяем и сохраняем изменения. И после этого обновляем GRUB:

sudo update-grub

Теперь можно перезагрузить компьютер. Во время загрузки порядок пунктов в меню GRUB не изменится, но нужный пункт будет выделен.

Используемые источники:

  • https://itproffi.ru/instruktsiya-po-nastrojke-zagruzchika-grub/
  • https://geekkies.in.ua/linux/kak-izmenit-prioritet-zagruzki-os-v-grub-2.html

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации