Вопрос или проблема
Поскольку я ищу dnf-automatic способы автоматического применения обновлений ядра, мне интересно, можно ли также автоматизировать следующие шаги.
- удалить все старые ядра (так как “installonly_limit=1” не работает для пакетов ядра)
- автоматический перезапуск
Ответ или решение
Для автоматизации обновления ядра в Red Hat Enterprise Linux (RHEL) с помощью dnf-automatic
, а также для удаления старых версий ядра и автоматической перезагрузки системы, необходимо выполнить несколько шагов, описанных ниже.
Шаг 1: Установка и настройка dnf-automatic
Убедитесь, что пакет dnf-automatic
установлен на вашей системе. Это можно сделать с помощью следующей команды:
sudo dnf install -y dnf-automatic
После установки откройте конфигурационный файл dnf-automatic.conf
, чтобы настроить автоматические обновления:
sudo vi /etc/dnf/automatic.conf
В этом файле найдите следующие строки и настройте их:
[commands]
upgrade_type = default
random_sleep = 0
metadata_expire = 1h
Также убедитесь, что вы включили автоматическое обновление kernel
:
[upgrade]
apply_updates = yes
Шаг 2: Настройка автоматического удаления старых ядер
Для автоматического удаления старых версий ядра используйте следующую команду, добавив ее в cron или systemd таймер. Можно создать новый скрипт, например, /usr/local/bin/cleanup_old_kernels.sh
:
#!/bin/bash
# Количество ядер, которые нужно сохранить
KEEP=2
# Удаление старых ядер, оставляя только последние $KEEP
dnf --assumeyes remove $(dnf repoquery --installonly --latest-limit -$KEEP -q)
Не забудьте сделать его исполняемым:
sudo chmod +x /usr/local/bin/cleanup_old_kernels.sh
Теперь вы можете добавить этот скрипт в cron для регулярного выполнения, например, раз в неделю:
sudo crontab -e
Добавьте следующую строку:
0 3 * * 0 /usr/local/bin/cleanup_old_kernels.sh
Шаг 3: Автоматическая перезагрузка
Для автоматической перезагрузки системы после обновления ядра можно добавить следующую команду в конфигурацию dnf-automatic
. В той же конфигурации automatic.conf
, найдите секцию [commands]
и добавьте строку:
[commands]
......
system_reboot = yes
Шаг 4: Запуск настройки dnf-automatic
Запустите службу для автоматического обновления с помощью следующей команды:
sudo systemctl enable --now dnf-automatic.timer
Это включает таймер, который будет запускать автоматизацию в соответствии с вашими настройками.
Проверка
Вы можете проверить статус таймера, чтобы убедиться, что он работает:
sudo systemctl list-timers dnf-automatic.timer
И в результате приведенные шаги обеспечат автоматическое обновление ядра, удаление старых ядер и перезагрузку системы без необходимости ручного вмешательства. Обязательно тестируйте данную конфигурацию в тестовой среде перед развертыванием в производственной среде.