Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
wiki:uefiboot [2017/02/05 01:09] [Плюсы полученного решения] |
wiki:uefiboot [2019/03/14 14:46] [Инициализация синхронизации пунктов загрузки] |
||
---|---|---|---|
Строка 41: | Строка 41: | ||
==== Утилита для обновления меню загрузки UEFI ==== | ==== Утилита для обновления меню загрузки UEFI ==== | ||
- | Я написал эту утилиту на BASH, который практически не знаю, поэтому, наверняка, задачу можно было решить и более изящно, но я приведу тот код, который у меня заработал. | + | Я написал эту утилиту на BASH, который практически не знаю((почти за каждой командой лезу в гугл)), поэтому, наверняка, задачу можно было решить и более изящно, но я приведу тот код, который у меня заработал. |
=== Конфигурационный файл === | === Конфигурационный файл === | ||
Строка 59: | Строка 59: | ||
Собственно скрипт утилиты располагается в /usr/bin/uefiboot-update, его [[https://github.com/slytomcat/UEFI-Boot/blob/master/usr/bin/uefiboot-update|код на GitHub’е]]: | Собственно скрипт утилиты располагается в /usr/bin/uefiboot-update, его [[https://github.com/slytomcat/UEFI-Boot/blob/master/usr/bin/uefiboot-update|код на GitHub’е]]: | ||
- | Код достаточно примитивный: после определения необходимых параметров, сначала мы вычищаем все пункты меню с названиями вида "Ubuntu....", а затем добавляем в порядке возрастания версии ядра новые пункты меню. Важность порядка добавления в том, что самый последний добавленный пункт становится самым первым в приоритете загрузки. И важно, что бы первым в приоритете стояла загрузка самого свежего ядра. | + | Код достаточно простой: |
- | Приоритет конечно можно поменять отдельно, но раз уж мы все пункты Ubuntu* зачистили, то и создавать их надо все, а раз так, то создание в нужном порядке избавляет нас от лишних действий по заданию нужного приоритета. | + | Сначала определяем необходимые настройки. После определения необходимых параметров по умолчанию код читает конфигурационный файл, а потом параметры командной строки. Таким образом все необходимые настройки берутся из трех мест с приоритетом от дефолтов (минимальный приоритет) через конфиг, до параметров командной строки (самый высокий приоритет). |
- | В скрипте предусмотрена инициализация переменных настройки ROOT, OPTINS и ROOTFLAGS, которая обеспечивает работу утилиты без дополнительных настроек в большинстве стандартных ситуаций. Но, например, для настройки загрузки системы в режиме SecureBoot нужно будет обязательно указать значение переменной K_SUFFIX в файле /etc/uefiboot.conf. | + | Затем определяются версии существующих в /boot ядер и версии указанные в загрузочных записях UEFI. |
+ | Сравнивая эти два списка сначала удаляются те загрузочные записи для которых не осталось ядер в /boot, а затем добавляются записи для тех ядер из /boot, для которых еще не было загрузочных записей UEFI. Порядок добавления организован так, что последним добавляется ядро с самой новой версией. Это автоматически делает эту запись первой в порядке загрузки, т.е. по умолчанию, после установки нового ядра загружаться будет именно оно. Однако если вы ставите более старое ядро руками, то оно будет добавлено последним и следующая загрузка будет именно в то ядро, которое вы установили последним. | ||
+ | |||
+ | Приоритет загрузки конечно можно поменять вручную через efibootmgr, если вас не устроил тот что, сделала утилита. | ||
+ | |||
+ | В скрипте предусмотрена автоматическая инициализация переменных настройки ROOT, OPTIONS, ROOTFLAGS др., которые обеспечивает работу утилиты без дополнительных настроек в большинстве стандартных ситуаций. Но, например, для настройки загрузки системы в режиме SecureBoot нужно будет обязательно указать значение переменной K_SUFFIX в файле /etc/uefiboot.conf или в параметре командной строки -s. | ||
==== Инициализация синхронизации пунктов загрузки ==== | ==== Инициализация синхронизации пунктов загрузки ==== | ||
Строка 77: | Строка 82: | ||
</code> | </code> | ||
- | Теперь пункты загрузки UEFI будут автоматически обновляться после установки нового ядра или после удаления одного из ранее установленных. | + | Теперь пункты загрузки UEFI будут автоматически обновляться после установки нового ядра или после удаления одного из ранее установленных. А если изменений в версиях ядер и их количестве не было, то утилита ничего не будет менять. |
==== Подчистим систему ==== | ==== Подчистим систему ==== | ||
Строка 95: | Строка 99: | ||
</code> | </code> | ||
+ | ==== Финальная настройка ==== | ||
+ | Теперь осталось запустить утилиту обновления пунктов меню загрузки UEFI | ||
+ | # uefiboot-update | ||
+ | | ||
+ | И последний штрих - уменьшение или вовсе обнуление тайм-аута меню загрузки UEFI (обычно, значение по умолчанию для этого тайм-аута 5-10 секунд, столько нам совсем не нужно | ||
+ | # efibootmgr -t1 # устанавливаем тайм-аут в 1 секунду | ||
+ | или | ||
+ | # efibootmgr -T # Вовсе удаляем тайм-аут (в некоторых пршивках лучше установить его в 0, а не удалять) | ||
==== Автоматизированная установка и настройка ==== | ==== Автоматизированная установка и настройка ==== | ||
Строка 150: | Строка 162: | ||
Проект на GitHub’е: https://github.com/slytomcat/UEFI-Boot | Проект на GitHub’е: https://github.com/slytomcat/UEFI-Boot | ||
+ | |||
+ | English Wiki: https://github.com/slytomcat/UEFI-Boot/wiki | ||
{{tag>uefi boot}} | {{tag>uefi boot}} |