Настройка порядка загрузки систем в Manjaro Linux 19 XFCE
Всем привет! В этом материале мы рассмотрим возможность изменять порядок загрузки операционных систем в Manjaro Linux 19 XFCE в тех случаях, когда на компьютере установлено две и более систем, например, Windows 10 и Manjaro Linux 19.
Напомню, в прошлых материалах мы уже подробно рассмотрели процесс установки Manjaro Linux 19 на компьютер рядом с Windows 10, а также процесс настройки раскладки клавиатуры в Manjaro уже после установки системы.
Сегодня, как было уже отмечено, мы рассмотрим настройки, с помощью которых мы можем управлять порядком загрузки операционных систем, так как по умолчанию после установки Manjaro Linux 19 данный порядок настроен так, что при включении компьютера, если в загрузочном меню ничего не выбрать, будет загружаться та система, в которую Вы загружались последний раз. Например, если Вы загрузились в Windows 10, то в следующий раз по истечении периода ожидания, т.е. если также ничего не выбрать в загрузочном меню, будет загружаться все та же Windows 10.
Данное поведение загрузчика некоторых пользователей может и не устраивать. Однако существуют настройки, с помощью которых мы можем принудительно указать операционную систему, которая должна загружаться каждый раз по умолчанию, не зависимо от того, какая система была загружена последней.
Итак, давайте начнем.
Настройка загрузчика GRUB в Manjaro Linux 19
В качестве примера давайте разберем ситуацию, когда у нас на компьютере установлено две системы Windows 10 и Manjaro Linux 19, и по умолчанию у нас загружается операционная система, которая была загружена последней, однако допустим, мы хотим, чтобы по умолчанию всегда загружалась Windows 10.
Чтобы это реализовать, необходимо выполнить настройку загрузчика GRUB из операционной системы Manjaro Linux. Для этого сделаем несколько простых шагов.
Шаг 1 – Определяем и запоминаем индекс системы в загрузочном меню
Первое, что нам необходимо сделать, это определить и запомнить индекс или точное название той системы, которую мы хотим указать по умолчанию.
Узнать индексы операционных систем в загрузчике можно из конфигурационных файлов, этот вариант обычно используют продвинутые пользователи Linux, однако мы обычные пользователи и этот способ мы использовать не будем.
Заметка! Книга для начинающих пользователей Linux – «Linux для обычных пользователей». В ней я максимально простым языком рассказываю про основы Linux и как пользоваться этой операционной системой без командной строки.
В нашем случае проще простого определить порядковый номер системы в загрузочном меню, которое появляется при включении компьютера. Однако здесь стоит учитывать тот факт, что номер индекса начинается с нуля, а также то, что все подпункты, если такие есть, также нужно учитывать.
И таким образом, у первого пункта будет индекс 0, у второго 1 и так далее.
В моем случае, как Вы можете наблюдать на скриншоте ниже, у Manjaro Linux индекс 0, у дополнительных параметров загрузки Manjaro Linux индекс 1, а у Windows 10 индекс 2.
Поэтому, я запоминаю цифру 2 и перехожу ко второму шагу.
Шаг 2 – Указываем операционную систему по умолчанию
Сначала для указания операционной системы по умолчанию выполняем следующую команду.
Где, 2 – это индекс системы, которую мы хотим сделать системой по умолчанию (для выполнения команды необходимо будет ввести свой пароль).
Шаг 3 – Сохраняем настройки
Операционная система по умолчанию указана, однако нам еще нужно сохранить настройки и переконфигурировать загрузчик. Для этого выполняем еще одну команду
Шаг 4 – Проверяем порядок загрузки операционных систем
Чтобы проверить загрузчик, перезагружаем компьютер, и в загрузочном меню ничего не выбираем, в нашем случае должна по умолчанию загружаться Windows 10, несмотря на то, что мы только что использовали Manjaro Linux.
У меня все сработало, по умолчанию загружается Windows 10.
Если по каким-либо причинам Вы хотите вернуть настройки, которые были, т.е. сделать так, чтобы загружалась операционная система, которая загружалась последней, необходимо выполнить все те же команды в терминале Manjaro Linux, только вместо «2» указать параметр «saved».
На сегодня это все, надеюсь, материал был Вам полезен, пока!
Содержание
The following guide aims to install Manjaro on a machine with UEFI enabled, Secure boot disabled, and using GUID Partition Table (GPT) disk(s).
For multi-boot, the EFI system partition which is already present (or will be created), can usually be shared amongst multiple Linux installs.
Common
Graphical Installer
To use the Graphical Installer select the Install Manjaro option from the Manjaro Welcome screen or from the desktop.
For the ESP (EFI system partition) which will store the EFI Grub binary, a 512mb partition of type fat32 can be created in the partitioning step, and mounted to /boot/efi
If you are dual booting then an EFI partition from a previous install can also be used.
CLI installer
Disk preparation
Setting filesystem mount points
Installation
1) You need to create an ESP (EFI System Partition).
You should also install/check whether following packages are present-
2) Create the /boot/efi directory
3.) Mount the EFI partition as /boot/efi
4.) Install Grub according to UEFI
5.) Update Grub configuration file.
Then you will need to chroot as described here, and then perform Step 5 again.
then you could load the efivarfs module :

There are two ways to install rEFInd-
1.Install rEFInd from its website [2] (detailed) or install using pacman(preferred)—
2.Or using the instructions on the rEFInd website: [3]
Instructions
The refind-install command can be used to automatically install rEFInd (the EFI partition may need to be mounted for this to work). See the Arch wiki for more details.
Manual install
Inside the refind folder (/usr/share/refind), copy the files and folders to-
You need to copy these files to the Boot folder on your EFI partition, and the Boot folder itself will be present inside the EFI folder on the EFI Partition, so take note of it.
You can check which partition is your ESP using Gparted; find which partition is formatted as fat32 and has size around 200mb-1gb.
Can mount it as /boot/efi by
X=a,b,c. N=1,2,3. These depend on which partition your ESP is present which can be obtained via Gparted as mentioned earlier.
Now inside the /boot/efi/EFI/Boot/ folder, there should already be a file present-
You can rename it as windows.bootx64.efi Then you can rename refind_x64.efi to bootx64.efi
The bootx64.efi files boot by default, hence rEFInd should now boot by default, and detect grubx64.efi(linux-manjaro) and efibootmgfw.efi (windows) automatically.
So it could be like-
rEFInd would use this file for booting Manjaro.
If you do not have this file or folder, try-
to create /boot/efi/EFI/Manjaro/grubx64.efi
An alternative: chainloading via GRUB
An entry can be added to
In this case (hd0,4) or /dev/sda4 is the EFI System partition where the Windows bootloader is present.
After adding the above entry, running sudo update-grub updates the GRUB configuration file so that an entry named Windows8 (UEFI) is added to the GRUB boot menu.
Related Forum thread: [4]
Using Rufus on Windows to create installation media
Rufus users can use the following settings:
Questions, suggestions, critics? Please post here: [5]
GRUB/Restore the GRUB Bootloader
Содержание
In order to load the operating system, a Linux-capable boot loader such as GRUB, rEFInd or Syslinux needs to be installed to the Master Boot Record (MBR) or the GUID Partition Table (GPT) of the media containing the Operating System. Installations created using Manjaro ISO defaults to GRUB.
Identify the type of system you are attempted to resque as the commands involved are slightly different.
System Boot Override To override system boot order the vendor has a dedicated key. Most laptop keyboard has multiple use for the function keys and the primary function may be reversed. In such case a Fn key must be used with the function key. If you don’t know consult your system documentation. Manjaro ISO default usernames and passwords
| Default Username | Default Password |
|---|---|
| manjaro | manjaro |
| root | manjaro |
To identify your partitions and their designated use you need to run a partition manager. Depending on environment there is various tools. GTK based ISO offers GpartEd, QT based ISO offers KParted and common to all is the CLI tools.
More comprehensive information can be found using fdisk (requires superuser) and you can limit the probed device e.g. /dev/sda or /dev/nvme0n1
Chroot is a method to restrict various tasks to a restricted area e.g. package installation and other system maintenance tasks. Follow the link to read more about chroot on the Arch wiki.
Identify system partitions
From the above we assume you have identified the relevant partitions on your system and this document will refer the partitions as follows. Partitions not needed for this kind of maintenance has intentionally been left out (e.g. home, swap).
Manual chroot
Mount the partitions using the designated temporary mountpoint and always start with root
Create the chroot environment and use bash as shell
Use manjaro-chroot
When the transaction as completed continue below using the section matching your system
BIOS System
On a BIOS/GPT system there is no MBR and therefore no place to store the loader. The GPT partition specification allows for an unformatted partition of the BIOS boot partition type (0xEF02). The size of this partition can be as small as 1 mebibyte. The Calamares installer uses a fixed size of 32 mebibyte. On a BIOS/MBR system a part of the bootloader is written to the Master Boot Record for the primary disk.
The device is the disk (not a partition)
Make sure the grub configuration is up-to-date
GRUB (Русский)
GRUB2 – мультисистемный модульный программируемый кроссплатформенный загрузчик, с поддержкой сети, множества файловых систем, таблиц разделов, логических томов, образов и архивов.
Contents
Предисловие
Релиз GRUB-2.00 уже вышел, но разработка продолжается. В репозиториях ArchLinux появляюся самые свежие, в том числе и бета-версии GRUB, поэтому переустанавливать загрузчик (командой grub-install) и особенно обновлять файл конфигурации (командой grub-mkconfig) следует с осторожностью.
Если вы не хотите использовать GRUB2, можно установить GRUB Legacy из AUR.
Замечание для текущих и бывших пользователей GRUB Legacy
Требования к диску
Загрузчик в BIOS
Сама по себе BIOS, как правило, не требует наличия на диске каких-либо таблиц разделов.
Поэтому, для успешной загрузки в режиме BIOS, используемый способ разметки диска должен предусматривать:
1) встраивание кода загрузчика в начальный сектор;
2) выделение на диске специальной, не занятой файловыми системами области (группы секторов), из которой будет загружаться стартовый образ загрузчика, умеющий читать хотя бы одну файловую систему.
Программа установки GRUB2 умеет встраивать код BIOS-версии загрузчика на диски с таблицами разделов MBR и GPT, которые удовлетворяют обоим требованиям.
В обоих случаях, для встраивания используются два образа:
Требования GRUB2-BIOS к MBR
Для встраивания образа загрузчика core.img на диск с MBR, используется промежуток между начальным сектором с MBR и самым первым (по расположению) разделом. Если ближайший к началу диска раздел начинается с сектора 63 или больше,
то в большинстве случаев этого места (31КБ) вполне достаточно для встраивания GRUB2. Размер образа core.img зависит от размера модулей для чтения используемых таблицы разделов и ФС. В частности, для комбинации MBR+ext4 он составляет всего 25КБ.
Однако, в некоторых более сложных случаях, размер образа может оказаться больше 31КБ, и тогда отступа в 63 сектора уже не хватит. Поэтому современные версии fdisk по-умолчанию предлагают создавать первый раздел с гораздо большим отступом (1МБ), начиная с 2048 сектора.
Требования GRUB2-BIOS к GPT
Загрузчик в UEFI
В отличии от BIOS, UEFI загружает образ загрузчика из файла, и поэтому предъявляет определённые требования к таблице разделов, разделу, файловой системе, и к содержимому загружаемого файла.
Рекомендации по установке загрузчика
Выбор раздела
Если на компьютере установлено несколько операционных систем или диструбутивов, может оказаться удобным сделать один системонезависимый загрузчик, и установить его на отдельный диск или раздел. В этом случае стоит учесть следующее:
Выбор таблицы разделов
Установка
Установка GRUB2 в процессе установки Arch Linux
Чтобы установить GRUB2 в процессе установки, предварительно требуется смонтировать корневой раздел устанавливаемого Arch, (а в него boot-раздел, если требуется), и выполнить команду arch-chroot.
Установка пакета
Файлы и утилиты для установки GRUB2 содержатся в пакете grub, и устанавливаются командой
Установка загрузчика
Установка BIOS-версии загрузчика
Полноценная установка для BIOS
Генерация загрузочного образа для BIOS без установки
Установка UEFI-версии загрузчика
В режиме UEFI
Используя эти опции вместе, при желании можно установить файлы загрузчика непосредственно в загрузочный раздел EFI, например так:
Без доступа к UEFI
Из 32-битного Arch
Если на машине есть UEFI, но установленный ArchLinux имеет архитектуру i686, установить UEFI-версию GRUB можно, но есть дополнительное затруднение – сборка загрузчика x86_64-efi отсутствует в пакете «grub» для архитектуры i686. В пакете же для архитектуры x86_64 присутствуют все три сборки:
Перед тем, как устанавливать UEFI-версию GRUB из системы i686, придётся сначала скачать пакет grub для x86_64, и распаковать из него (под рутом) недостающую сборку загрузчика:
После этого можно устанавливать загрузчик, как описано в предыдущей главе «Без доступа к UEFI».
Установка в LVM
Установка GRUB2 на диск с LVM происходит в целом так же, как и на диск без LVM.
GRUB2 читает файловые системы из логических томов LVM, как и из обычных разделов, поэтому никакого отдельного раздела /boot вне LVM для файлов GRUB2 и загружаемых им образов ядра не требуется. Однако, для встраивания стартовых образов GRUB2 по-прежнему нужна таблица разделов.
Для загрузки в режиме BIOS, в MBR никаких дополнительных разделов создавать не нужно, достаточно единственного раздела на весь диск, полностью отданного под LVM, и оставленного свободного места перед разделом для встраивания загрузчика.
Для загрузки в режиме UEFI, или загрузки с GPT в любом режиме, требуется как минимум один загрузочный раздел вне LVM для стартового образа GRUB2, но не для файлов загрузчика, и не для образов ядра (не /boot ).
Установка на образ диска
В некоторых случаях может понадобиться установить GRUB2 на образ диска, например, для загрузки в виртуальной машине. К сожалению, в нынешних версиях (на конец 2015г) программа установки загрузчика grub-install по-умолчанию считает loop-устройство, через которое подключается образ, не имеющим разделов, а потому не ищет на нём таблицу разделов, и не включает в начальную загрузку модуль чтения таблицы разделов.
Пример установки GRUB2 на образ диска с MBR, и размещением файлов загрузчика в каталоге /grub на первом разделе:
Переустановка загрузчика
Переустановка пакета не переустанавливает загрузчик.
Переустановка GRUB2 выполняется командой grub-install, и ничем не отличается от установки.
Переустановка GRUB2 может потребоваться в следующих случаях:
Переустановка GRUB2 не требуется:
Перенос загрузчика
Загрузчик GRUB состоит из двух частей: (внефайлового) загрузочного кода в таблице разделов и файлов в каталоге /grub (/boot/grub).
Если загрузчик переносится на другой диск, также может потребоваться изменение настроек BIOS/UEFI, чтобы загрузка начиналась с этого диска.
Загрузчик GRUB не читает fstab и игнорирует флаг bootable в MBR, поэтому любые манипуляции с ними не имеют никакого отношения к установке, переустановке или переносу GRUB.
После установки
В настоящее время GRUB2, сразу после установки, готов к работе только в режиме консоли. (Это будет продолжаться до тех пор, пока мейнтейнеры пакета «grub» не заменят бессмысленный дефолтный файл конфигурации загрузчика на рабочую статическую или автоматически генерируемую версию.)
Чтобы получить при загрузке действующее меню GRUB2, требуется заменить файл grub.cfg самостоятельно. Речь об этом идёт в следующей части «Настройка».
Настройка
Главный файл конфигурации загрузчика
Автоматическая конфигурация (grub-mkconfig)
Генерация конфига
Чтобы применить изменения, запустите команду:
Параметры конфигуратора
Дефолтный файл /etc/default/grub содержит параметры конфигуратора с настройками по-умолчанию, снабженные комментариями на английском языке. Ниже перечислены некоторые наиболее общие из них:
Другие параметры конфигуратора вы можете найти ниже, в соответсвующих тематических главах.
Прямая конфигурация
GRUB2 – программируемый загрузчик, и файл его конфигурации – это не файл настроек, а программа, выполняемая загрузчиком, скрипт. Как всякий скрипт, он может быть как очень простым, не сложнее menu.lst в GRUB Legacy, так и очень сложным, поскольку сложность скриптов практически ничем не ограничена.
При запуске автоматического конфигуратора, выполняется набор скриптов, работающих на уровне ОС, которые генерируют скрипт конфигурации загрузчика. Уже этот, сгенерированный скрипт, выполняется на уровне загрузчика, и в свою очередь, генерирует меню GRUB. Такая схема предполагает некоторое упрощение типовой настройки GRUB, но ценой загромождения кода, снижения надёжности и гибкости.
Прямое написание скрипта даёт непосредственный доступ ко всем возможностям GRUB2, значительно большую гибкость, надёжность и стабильность, просто за счёт упрощения кода и устранения лишних звеньев в цепочке.
Язык конфигурации GRUB2 – сильно упрощённый UNIX-шелл, из которого убраны возможности перенаправления ввода-вывода, и добавлены команды, специфичные для загрузчика.
Автоматический генератор конфигурации изначально создавался для дистрибутивов Debian и Ubuntu, в которых используются версионные имена образов ядра, что заставило разработчиков этих дистрибутовов создавать автоматические генераторы конфигов вообще для всех используемых там загрузчиков.
В ArchLinux не используется версионное обновление ядер – имена образов ядра и initramfs для каждого пакета с ядром не меняются при обновлении, и файл конфигурации загрузчика не обновляется при обновлении ядра.
Более того, возможности скриптов GRUB2 позволяют средствами самого загрузчика, прямо перед загрузкой ОС, генерировать меню с переменным количеством строк, для поиска и загрузки всех установленных ядер ArchLinux, без изменения каких-либо файлов конфигурации. То же самое возможно и для версионных ядер Debian и Ubuntu.
Примеры кода конфигурации даны ниже, подробный справочник имеется на сайте GRUB.
Прежде чем приступать к написанию конфига, крайне желательно защитить его от возможной перезаписи при обновлении/переустановке пакета grub.
Защита конфигурации
К сожалению, мейнтейнеры пакета grub отказываются убирать из него бессмысленный, по определению неработающий и никому не нужный «дефолтный» вариант файла grub.cfg, создающий небольшую, но постоянную угрозу перезаписи настоящего рабочего конфига GRUB, особенно в случае ошибок со стороны мейнтейнеров. Эта опасность не зависит от используемого метода конфигурации GRUB – и ручной, и автогенерированный конфиг может быть однажды случайно перезаписан или переименован при очередном обновлении пакета, и выяснится это с большой вероятностью только после перезагрузки.
Вынос конфигурации в другой файл
Так как GRUB поддерживает модульность конфигурации, можно оставить в файле grub.cfg только одну строку со ссылкой на другой файл, например menu.cfg
и в дальнейшем вместо grub.cfg править только menu.cfg
Для автоконфигурации в этом случае можно использовать команду
Прямая блокировка grub.cfg
Чтобы защитить файл от любых изменений, присвойте ему атрибут immutable
Блокировка снимается командой
Если основная конфигурация уже вынесена в другой файл, блокировку grub.cfg достаточно установить однажды и больше не снимать.
Блокировка защитит файл от перезаписи скриптами установки пакетов. Чтобы избежать конфликта с файлом из пакета, добавьте его имя в строку NoUpgrade в /etc/pacman.conf :
Перенос каталога grub
Если каталог grub/ со всеми файлами загрузчика расположен в корневом разделе, для защиты конфигурации можно переместить его из /boot в другое место в пределах раздела, проще всего прямо в корень :
Если вы используете автоконфигуратор, не забудьте после переноса заменить возможные упоминания /boot/grub на /grub в файлах /etc/default/grub и /etc/grub.d/*
Для генерации конфига после переноса можно пользоваться командой
Синтаксис файла конфигурации GRUB
Пример минимальной работающей конфигурации
Здесь только один пункт меню, загрузчик в корневом разделе, который передаётся ядру меткой Arch_root
Основные команды и переменные
Файл конфигурации состоит из команд, выполняемых по порядку, как в обычном шелл-скрипте.
Стандартный пример конфигурации
В этом примере так или иначе фигурируют три раздела:
Вторичные конфиги, вложенные меню и смена контекста
Как и UNUX-шелл, GRUB2 поддерживает три вида переменных: обычные, позиционные параметры и переменные окружения.
Обычные переменные создаются в момент первого присвоения, командой set переменная=значение
При этом само слово set можно не писать:
Для уничтожения обычной переменной может быть использована команда unset
Обычные переменные могут быть экспортированы «в окружение» командой export
Так же как в шелл-скриптах, из одного конфига GRUB2 может вызван другой файл конфига.
Постоянное именование устройств
Пример загрузки ядра с автоматической подстановкой UUID:
Параметры команды probe здесь те же самые, просто в сокращённой форме.
Метки
Метку можно подставить в параметры ядра. Пример:
Если загрузчик находится в отдельном от ядра и корня разделе, корневой раздел можно указать через метку и загрузчику:
Особые типы устройств
Загрузка других операционных систем
GRUB можно использовать для загрузки и других установленных на той же машине дистрибутивов и операционных систем. Для добавления каждого нового пункта загрузочного меню GRUB, в его конфиг добавляется своя секция menuentry. Примеры конфигурации дополнительных пунктов для запуска Linux и Windows приведены ниже.
Если вы используете автоконфигурацию GRUB, но хотите, чтобы в генерируемый конфиг добавлялись ваши пункты меню, написанные вручную, отредактируйте файл /etc/grub.d/40_custom и допишите их в конец этого файла. Всё его содержимое будет добавлено в конфиг загрузчика при запуске grub-mkconfig
GNU/Linux
В этом примере другой дистрибутив Linux загружается с раздела sda2 :
Windows
Операционные системы Windows не поддерживают протокол Multiboot, и GRUB не может загружать Windows непосредственно. Чтобы загрузить Windows, нужно запустить её собственный загрузчик, который, в свою очередь, загружает ядро Windows и набор необходимых для старта драйверов, по списку, который он читает из реестра Windows.
Для BIOS и для UEFI в одной и той же версии Windows используются две различных версии загрузчика, каждая со своими особенностями. Windows, установленная в режиме BIOS, не имеет UEFI-загрузчика и не стартует в режиме UEFI, и наоборот – будучи установленной в режиме UEFI, Windows не стартует режиме BIOS.
Windows в режиме BIOS
Загрузчик Windows для режима BIOS поддерживает только одну таблицу разделов – MBR, и не поддерживает GPT, независимо от версии Windows. Кроме того, 32-битная версия Windows XP может быть запущена только в режиме BIOS.
Загрузчик Windows может быть запущен через бут-сектор раздела, на который он установлен:
либо напрямую из его файла, специальной командой ntldr
В Windows Vista и выше файл загрузчика называется иначе, но может быть загружен той же командой:
Windows в режиме UEFI
Загрузчик Windows, установленной в режиме UEFI, поддерживает только одну таблицу разделов – GPT, и не поддерживает MBR.
Запуск FreeDOS
Аналогично командам linux и ntldr, в GRUB предусмотрена возможность прямой загрузки ядра FreeDOS, командой freedos, без использования оригинального загрузочного кода в MBR и бут-секторе:
Это может быть удобно, когда требуется скопировать уже установленную, к примеру, на флешку, FreeDOS, используемую для запуска MHDD и подобных инструментов. Такой способ загрузки позволяет под Linux копировать файлы и каталоги однажды установленной FreeDOS на другие носители, в том числе «мультизагрузочные». (Установка FreeDOS штатным способом, с записью её загрузочного кода в MBR и бут-сектор, требует каждый раз загружать саму FreeDOS, хотя бы в виртуальной машине.)
Запуск программ, работающих без ОС
Memtest86+
Тест памяти memtest86+ (запускается только в режиме BIOS):
EFI-приложения
EFI-приложения можно запускать не только из интерфейса UEFI, но и из других EFI-приложений, в том числе из UEFI-версии GRUB2, с помощью команды chainloader. На примере загрузчика Windows это уже показано выше.
Чтобы запустить EFI-приложение, вовсе не обязательно класть его на раздел EFISYS, особенно если приложение большое, а на спецразделе очень мало места. Достаточно, чтобы файл приложения читался средствами GRUB, а переменная root указывала на EFISYS. В этом примере UEFI Shell запускается прямо из /boot :
При выходе из UEFI Shell вы снова увидите меню GRUB.
Debian, Ubuntu и другие дистрибутивы с версионным обновлением ядра
В дистрибутивах с версионными ядрами, при каждом обновлении ядра автоматически вызывается генератор конфигурации загрузчика, поскольку имена загрузочных образов vmlinuz и initrd меняются при каждом обновлении. Это обстоятельство вынудило разработчиков Debian и Ubuntu сделать автоконфигуратор даже для первой версии GRUB, в которой обычно использовались только статические конфиги.
Если другой дистрибутив установлен на отдельный диск (в режиме BIOS), и имеет собственную установку GRUB2, для его загрузки достаточно запустить другой загрузчик:
В режиме UEFI несколько загрузчиков могут быть установлены и на один диск, и запускаться один из другого как EFI-приложения:
В некоторых случаях (не всегда) другую установку GRUB2 можно запустить в режиме BIOS с помощью команды multiboot, минуя встраивание образа в таблицу разделов:
К сожалению, часто встречается ситуация, когда другой дистрибутив установлен в режиме BIOS на тот же самый диск, в таблицу разделов которого можно установить только один загрузчик, и запустить второй проблематично. В этом случае остаётся либо использовать GRUB из состава того дистрибутива, либо учить штатный загрузчик ArchLinux работать с версионными ядрами.
Самый простой способ это сделать – подсунуть «своему» GRUB конфиг от чужого, в котором всё уже предусмотрено, не забыв перед этим сбросить некоторые переменные, которые могут вызвать проблемы:
Однако, есть возможность обойтись без чужих конфигов и загрузчиков, если использовать динамическую генерацию меню загрузчиком. В конфиг GRUB2 включается скрипт, генерирующий меню для Ubuntu:
Параметры для загрузки чужих ядер здесь вынесены в отдельный файл настроек:
Этот скрипт в конфиге GRUB динамически генерирует отдельное подменю со всеми имеющимися ядрами Ubuntu, и отдельно (для Ubuntu) запоминает последнее выбранное ядро.
Прямая загрузка из образа диска
GRUB2 может загружать образы ядер ОС в том числе из файлов-образов, отображаемых в псевдоустройство командой loopback. Однако следует иметь в виду, что псевдоустройство действует только в пределах загрузчика. В общем случае загрузка из образа выглядит примерно так:
После отображения образа в loop-устройство (имя может быть любым, не только loop), можно средствами GRUB2 обращаться с ним так же, как и с физическими дисками – не только загружать файлы ядра и initrd, что происходит перед загрузкой, а к примеру, прочитать метку ФС образа (требуется для образа Arch):
Так как средства загрузки с loopback-устройства в разных дистрибутивах различаются, для каждого из них требуется передавать при загрузке параметры, специфичные для данного дистрибутива.
В некоторых дистрибутивах средства загрузки из образа могут и вовсе отсутствовать, поэтому не все существующие загрузочные образы могут быть использованы подобным образом.
Во всех приведённых ниже примерах предполагается, что GRUB2 установлен на тот же раздел диска или флешки, где лежат образы (в противном случае см. ниже). Такой способ установки позволяет записать на одну флешку или внешний диск один или несколько образов, при этом сохранив возможность использования оставшегося места на носителе по прямому назначению, с сохранением предпочтительной файловой системы.
Arch Linux ISO
В этом примере GRUB2 загружает официальный установочный образ ArchLinux.
Файл образа с именем вида archlinux-YYYY.MM.DD-x86_64.iso должен лежать в корне раздела. В этом случае текст файла конфигурации можно использовать «как есть», без каких-либо правок – загрузчик сам определит конкретное имя образа (или образов), сам прочитает UUID раздела, метку образа, и при загрузке передаст всё это дистрибутиву через параметры ядра.
Ubuntu desktop ISO
В этом примере GRUB2 загружает любые ISO-образы Ubuntu, кроме серверных. В сгенерированном меню будут варианты загрузки для всех найденных образов Ubuntu.
Как и в предыдущем примере, код не требует никаких правок, если файлы образов лежат в корне раздела, но можно вписать отдельный каталог для них в строку dir=
Загрузка образов с отдельного раздела встроенного диска
Если образы требуется загружать с некорневого раздела встроенного жесткого диска (например, /home ), можно использовать тот же код, создав для него подменю:
Если раздел требуется задать по UUID, можно сделать так:
Защита загрузчика паролем
О защите загрузчика
По-умолчанию GRUB2 предоставляет любому пользователю полный доступ ко всем своим возможностям, включающим в себя не только выполнение любых пунктов меню, но и изменение их кода перед выполнением, а также терминал, позволяющий вручную выполнить любые команды загрузчика.
Всё это может помочь при настройке и восстановлении системы, однако те же самые инструменты существенно облегчают любому посетителю взлом системы. Изменение параметров ядра может быть использовано для получения полномочий root без ввода пароля, а загрузка с внешнего носителя – для получения полного доступа ко всем незашифрованным данным.
GRUB2 включает в себя средства ограничения доступа к загрузчику. С их помощью, в сочетании с ограничением доступа к BIOS, и запретом в BIOS на загрузку с любых внешних носителей, можно сильно затруднить несанкционированный доступ к системе, кроме случая вскрытия корпуса для извлечения дисков или сброса настроек BIOS.
Реализация паролей в GRUB2
Пользователи в GRUB2 делятся на три категории:
Для управления доступом к пунктам меню, команды menuentry и submenu поддерживают следующие опции:
—users= позволяет задать список пользователей, которым разрешено выполнять этот пункт меню
—unrestricted разрешает выполнять этот пункт меню без авторизации.
Список администраторов задаётся в переменной superusers, например так:
Пароль для каждого пользователя отдельно может быть задан в открытом виде командой
либо в зашифрованном (хешированном) виде, командой
Для хеширования пароля используется утилита grub-mkpasswd-pbkdf2. Запустив её и введя (дважды) пароль, можно получить его хеш, пригодный для вставки в конфиг GRUB2.
Чтобы защитить пароли и хеши от просмотра, можно задать права на файл с конфигом GRUB в виде root:root 600, либо вынести команды с паролями в отдельный файл
и ограничить доступ только к нему.
Внедрение паролей в генерируемый конфиг
Есть возможность вставить вручную написанный фрагмент конфига с паролями, добавив в конец файла /etc/grub.d/00_header примерно такие строки:
Пример конфига с паролями
Здесь «Arch Linux» разрешено загружать без авторизации, «Windows» разрешено загружать пользователю second с паролем dnjhjq, а активировать «Boot next disk», позволяющий загрузиться с подключённой флешки, может только администратор по имени root, который никому не сказал свой пароль.
Визуальная настройка
GRUB2 предоставляет возможность менять способы отображения и внешний вид меню.
Цвета меню
Цвета меню GRUB2 задаются в переменных menu_color_normal (общие цвета текста/фона) и menu_color_highlight (цвета текста/фона выделенной строки). Например, цвета по умолчанию для Arch задаются в конфиге GRUB (grub.cfg) так:
или в настройках /etc/default/grub конфигуратора grub-mkconfig так:
Список доступных в GRUB2 цветов можно найти на сайте.
Скрытое меню
grub-mkconfig умеет «скрывать» меню так, что оно появляется на экране только при нажатии клавиши ESC до истечения таймаута. Чтобы использовать эту его возможность, нужно раскомментировать в /etc/default/grub строки
В конфиг GRUB (grub.cfg) для получения аналогичного результата можно добавить такой код:
Если вы используете в загрузчике графический режим с обоями и шрифтами, следует решить, нужно ли их инициализировать до начала отсчёта, или только если отсчёт прерван пользователем.
Настройка параметров режима экрана
Проверка доступных режимов экрана
GRUB2 может работать в текстовом и графических режимах экрана. Актуальный список режимов доступных средствами BIOS или UEFI на конкретной машине, можно получить, выполнив команду videoinfo в консоли загрузчика. На разных машинах, с разными графическими адаптерами, прошивками и мониторами, этот список может существенно отличаться.
Выбрав нужный режим желательно предварительно его проверить с помощью команды videotest режим в той же консоли, примерно так:
Тестовая картинка должна отображаться на экране до нажатия на любую клавишу. Если вы видите её, значит тест пройден.
Текстовый режим
GRUB2 стартует в текстовом режиме. Если нужно вернуться в текстовый режим из графического, можно использовать в скрипте конфигурации, или прямо в консоли GRUB, следующие команды:
Если вы используете автоматический конфигуратор, в настройках которого стоит auto по-умолчанию, загрузчик после старта будет переходить графический режим. Чтобы изменить это его поведение, можно задать для загрузчика текстовый режим:
или же задать текстовый режим только для загрузки ядра:
Графические режимы
Эти режимы могут быть разными:
Также можно задать только один из них, не задавая другой.
Режим экрана для ядра Linux будет установлен в начале загрузки ядра, никаких модулей GRUB для этого специально загружать не требуется.
Существует также старый, специфический для BIOS, способ задать VESA-режим – через параметр ядра Linux vga, например vga=790
Возможные значения для параметра vga, в зависимости от количества цветов и пикселей на экране, можно найти в этой таблице
Однако в некоторых версиях BIOS могут использоваться и другие коды режимов. Актуальные значения можно получить из вывода команды videoinfo в консоли GRUB или же выполнить в терминале запущенной ОС GNU/Linux команду
Команда hwinfo доступна в репозитории community.
Графический режим, шрифт и обои
Установка переменной gfxmode сама по себе НЕ переключает GRUB в графический режим. Чтобы перейти в графику, требуется:
В настройках конфигуратора /etc/default/grub обои можно задать так:
Пример графического режима с установкой дефолтного шрифта и обоев из дефолтной темы оформления. Нужные модули графического режима выбираются автоматически.
и векторными в формате TTF
Установка шрифта на примере Terminus
Пакет terminus-font для GRUB не подходит, требуется скачать с официального сайта его исходники, они как раз в формате BDF. Далее остаётся распаковать архив, конвертировать файл со шрифтом нужного размера, и скопировать в каталог, доступный для GRUB:
Пример фрагмента конфига GRUB со шрифтом Terminus и русским языком:
Проверка загрузки шрифтов
Если шрифты должны были быть загружены, но на экране выглядят неправильно, проверить это можно в консоли GRUB, с помощью команды lsfonts, которая выводит список успешно загруженных шрифтов.
Некоторые файлы шрифтов могут быть устаревшими, и несовместимыми с установленной версией GRUB. Чтобы отдельно проверить загрузку каждого шрифта, можно попробовать вручную загружать их в консоли GRUB командами вида
При попытке загрузить несовместимый шрифт будут выдаваться сообщения об ошибках.
Графическая тема оформления
Даже после переключения в графический режим, меню GRUB отображается с помощью символов псевдографики. Альтернативный вариант отображения GRUB – графические темы оформления
В файлах конфигурации GRUB путь к файлу описания темы требуется записать в переменную theme ДО переключения в графический режим. Чтобы тема могла использовать указанные в ней элементы, до перехода в графику также нужно загрузить модули для использованных в ней форматов картинок (чаще всего png) и загрузить все имеющиеся в ней шрифты.
Пример загрузки темы оформления, входящей в пакет grub :
Некоторые темы оформления GRUB можно найти в AUR.
Автоматизация в меню
Запоминание выбранного пункта меню
В настройках конфигуратора запоминание включается так:
Пример реализации запоминания в конфиге GRUB2 приведён ниже.
Однократная загрузка заданного без смены дефолта
Существует утилита grub-reboot, с её помощью можно из-под ОС запланировать для однократную загрузку другого пункта меню, например так:
В генерированном меню это работает, если перед запуском grub-mkconfig в /etc/default/grub была строка
Пример реализации однократного выбора в конфиге GRUB2 приведён ниже.
Пример конфига GRUB с реализацией запоминания
В данном примере используется предоставляемая GRUB2 возможность сохранения переменных между сеансами.
Команда load_env загружает из файла все сохранённые в нём переменные.
Команда save_env сохраняет указанные переменные в файл.
Динамическое меню
Конфиг GRUB2 это скрипт, выполняемый загрузчиком. Он действительно генерирует, а не статически описывает меню загрузчика.
В этом примере загрузчик сам, «на лету», находит в /boot/ все установленные ядра Arch Linux и образы initramfs, правильно группирует их и формирует меню для их загрузки, а после выбора пункта меню запоминает его. При загрузке в параметры ядра подставляется автоматически найденный загрузчиком UUID корневого раздела.
В grub.cfg пишем только ссылку. (причину см. выше.)
Пользовательские настройки подключаются из отдельного файла settings.cfg
Центральный файл, здесь реализована функция запоминания выбранного пункта меню, сюда же подключены остальные части конфига:
Скрипт поиска ядер и генерации меню:
Консоль GRUB2
Загрузчик GRUB2 выполняет свой файл конфигурации как шелл-подобный скрипт, состоящий из команд. Все те же команды он позволяет выполнять и в интерактивном режиме, с помощью консоли.
Нормальная консоль
Запуск консоли
GRUB2 открывает нормальную консоль, если:
Команды, полезные в консоли GRUB2
Кроме уже описанных в части «Настройка», в консоли GRUB2 могут пригодиться:
В нормальной консоли GRUB2 поддерживает возврат к предыдущим командам и автодополнение команд, каталогов и файлов по нажатию клавиши TAB, как в консоли Linux.
Пример загрузки ArchLinux из консоли загрузчика
Если вы успешно установили загрузчик в корневой раздел, но забыли создать конфиг загрузчика, вы увидите меню из дефолтного конфига, но оно не будет работать. Чтобы продолжить загрузку, вы можете войти в консоль, нажав клавишу «c«, и выполнить команды:
Пример загрузки с внешнего диска из консоли
Во многих версиях BIOS нет специального интерфейса для однократной загрузки с флешки. Для этого можно создать отдельный пункт меню, но на один раз проще обойтись консолью GRUB:
Пример конфига с загрузкой без меню
В этом примере GRUB2 загружает с диска образы ядра и initramfs, ждёт 3 секунды, и запускает ядро.
Если же в течении этих секунд пользователь нажмёт ESC, он попадёт в консоль загрузчика. Так как ядро уже загружено, для продолжения загрузки достаточно набрать команду boot в консоли.
Аварийная консоль
Аварийная консоль GRUB2 встроена в стартовый образ загрузчика, и запускается в случаях, когда GRUB2 не может самостоятельно перейти в «нормальный» режим. Такое может случиться, если ядро GRUB2 при загрузке не нашло каталог со своими файлами и модулями по пути, указанному в переменной prefix.
Если вы знаете, что делалось с диском перед тем, как GRUB показал ошибку, то возможно, вы уже догадываетесь, в чём ошибка и удастся ли её исправить.
Если у вас получилось найти правильный диск, раздел и каталог, и вы успешно прописали из в переменные, остаётся загрузить модуль «normal» и выполнить одноимённую команду (она станет доступна после загрузки модуля), чтобы перейти в «нормальный» режим загрузчика:
Если же из аварийной консоли не удаётся получить доступ к нужному каталогу с файлами загрузчика – увы, но больше она ничем не сможет помочь, и вам придётся обратиться к другим способам загрузки, например с внешних носителей.
Запуск GRUB2 из других загрузчиков
Загрузка из старых версий GRUB
Код конфига для GRUB Legacy, с загрузкой GRUB2:
Загрузка из syslinux
Примеры исправления проблем
Сообщение о невозможности встраивания в MBR
Эта ошибка может возникнуть, когда вы попытаетесь установить в виртуальную машину VMware. Читайте больше об этом здесь.
Это также может случится, если первый раздел начинается сразу после MBR, без необходимого места в 60 блоков перед первым разделом.










