Как обновить Grub в Ubuntu и других дистрибутивах Linux
В этом руководстве вы научитесь обновлять grub в Ubuntu или любом другом дистрибутиве Linux. Вы также узнаете кое-что о том, как работает этот процесс обновления grub.
Как обновить grub
Ubuntu и многие другие дистрибутивы Linux предоставляют удобную утилиту командной строки под названием update-grub.
Чтобы обновить grub, все, что вам нужно сделать, это запустить эту команду в терминале с помощью sudo.
Вы должны увидеть результат, что-то вроде этого:
Вы можете увидеть похожую команду с именем update-grub2. Не нужно беспокоиться или выбирать между update-grub и update-grub2. Обе эти команды выполняют одно и то же действие.
Около десяти лет назад, когда только появился grub2, была введена команда update-grub2 . Сегодня update-grub2 — это просто символическая ссылка на update-grub и обе команды обновляют конфигурацию grub2 (потому что grub2 используется по умолчанию).
Не можете найти команду update-grub? Вот что нужно сделать в этом случае
Возможно, в вашем дистрибутиве Linux нет команды update-grub.
Что вы делаете в этом случае? Как вы обновите grub в таком дистрибутиве Linux?
Нет необходимости паниковать. Команда update-grub — просто заглушка для запуска ‘ grub-mkconfig -o /boot/grub/grub.cfg ‘ файла конфигурации grub2.
Это означает, что вы можете обновить grub с помощью следующей команды в любом дистрибутиве Linux:
sudo grub-mkconfig -o /boot/grub/grub.cfg
Конечно, запомнить команду update-grub намного проще, чем приведенную выше, и это причина, по которой она была приведена в первую очередь.
Как работает update-grub?
Когда вы устанавливаете дистрибутив Linux, он (обычно) просит вас установить загрузчик grub .
Часть grub установлена в разделе MBR / ESP. Остальная часть grub находится в каталоге / boot / grub дистрибутивов Linux.
Согласно его домашней странице , update-grub работает, заглядывая в каталог / boot. Все файлы, начинающиеся с vmlinuz- , будут рассматриваться как ядра, и они получат пункт меню grub. Также будут добавлены строки initrd для образов ramdisk, найденных в той же версии, что и найденные ядра.
Он также просматривает все разделы диска для других операционных систем с os-prober . Если он находит другие операционные системы, он добавляет их в меню grub.
Зачем вам нужно обновить Grub?
Может быть несколько причин, когда вам нужно обновить grub.
Предположим, вы изменили файл конфигурации grub (/etc/default/grub), чтобы изменить порядок загрузки по умолчанию или сократить время загрузки по умолчанию. Ваши изменения не вступят в силу, если вы не обновите grub.
Другой вариант — когда в одной системе установлено несколько дистрибутивов Linux.
Например, на моем Intel NUC у меня есть два диска. На первом диске была Ubuntu 19.10, а затем я установил Ubuntu 18.04. Вторая ОС (Ubuntu 18.04) также установила свой собственный grub, и теперь grub контролируется Ubuntu 18.04.
На втором диске я установил MX Linux, но на этот раз я не установил grub. Я хочу, чтобы существующий grub (управляемый Ubuntu 18.04) обрабатывал все записи ОС.
Теперь в этом сценарии необходимо обновить grub в Ubuntu 18.04, чтобы он мог видеть MX Linux
Как вы можете видеть на изображении выше, когда я обновляю grub, он находит различные ядра Linux, установленные 18.04, вместе с Ubuntu 19.10 и MX Linux в разных разделах.
Если я хочу, чтобы MX Linux контролировал grub, я могу установить grub на MX Linux с помощью команды grub-install, а затем grub на MX Linux начнет управлять экраном grub. Вы понимаете суть, верно?
Использование инструмента с графическим интерфейсом, такого как Grub Customizer, является более простым способом внесения изменений в Grub.
Первоначально я намеревался сделать это короткой статьей в качестве краткого совета. Но затем я подумал объяснить несколько вещей, связанных с этим, чтобы (относительно) новые пользователи Linux могли узнать больше, чем просто команды.
Тебе понравилось статья? У вас есть вопросы или предложения? Пожалуйста не стесняйтесь оставить комментарий.
Руководство по обновлению системы
Обновлено 17 января 2020
Введение
Процесс обновления Calculate Linux максимально упрощён. Для обновления достаточно запустить графическое приложение «Обновление Calculate Linux» или выполнить в консоли:
Во время выполнения программа обновит портежи и оверлеи, выполнит обновления пакетов и выполнит удаление устаревших зависимостей.
Утилита может быть запущена как от суперпользователя root, так и от обычного пользователя системы, при наличии необходимых прав для обновления (см. раздел Пользователи):
Этапы обновления
Условно работу программы можно разделить на две части — синхронизацию репозиториев и обновление пакетов. При желании вы можете выполнить только синхронизацию репозиториев без обновления пакетов, для этого используйте параметр , пример:
Синхронизация репозиториев
В Calculate Linux существует несколько зеркал с бинарными пакетами обновлений, описанных в оверлее Calculate. Утилита обновления сама определит «мёртвые» или недоступные зеркала, а также зеркала, находящиеся в процессе обновления, и, в случае необходимости, переключит систему на другое наиболее быстрое зеркало. Для пересканирования зеркал с определением наиболее быстрого зеркала выполните cl-update —scan . Лог сканирования будет доступен в файле .
Доступны два типа зеркал — стабильные и нестабильные (тестовые). Тестовые зеркала отличаются более свежими версиями обновлений. Чтобы переключиться на тестовые обновления выполните cl-update —stable off .
Пакеты на зеркалах обновляются в разное время. Для того, чтобы версии пакетов были согласованы с версией портежей и оверлеев Calculate с Distros, утилита считывает с зеркала номера коммитов Git-репозитория и синхронизирует портежи и оверлеи до этого состояния. Тэги коммитов, благодаря которым можно минимизируя трафик скачать дерево портежей до определённого состояния, являются единственным отличием копии портежей Gentoo, используемой в дистрибутивах Calculate Linux.
Важной составляющей Calculate Linux является наличие вспомогательных оверлеев. Оверлеи играют важную роль в системе. При помощи них можно менять флаги и маски пакетов, устанавливать переменные, добавлять ebuild-ы пакетов. Оверлеи в Calculate Linux могут содержать шаблоны утилит Calculate. Все дистрибутивы Calculate Linux включают как минимум один оверлей , который содержит все необходимые настройки и шаблоны утилит. Оверлей , присутствующий в официальных сборках, включает только отличия разных дистрибутивов. Такое разделение сделано для того, чтобы на примере оверлея Distros можно было в любой момент создать свой полнофункциональный форк дистрибутива.
Конфигурация системы
После синхронизации и до начала установки обновлений пакетов выполняются шаблоны миграции, которые настраивают в файле выбранный репозиторий. На этом этапе обновления могут быть выполнены шаблоны ревизии и миграции.
Исправления могут вноситься, например, через искусственное понижение номера версии установленного пакета для последующей переустановки исправленной версии. Номера версий таких пакетов после изменения будут заканчиваться на . В качестве другого, более редкого, случая исправления можно привести удаление из служебного файла устаревшего пакета, приводящего к блокировке просчёта зависимостей пакетного менеджера.
Обновление пакетов
После синхронизации репозиториев, при наличии изменений, утилита обновления выполнит запуск пакетного менеджера emerge для выполнения просчёта зависимостей. Этот процесс не быстрый, т.к. выполняется в один поток и требует значительных вычислений.
В случае, если пользователь изменял USE-флаги или маски пакетов, либо устанавливал пакеты, отсутствующие в бинарном репозитории, например — из других оверлеев, такие пакеты во время установки будут скомпилированы из исходного кода. Отличить бинарные и не бинарные пакеты можно по зелёному цвету и коричневому цвету текста соответственно.
Пересборка изменённых пакетов
Данный шаг выполняется утилитой cl-builder-update при выполнении обновления пакетов в образе и служит для своевременной пересборки изменённых пакетов в дереве портежей. На этом этапе выполняется проверка изменений слота, USE-флагов и зависимостей пакетов. В случае наличия изменений такие пакеты будут пересобраны.
Обновление модулей Perl
Если во время обновления был обновлён пакет dev-lang/perl, программа выполнит perl-cleaner all для обновления модулей языка Perl.
Очистка системы от ненужных пакетов
При установке программ могут быть установлены дополнительные пакеты с зависимостями, необходимыми для работы. С течением времени зависимости могут меняться, а программы удаляться. Высвободившиеся от зависимостей пакеты могут остаться в системе мёртвым грузом. Такие пакеты не будут обновляться, т.к. не будут попадать в просчёт зависимостей пакетного менеджера. На данном шаге программа обновления выполнит удаление этих пакетов, выполнив вызов emerge —depclean .
Из списка удаляемых пакетов будет исключено ядро, если удаляемая версия пакета совпадёт с работающей в системе версией ядра. Таким образом, вы всегда сможете загрузить систему, используя предыдущую рабочую версию ядра, которое будет присутствовать в меню загрузчика.
Для предотвращения удаления работающей версии PostgreSQL при обновлении мажорной версии, во время вызова настройки emerge —config postgresql в файл шаблонами утилит будет прописан пакет с указанием номера слота.
Обновление модулей ядра
В случае обновления ядра на этом шаге программа выполнит вызов emerge @module-rebuild для обновления модулей ядра.
Обновление модулей X.Org сервера
При обновлении пакета x11-base/xorg-server программа выполнит вызов emerge @x11-module-rebuild для обновления модулей Xorg-сервера.
Пересборка зависимых модулей
Во время обновления будет выполнено определение пакетов, использующих устаревшие библиотеки, для последующей их пересборки. Для этого программа обновления использует вызов emerge @preserved-rebuild .
Проверка обратных зависимостей
Опционально может быть выполнен вызов утилиты revdep-rebuild , входящей в состав пакета и выполняющей поиск пакетов, содержащих повреждённые исполняемые файлы и библиотеки. Для его включения выполните:
Полезные опции запуска
По умолчанию программа не обновляет сторонние оверлеи. Для синхронизации всех подключённых оверлеев во время обновления используйте опцию . Пример:
Для просчёта зависимостей с последующим отображением устанавливаемых пакетов, без фактической установки, по аналогии с пакетным менеджером emerge есть опция . Пример:
Чтобы отобразить вывод списка просчитанных зависимостей с USE-флагами по аналогии с пакетным менеджером emerge , используйте опцию , пример:
Для восстановления целостности портежей и оверлеев — например, после ручного редактирования, используйте опцию , пример:
Весьма полезной могут оказаться опции обновления файла списка пакетов . Для того, чтобы привести список пакетов установленных в вашей системе к состоянию в текущей ночной сборке, достаточно выполнить:
Приведение списка пакетов может также разрешить блокировки, которые могут оказаться по причине перегруженности world-файла конфликтующими пакетами.
Другой полезной возможностью может оказаться дополнение world-файла списком пакетов профиля. К примеру, вы установили и настроили Calculate Linux Scratch, после этого захотели попробовать переключиться на профиль . Чтобы установить после этого MATE со всеми зависимостями, можно выполнить:
Для сокращения места на жестком диске вы можете использовать две опции: для очистки истории изменений локальной копии Git-репозитория и —clean-pkg для удаления скачанных и устаревших архивов программ. Пример:
cl-update -1 —clean-pkg
Интеграция в другие приложения
Важно не нарушать соответствие состояния бинарного репозитория и дерева портежей. Для этого вызов утилиты cl-update интегрирован в системные приложения.
При запуске emerge —sync будет выполнен вызов модуля синхронизации утилит Calculate, прописанный в файле настроек . Утилита eix-sync , обновляющая портежи в наглядном виде, также вызывает метод обновления утилит Calculate благодаря настройке . Утилита обновления портежей и пакетов в собираемом образе cl-builder-update также использует общий модуль обновления системы.
Автоматическая проверка обновлений
Проверка обновлений выполняется по планировщику задач . Вызов утилиты настраивается в файле . При доступности обновления будет создан файл . Для настройки интервала обновления или отключения выполнения проверки обновлений используйте утилиту cl-setup-update .

