Параметры меню
Файл /etc/default/grub описывает различные параметры, влияющие на отображение и работу меню загрузки. Подробную информацию о допустимых параметрах, для этого файла, можно найти здесь.
По умолчанию файл /etc/default/grub содержит следующие настройки:
GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=openvz_ukapp1/root quiet" GRUB_DISABLE_RECOVERY="true"
Рассмотрим назначение каждой строки:
-
GRUB_TIMEOUT=5
Устанавливает задержку до начала автоматической загрузки. Если никакая клавиша на клавиатуре не будет нажата, то будет выполнена загрузка с параметрами, выбранными по умолчанию.
-
GRUB_DISTRIBUTOR=»$(sed ‘s, release .*$,,g’ /etc/system-release)»
Как правило, в каждой ОС настраивается индивидуально и содержит дополнительную информацию о системе, отображаемую в меню загрузки.
-
GRUB_DEFAULT=saved
Устанавливает пункт меню по умолчанию. В данном случае указано, что пункт меню по умолчанию должен быть получен из файла-хранилища переменных /boot/grub2/grubenv из переменной saved_entry.
-
GRUB_DISABLE_SUBMENU=true
Формировать одноуровневое меню grub2.
-
GRUB_TERMINAL_OUTPUT=»console»
Устройство, для отображения информации. Может быть указано несколько устройств.
-
GRUB_CMDLINE_LINUX=»crashkernel=auto rd.lvm.lv=openvz_ukapp1/root quiet»
Добавляет указанные параметры в строку инициализации ядра Linux. Работает как для стандартного режима загрузки, так и для режима восстановления.
-
GRUB_DISABLE_RECOVERY=»true»
Отключает меню режима восстановления (recovery mode) в меню загрузки grub2.
В фале /etc/grub.d/40_custom можно указать собственные пункты меня для grub2.
В случае внесения изменений в файлы /etc/default/grub или /etc/grub.d/40_custom необходимо сформировать новое меню с помощью команды:
# grub2-mkconfig -o /boot/grub2/grub.cfg
или для EFI
# grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
Устанавливаем фоновое изображение
Установим пакет, который содержит готовые фоновые изображения для Grub2. Выполните в терминале команду:
Изображения автоматически устанавливаются в директорию /usr/share/images/grub. Чтобы выбрать нужное изображение откройте эту директорию в файловом менеджере. Например, чтобы открыть ее в файловом менеджере Nautilus, выполните команду:
Теперь нужно прописать путь до вашего изображения в файле конфигурации Grub. Для этого откроем файл конфигурации в редакторе GEdit:
Файл /etc/default/grub содержит различные настройки для Grub 2. Строки, начинающиеся с символа решетка #, являются комментариями и игнорируются. Для указания пути до фонового изображения используется опция GRUB_BACKGROUND. Добавьте в файл следующую строку:
В кавычках я указал путь до файла Moraine_Lake_17092005.tga.
Обновляем настройки Grub
Теперь нужно, чтобы Grub обновил свои настройки. Для этого выполните команду (в результате выполнения этой команды настройки ваши автоматически записываются в файл /boot/grub/grub.cfg):
В результате на экран будут выводится строки вида:
Мы видим, что Grub нашел наше изображение (строка «Found background image …»). Если такой строки нет, значит вы неправильно указали путь до файла (путь нужно указывать абсолютный).
Если же вы получили сообщение вида:
Это значит, что изображение имеет формат, который не поддерживается загрузчиком Grub.
progress_bar — Горизонтальный индикатор обратного отсчёта времени
Этот элемент служит для отображения времени, оставшегося до автоматической загрузки пунта, выделенного по умолчанию.
Изначально прогресс показывается не от начала индикатора.
left, top, width, height — координаты прямоугольника
Стандартные параметры, не забудьте их задать.
Обратите внимание, что если width или height будет меньше, чем необходимо для отображения заданного текста, то width или height будет автоматически увеличено.
id — идентификатор
Чтобы происходило отображение обратного отсчёта времени (текстом или визуально), необходимо задать предопределённое значение для id.
id = "__timeout__"
text — текст, выводимый на индикаторе
Текст, выводимый на индикаторе отсчёта времени.
Есть несколько встроенных особых значений. Они имеют особый смысл и переводятся на разные языки.
- @TIMEOUT_NOTIFICATION_SHORT@ для «Nс»
- @TIMEOUT_NOTIFICATION_MIDDLE@ для «осталось Nс.»
- @TIMEOUT_NOTIFICATION_LONG@ для «Выделенный пункт будет выполнен автоматически через Nс.»
N — это количиство секунд до автозапуска пункта по умолчанию. Строка обновляется каждую секунду.
Также можно задать любое значение.
Цвет шрифта и шрифт для выводимого на индикаторе текста.
Подробнее о создании шрифтов в .
Одноцветный режим и режим с оформлением
Предусмотрены два варианта оформления:
- одноцветный, с заливкой областей фиксированными цветами и однопиксельной рамкой
- с элементам оформления, или «рамочками»
Если использована хотя бы одна опция для оформления с использованием «рамочек», то будет включён второй режим. Иначе используется первый режим.
Подбробнее далее.
bg_color, fg_color, border_color — для одноцветного режима
+ progress_bar { left = 50%-300 top = 50%+200 width = 600 height = 50 id = "__timeout__" text = "@TIMEOUT_NOTIFICATION_LONG@" border_color = "white" }
В примере используются значения по умолчанию:
bg_color = "128, 128, 128" fg_color = "200, 200, 200"
bar_style, highlight_style — для режима с оформлением
Обратите внимание, что для highlight_style рекомендуется использовать элементы оформления, состоящие только из центральной области. Иначе индикатор отсчёта времени будет отображён некорректно.. Обратите внимание, что достаточно использовать одну из опций для включения режима.
Обратите внимание, что достаточно использовать одну из опций для включения режима.
+ progress_bar { left = 50%-300 top = 50%+200 width = 600 height = 50 id = "__timeout__" text = "@TIMEOUT_NOTIFICATION_LONG@" bar_style = "inbox_*.png" highlight_style = "progress_*.png" }
Убрать оформление
Чтобы убрать оформление и оставить только текстовую строку, нужно придать одинаковые значения bar_style и highlight_style.
Значение может быть любым, не обязательно, чтобы оно соответствовало какому-то реальному элементу оформления.
В значении обязательно должен присутствовать символ «*«.
В примере текст сообщения сделан белым.
+ progress_bar { left = 50%-300 top = 50%+200 width = 600 height = 50 id = "__timeout__" text = "@TIMEOUT_NOTIFICATION_LONG@" text_color = "white" bar_style = "*" highlight_style = "*" }
visible — не показывать горизонтальный индикатор
Можно задать значение False. Тогда индикатор обратного отсчёта времени не будет отображён. Аналогично, можно просто не указывать индикатор в главном файле темы.
Типичные проблемы
Как восстановить GRUB после удаления?
Это часто происходит, если вы устанавливаете Windows после Linux. Windows считает, что она единственная операционная система в мире и не пытается интерпретировать существующую информацию, находящуюся в MBR.
Она ее просто перезаписывает. Для людей, у которых имеется система двойной загрузки и небольшие познания в Linux, — это просто катастрофа. К счастью это очень легко поправимо.
Сложный способ
- Загрузитесь с флоппи диска или CD (любой Linux live CD должен подойти)
- Войдите в режим командной строки GRUB.
grub> find /boot/grub/stage1 (optional) grub> root (hdX,Y) grub> setup (hd0) grub> quit
Все тоже самое, что и раньше!
Windows установлена не на первом жестком диске (Своппинг)
GRUB не может загрузить напрямую операционную систему Microsoft. Иногда даже последовательная загрузка может не работать, особенно, если Windows установлена не на первом жестком диске. И снова вы должны помнить, что нужно устанавливать Windows первой, на первый жесткий диск и на первый раздел (правило 3П — трех первых). При этом, даже если вы установили Windows на отдельном диске, вы можете решить проблему с помощью .
Вам необходимо сделать между жесткими дисками. Таким образом:
grub> map (hd0) (hd1) grub> map (hd1) (hd0)
После добавления этих двух строк, вы должны загрузить Windows (или DOS).
С Windows опять могут возникнуть проблемы, если имеется несколько экземпляров размещенных на одном жестком диске, в особенности, если они установлены на первичных разделах. Раньше, когда вы использовали команду chainloader (последовательная загрузка), вы передавали управление начальному загрузчику Windows. Какому загрузчику операционной системы передать управление сейчас?
Проблема легко решается с помощью и разделов. Если GRUB скроет раздел, то он будет невидим для Windows, что позволить избежать неопределенности. И наоборот, если вы сделаете видимым раздел, Windows обнаружит его и сможет с него загрузиться.
Приводимый здесь пример, взят из руководства, он демонстрирует этот момент.
Предположим, что мы имеем установленную Windows на и разделе жесткого диска. Вы хотите загрузить экземпляр Windows. Тогда вам необходимо выполнить следующую последовательность команд, которая сделает всю требуемую работу.
grub> unhide (hd0,0) grub> hide (hd0,1) grub> rootnoverify (hd0,0) grub> chainloader +1 grub> makeactive
Вы изменили размер раздела; GRUB не работает
Это интересный случай. Он может случиться после использования программного обеспечения для работы с жесткими дисками (управление разделами жесткого диска, восстановление разделов из образов разделов, и т.д.), которое изменяет Таблицу Разделов. Обычно это случается, когда вы делаете такие изменения из Windows. Linux не будет информирована об этих изменениях, потому что Windows не обращает внимания ни на что, кроме имеющихся на этой машине продуктов Microsoft. Следовательно, GRUB не будет работать.
Скорее всего повреждена файловая система и ее необходимо восстановить для решения данной проблемы.
Загрузитесь с live CD и выполните следующие команды (предполагается что вы знаете, где размещены Linux-разделы).
$ fsck.ext2 /dev/hdXY
Замените и буквой жесткого диска и номером раздела, который вы хотите проверить (hda2, hdb3, и т.д.).
Измените тип файловой системы на .
$ tune2fs -j /dev/hdXY
Теперь на и запустите :
$ mount -t ext2 /dev/hdXY /mnt/sysimage ИЛИ $ mount -t ext2 /dev/hdXY /mnt/sysimage $ cd /mnt/sysimage/sbin $ grub
Вы снова вернулись в знакомую среду.
Для получения дополнительной информации о командах Linux, например, , и других, обратитесь к на .
В заключение, несколько каверзных вопросов, отвеченных в Ubuntu :
Установка Grub2 в Windows 7
Grub2 может быть установлен в операционных системах Windows.
Особенно хорошо он «вписывается» в Windows 7′ в связи с тем, что эта ОС выделяет под загрузку специальный скрытый раздел.
Для установки в Grub2 в Windows 7
- запускается современный LiveCD диск с установленной Linux системой и последней версий загрузчика, например Parted Magic
- монтируется раздел жёсткого диска с установленной Windows 7
# mount -t ntfs /dev/sda1 /media/sda1 # mount -t ntfs /dev/sda2 /media/sda2
- перемещаются загрузочные файлы Windows 7 — bootmgr, bootsect.bak и каталог Boot/ — со скрытого раздела жёсткого диска (/dev/sda1) на системный (/dev/sda2)
- устанавливается Grub2 на первый (скрытый) раздел жёсткого диска и в MBR
# grub-install --modules=ntfs --recheck --no-floppy --root-directory=/media/sda1 /dev/sda на устройстве /media/sda1 появляются файлы Grub2 в каталоге /media/sda1/boot
- в файле конфигурации
menuentry "Windows 7" { set root=(hd0,2) chainloader +1 }
Теперь при перезапуске появится меню Grub2 с пунктом выбора «по цепочке» загрузчика Windows 7.
Ссылки:
Если числовые значения принимают недопустимые значение
Обратите внимание, что абсолютные и относительные значения берутся относительно родительского контейнера.
Для удобства назовём ширину и высоту родительского контейнера, соответственно, parent_width и parent_height.
Если left или top оказались отрицательными, они приравниваются к 0.
Если left + width оказывается больше, чем parent_width, то width приравнивается к parent_width - left. Таким образом, правый край будет совпадать с правым краем родительского контейнера.
Если top + height оказывается больше, чем parent_height, то height приравнивается к parent_height - top. Таким образом, нижний край будет совпадать с нижним краем родительского контейнера.
Эти особенности мы можем использовать для того, чтобы при разных разрешениях у нас было разное взаиморасположение элементов интерфейса.
Play a tune
You can play a tune through the PC-speaker while booting (right before the menu appears) by modifying the variable . For example, to play Berlioz’s extract from Sabbath Night of Symphonie Fantastique (bassoon part) you can add the following:
GRUB_INIT_TUNE="312 262 3 247 3 262 3 220 3 247 3 196 3 220 3 220 3 262 3 262 3 294 3 262 3 247 3 220 3 196 3 247 3 262 3 247 5 220 1 220 5"
This section is being considered for removal.
You can add a menu entry to play each of these common samples by creating the following file and then re-running .
/etc/grub.d/91_tune_demo
#!/bin/sh exec tail -n +3 $0 menuentry "INIT_TUNE Demos" { echo "Close Encounters/5 Tone" play 480 900 2 1000 2 800 2 400 2 600 3 echo "Fur Elise (note long)" play 480 420 1 400 1 420 1 400 1 420 1 315 1 370 1 335 1 282 3 180 1 215 1 282 1 315 3 213 1 262 1 315 1 335 3 213 1 420 1 400 1 420 1 400 1 420 1 315 1 370 1 335 1 282 3 180 1 215 1 282 1 315 3 213 1 330 1 315 1 282 3 echo "Berlioz's extract from Sabbath Night of Symphonie Fantastique" play 312 262 3 247 3 262 3 220 3 247 3 196 3 220 3 220 3 262 3 262 3 294 3 262 3 247 3 220 3 196 3 247 3 262 3 247 5 220 1 220 5 echo "Oldskool Batman tune" play 380 120 1 140 1 160 1 200 8 190 4 echo "Legend of Zelda tune" play 12000 440 100 0 1 329 150 440 50 0 1 440 25 493 25 523 25 587 25 659 200 echo "Super Mario" play 1000 334 1 334 1 0 1 334 1 0 1 261 1 334 1 0 1 392 2 0 4 196 2 echo "Super Mario Alternate" play 480 165 2 165 2 165 3 554 1 587 1 554 2 370 1 554 1 523 2 349 1 523 1 494 3 165 2 165 2 165 2 echo "Mario Mushroom" play 1750 523 1 392 1 523 1 659 1 784 1 1047 1 784 1 415 1 523 1 622 1 831 1 622 1 831 1 1046 1 1244 1 1661 1 1244 1 466 1 587 1 698 1 932 1 1175 1 1397 1 1865 1 1397 1 echo "Star Wars Imperial Death March" play 480 440 4 440 4 440 4 349 3 523 1 440 4 349 3 523 1 440 8 659 4 659 4 659 4 698 3 523 1 415 4 349 3 523 1 440 8 echo "My Little Pony" play 2400 587 18 554 4 587 8 659 12 587 16 0 10 587 4 659 4 740 8 587 4 784 12 740 8 659 8 587 4 740 20 587 40 echo "Wolfenstein 3D" play 300 131 1 196 1 196 1 196 1 294 1 196 1 294 1 196 1 131 1 echo "Mall (Nothing Special)" play 180 440 1 554 1 659 1 echo "Final Countdown" play 480 554 1 494 1 554 4 370 6 10 3 587 1 554 1 587 2 554 2 494 6 echo "Xie-Jelei's Tune" play 2000 400 4 0 1 500 4 0 1 600 4 0 1 800 6 echo "Random tune" play 480 220 1 277 1 330 1 440 1 185 1 220 1 277 1 370 1 294 1 370 1 440 1 587 1 330 1 415 1 494 1 659 1 echo "Fleetwood Mac: The Chain Bass Riff (about 5 seconds)" play 304 55 5 0 1 55 1 62 1 65 2 62 1 55 1 49 1 55 1 62 2 41 8 echo "Fleetwood Mac: The Chain Bass Riff Extended Version (WARNING, 25 SECONDS)" play 9120 55 150 0 30 55 30 62 30 65 60 62 30 55 30 49 30 55 30 62 60 41 360 0 120 55 150 0 30 55 30 62 30 65 60 62 30 55 30 49 30 55 30 62 60 41 360 0 60 41 12 42 3 43 3 44 3 45 3 46 6 47 3 48 3 49 6 50 3 51 3 52 6 53 3 54 3 55 150 0 30 55 30 62 30 65 60 62 30 55 30 49 30 55 30 62 60 41 240 82 20 0 10 82 26 0 4 82 26 0 4 82 26 0 4 82 56 0 4 82 60 55 150 0 30 55 30 62 30 65 60 62 30 55 30 49 30 55 30 62 60 41 360 0 120 }
For information on this, you can look at .
Лучшие темы GRUB
1. Vimix
Тема в стиле материальном стиле, созданная как дополнение одноимённой темы для GTK. Укомплектована скриптом install.sh, который во многом упрощает её установку. Запускать скрипт нужно дважды; в первый раз он установит зависимости, а во второй саму тему.
Ещё одна тема с материальным дизайном от автора Vimix. Также устанавливается с помощью скрипта install.sh.
3. CyberRe
Кибернетическая тема. Все её элементы окрашены в яркие, контрастные цвета, а благодаря оформлению, схожему с дизайном программ для обработки данных, ваш экран загрузки будет выглядеть очень необычно. Как и две предыдущие темы, устанавливается с помощью скрипта install.sh.
4. Fallout
Эта тема понравится фанатам игры Fallout. Если вы из их числа, устанавливайте новое оформление с помощью утилиты Grub Customizer и ваш экран загрузки будет выглядеть, словно точная копия компьютера из игры.
5. Sleek
Автор темы предлагает на выбор несколько цветовых вариантов: светлый, оранжевый, тёмный и стилизованный под macOS BigSur. В теме можно установить приветствие пользователя по имени; для этого введите желаемое имя во время работы установочного скрипта install.sh.
Третья материальная тема от Vinceluice — автора Vimix и Tela. Используйте для установки скрипт install.sh.
7. Primitivistical
Примитивная тема для GRUB 2. Её отличительная особенность в том, что при наведении курсора на название дистрибутива рядом с ним появляется соответствующая иконка. При установке скрипт Install.sh распознаёт все имеющиеся на диске операционные системы и задаёт для них изображения.
8. Poly Light
Тема в серых тонах с поддержкой большого количества языков. Можно установить её через Grub Customizer или воспользоваться скриптом install.sh.
Минималистичная тема с иконками для разных дистрибутивов.
10. Breeze
Тема с иконками и красивой фоновой картинкой. Создана в стандартном для KDE 5 стиле Breeze.
Эту тему можно установить вручную, следуя инструкции, которая дана в начале статьи. Чтобы окно загрузчика выглядело так же, как на скриншоте, выполните в терминале команду:
label — текстовая строка
Мы можем отобразить текст с помощью элемента label.
Также, задав определённым образом id и text, мы можем отобразить время, оставшееся до автоматической загрузки пункта по умолчанию.
Обратите внимание, что строки не переносятся. Если текст не помещается в заданный прямоугольник, он пишется правее до конца экрана.
left, top, width, height — координаты прямоугольника
Стандартные параметры, не забудьте их задать.
Обратите внимание, что width используется только для оценки смещения текста, если задан параметр align со значениями «center» или «right».
Также обратите внимание, что height не используется.
Цвет шрифта и шрифт для выводимого на элементе текста.
Подробнее о создании шрифтов в .
align — выравнивание
Доступны три значения:
- left — выровнять текст по левому краю элемента
- center — выровнять текст по центру элемента
- right — выровнять текст по правому краю элемента
Отобразить время до автоматической загрузки
Чтобы происходило отображение обратного отсчёта времени, необходимо задать значение для id. И не должен быть указан параметр text.
+ label { left = 50%-350 top = 50%+260 height = 30 width = 30 id = "__timeout__" color = "white" }
text — отображаемый текст
Мы можем отобразить любое текстовое сообщение.
Есть несколько особенных значений.
- @KEYMAP_SHORT@ для отображения ««enter»: загрузка, «e»: параметры, «c»: командная строка»
- @KEYMAP_MIDDLE@ для отображения «Нажмите «enter» для загрузки выбранной ОС, «e» для редактирования команд до загрузки или «c» для получения командной строки.»
- @KEYMAP_LONG@ для отображения «Нажмите «enter» для загрузки выбранной ОС, «e» для редактирования команд до загрузки или «c» для получения командной строки. По ESC осуществляется возврат в предыдущее меню.»
Особенные значения переводятся на выставленный язык.
Обратите внимание, что текст не переносится построчно и не обрезается по ширине.
+ label { left = 50%-300 top = 50%+220 height = 30 width = 600 color = "white" align = "right" text = "Some text." }
файл конфигурации загрузчика /boot/grub2/grub.cfg
До тех пор, пока мы не перегенерируем файл конфигурации загрузчика, наши изменения не вступят в силу.
Обычно в системе есть скрипт update-grub2, который необходимо запустить с правами root.
Если такого скрипта нет, то нужно выполнить (опять же, с правами root) команду grub2-mkconfig -o /boot/grub2/grub.cfg.
Собственно, update-grub2 выполняет именно эту команду.
update-grub2 Необходимо вызывать всякий раз, когда мы вносим изменения в /etc/default/grub.
Почти всё, что касается темы Grub2, описано в theme.txt. Grub2 парсит этот файл каждый раз при загрузке. А значит, чтобы посмотреть изменения, внесённые в theme.txt или в директорию нашей новой темы, достаточно перезагрузиться. update-grub2 прописывает адрес к главному файлу темы в файл конфигурации загрузчика.
Общие концепции
Для начала ознакомьтесь со .
Каждый параметр имеет определённый тип.
Обратите внимание, что глобальные опции и названия компонентов проверяются. И если допущена ошибка, при загрузке будет отображено сообщение об ошибке
Для параметров компонентов это не работает. Если допущена ошибка, то параметр не будет применён и сообщение об ошибке не будет показано.
Как установить меню по умолчанию
Вывести полный список доступных в системе пунктов меню grub2 можно следующими командами:
# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg 0 : Virtuozzo 7 (3.10.0-693.21.1.vz7.47.4) 1 : Virtuozzo 7 (3.10.0-693.21.1.vz7.46.7) 2 : Virtuozzo 7 (3.10.0-693.21.1.vz7.46.4) 3 : Virtuozzo 7 (3.10.0-693.17.1.vz7.43.10) 4 : Virtuozzo (3.10.0-693.11.6.vz7.40.4) 7.0.6 5 : Virtuozzo (0-rescue-c6f435f377da4e8fa46dc006ea3fc061) 7.0.6
или
# grep "^menuentry" /boot/grub2/grub.cfg | cut -d "'" -f2
Для указания пункта меню по умолчанию, можно указать его номер по порядку (отсчет начинается с нуля) или полное имя.
Например, оба варианта будут идентичны. Данные взяты из приведенного выше списка:
# grub2-set-default "Virtuozzo 7 (3.10.0-693.17.1.vz7.43.10)"
или
# grub2-set-default 3
Проверить правильность установки элемента меню grub2 по умолчанию:
# grub2-editenv list saved_entry=Virtuozzo 7 (3.10.0-693.17.1.vz7.43.10)
Manual configuration of core image for early boot
If you require a special keymap or other complex steps that GRUB is not able to configure automatically in order to make available to the GRUB environment, you can generate a core image yourself. On UEFI systems, the core image is the file that is loaded by the firmware on boot. Building your own core image will allow you to embed any modules required for very early boot, as well as a configuration script to bootstrap GRUB.
Firstly, taking as an example a requirement for the keymap embedded in early-boot in order to enter a password for an encrypted on a UEFI system:
Determine from the generated file what modules are required in order to mount the crypted . For instance, under your you should see lines similar to:
insmod diskfilter cryptodisk luks gcry_rijndael gcry_rijndael gcry_sha256 insmod ext2 cryptomount -u 1234abcdef1234abcdef1234abcdef set root='cryptouuid/1234abcdef1234abcdef1234abcdef'
Take note of all of those modules: they will need to be included in the core image. Now, create a tarball containing your keymap. This will be bundled in the core image as a memdisk:
# grub-kbdcomp -o dvorak.gkb dvorak # tar cf memdisk.tar dvorak.gkb
Now create a configuration file to be used in the GRUB core image. This is in the same format as your regular grub config, but need contain only a few lines to find and load the main config file on the partition:
early-grub.cfg
set root=(memdisk) set prefix=($root)/ terminal_input at_keyboard keymap /dvorak.gkb cryptomount -u 1234abcdef1234abcdef1234abcdef set root='cryptouuid/1234abcdef1234abcdef1234abcdef' set prefix=($root)/grub configfile grub.cfg
Finally, generate the core image, listing all of the modules determined to be required in the generated , along with any modules used in the script. The example above needs , , , and .
# grub-mkimage -c early-grub.cfg -o grubx64.efi -O x86_64-efi -m memdisk.tar diskfilter cryptodisk luks gcry_rijndael gcry_sha256 ext2 memdisk tar at_keyboard keylayouts configfile
The generated EFI core image can now be used in the same way as the image that is generated automatically by : place it in your EFI partition and enable it with , or configure as appropriate for your system firmware.
Процесс загрузки
Когда вы включаете компьютер, процессору необходимо знать, какую последовательность действий ему следует выполнять. На материнской плате хранится список устройств, с которых компьютер может загрузиться. Этот список задает порядок загрузки (жесткие диски, флеш-карты, usb-устройства), то есть, в какой очередности следует выполнять запрос на загрузку с них. Процессор пробует загрузиться с устройства, указанного первым в этом списке. Он переходит в самое начало устройства в поисках дополнительной информации. Любое из этих устройств разбито на маленькие области, называемые секторами, и процессор ищет на устройстве хранения его первый сектор, который называется Главная Загрузочная Запись (Master Boot Record или сокращенно — MBR). Помимо секторов, устройство может быть разбито на большие части, называемые разделами, при этом разделы состоят из определенного количества секторов. Первый сектор любого раздела также является загрузочным и называет аналогично — загрузочный сектор (). Сектор является минимальной единицей деления жесткого диска на части, поэтому в одном секторе (в том числе — и загрузочном) информации может храниться совсем немного. Ровно столько, чтобы указать процессору, где он может найти программный код, с помощью которого можно выполнить процесс загрузки. Таким образом, процессор может выполнять загрузку все системы в целом.
Программа загрузки, используемая операционной системой PCLinuxOS, называется Grub (GRand Unified Bootloader). Код этой программы разбит на две части. Одна часть хранится в главной загрузочной записи (MBR) и называется . Вторая часть загружается в оперативную память компьютера (ОЗУ) после выполнения первой части и называется .
запускает ядро () операционной системы и создает в оперативной памяти компьютера временную файловую систему, в которую загружает различные программные коды, такие как модули и драйверы устройств. Эти коды необходимы ядру для успешного выполнения загрузки системы. Для создания временной файловой системы в ОЗУ используется заранее созданный образ файловой системы, называемый или сокращенно .
К сожалению, здесь у нас есть проблема. Заключается она в следующем. С одной стороны, мы имеем файл , который знает, где располагается ядро () и образ () файловой системы, но файл ничего не знает о существовании каких-либо файловых систем. Рассмотрим пример файла . Существует несколько видов данного файла, имя каждого из которых отображает тип файловой системы, для которой он предназначен, например, или . Код в этих файлах является связующим мостом, но он должен быть найден файлом . К счастью, благодаря способу расположения разделов на жестком диске, после первого зарезервированного сектора каждого раздела всегда имеется несколько свободных секторов, в которых и размещается дополнительный код. Файл «знает» о том, что всегда необходимо «заглянуть» во второй сектор корневого раздела и после выполнения кода, помещенного там, загрузчик Grub может найти необходимые данные в файловой системе.
После успешного выполнения задачи все настройки будут установлены таким образом, что ядро операционной системы может управлять физическими файловыми системами, контроль над которыми и возложен на него.
Примерно так обстоят дела с загрузкой в системе PCLinuxOS. Однако то, о чем было вкратце описано выше, является неполной картиной всех процессов, происходящих в системе Grub. Более того, этот способ далеко не единственный, применяемый для загрузки операционных систем.
Изменяем цвет меню Grub (цвет шрифта)
Теперь рассмотрим, как изменить цвета в меню Grub. Цвета можно задать в файле /etc/grub.d/05_debian_theme. Мы установим две опции color_highlight и color_normal:color_highlight — цвет текущего выбранного пункта меню;color_normal — цвет остальных пунктов меню.
Цвет задается в виде 2 цветов, разделенных косой чертой — color1/color2:color1 — это цвет шрифта;color2 — это цвет фона.В качестве значений необходимо указать название цвета. Поддерживаются следующие значения: black, blue, brown, cyan, dark-gray, green, light-cyan, light-blue, light-green, light-gray, light-magenta, light-red, magenta, red, white, yellow.Если в качестве параметра color2 вы используете black, то Grub трактует это, как прозрачный цвет.
Откроем для редактирования файл /etc/grub.d/05_debian_theme:
Найдите в нем следующие строки:
Установим в качестве шрифта зеленый цвет, а для подсвеченного (выбранного) пункта меню розовый цвет. Для этого добавьте в файл две строки, в результате вы должны получить:
Сохраните файл и выполните команду:
Теперь осталось перезагрузить компьютер. В моем случае меню Grub стало выглядеть следующим образом: