Как запретить обновление ядра ubuntu
Если вы занимаетесь администрированием и поддержанием очень важных систем в корпоративном секторе, то знаете, что найти свободное окно для установки обновлений безопасности для операционной системы может быть очень непросто.
Если компания не работает в области компьютерной безопасности, то решение может быть принято в сторону бесперебойной работы, а не устранения уязвимостей, а внутренняя бюрократия может привести к задержкам при выборе времени простоя. Иногда возникают ситуации, когда вы не можете позволить себе ни минуты простоя сервера и должны минимизировать опасность уязвимостей другими способами.
Но теперь ситуация изменилась в лучшую сторону. Несколько дней назад Canonical выпустила службу Livepatch, с помощью которой вы можете применять критические патчи ядра для Ubuntu 16.04 64 бит начиная от версии ядра 4.4 без необходимости перезагрузки. На самом деле это не полное обновление ядра ubuntu 16.04, а обновление его некоторых частей, которые содержат ошибки.
Все правильно, теперь обновление ядра без перезагрузки возможно и в Ubuntu. И в этой статье мы рассмотрим как это использовать в своей системе.
Обновление системы
Как я уже сказал, служба Canonical LivePatch поддерживается начиная с Ubuntu 16.04. Но чтобы избежать ошибок сначала желательно обновить систему до самой последней версии. Для этого выполните:
sudo apt update
$ sudo apt upgrade
Если у вас еще не установлены инструменты для работы со snap, их нужно установить:
sudo apt install snapd
Затем можно переходить дальше к настройке canonical livepatch.
Обычные пользователи Ubuntu могут подключить до трех машин с помощью Livepatch, для этого после входа вам будет выдан токен. Чтобы его получить нажмите Get your token:
Далее, вам нужно будет ввести данные учетной записи Ubuntu One или создать новую учетную запись. В последнем варианте нужно будет подтвердить адрес электронной почты. В следующем окне вы получите свой токен:
Этот токен нам понадобится позже, а теперь рассмотрим как установить необходимые пакеты.
Обновление ядра без перезагрузки Ubuntu
Сначала установите snap пакет этой службы, для этого выполните команду:
sudo snap install canonical-livepatch
Затем необходимо зарегистрировать свой компьютер с помощью полученного ранее токена. Используйте такую команду:
sudo canonical-livepatch enable ваш_токен
Например, если токен был d3b07384d213edec49eaa6238ad5ff00, то нужно выполнить:
sudo canonical-livepatch enable d3b07384d213edec49eaa6238ad5ff00
Successfully enabled device. Using machine-token: d3b07384d213edec49eaa6238ad5ff00
Дальше, чтобы проверить доступные патчи безопасности выполните команду:
kernel: 4.4.0-43.63-generic
fully-patched: true
version: ""
Также вы можете получить более подробную информацию с помощью опции --verbose:
canonical-livepatch status --verbose
Доступные патчи будут применяться сервисом canonical-livepatch автоматически, как только они появятся. Это значит, что ваша система всегда будет в безопасности.
Выводы
Компания Red Hat выпустила подобный сервис для своего дистрибутива еще несколько лет назад, OpenSUSE тоже представила что-то подобное в то же самое время. Наконец появилось обновление ядра без перезагрузки в Ubuntu и это не может не радовать. Canonical работает над улучшением своей системы, жаль только что немного отстает от конкурентов.
linux-genericlinux-libc-dev
linux-restricted-modules-common
linux-restricted-modules-generic
Теперь при проверке обновлений через Менеджера Обновлений на его заявление о том что Не все обновления возможно установить отвечайте кнопкой Закрыть и после этого можно щёлкнуть на кнопку Установить обновления .
Всё. У меня так система работает с октября 2008 года.
Запрет обновления ядра Linux: 7 комментариев
у меня на такой случай имеются уже скомпиленные wi-fi драйвера. т.ч. после обновления ядра, дравера просто ставлю по новой. перезагружаюсь и все работает.
Совсем отключать обновление ядра не совсем правильный выход имхо, т.к. кроме неудобства с пере установкой драйверов на то или иное железо новое ядро может добавить много вкусностей!
может стоить покурить маны к dkms ?
доброго времени суток. а как отключить обновления с консоли? у меня только ssh доступ к ubuntu-server-9.04
P.S.
Когда найдёте решение вашей задачи, можете поделиться? Очень интересный вопрос.
Читаем man aptitude. Видимо абзац:
remove, purge, hold, unhold, keep, reinstall
These commands are the same as “install”, but apply the named
action to all packages given on the command line for which it is
not overridden. The difference between hold and keep is that hold
will cause a package to be ignored by future safe-upgrade or
full-upgrade commands, while keep merely cancels any scheduled
actions on the package. unhold will allow a package to be upgraded
by future safe-upgrade or full-upgrade commands, without otherwise
altering its state.
For instance, “aptitude remove ´
ndeity´” will remove all packages
whose name contains “deity”.
Ну да! 😉 А то что в последних ядрах просто физически нет поддержки моего устройства, потому что разработчики прекратили поддержку драйверов на это устройство, это называется вкусности. 😉
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
В Ubuntu ядро можно обновить несколькими способами. Для версии Ubuntu Desktop, менеджер обновлений программного обеспечения позволяет обновить ядро до самой новой версии в любое удобное время. В серверной версии Ubuntu ядро обновляется автоматически, утилитами из пакета unattended-upgrades, как часть важных обновлений безопасности. Также ядро можно обновить вручную, с помощью утилит управления пакетами apt, aptitude или даже собрав из исходников.
Со временем из-за таких обновлений, в системе накапливается много неиспользуемых образов ядер, которые только занимают дисковое пространство. Каждый образ ядра вместе со связанными заголовочными файлами и файлами модулей занимает около 200-400 мегабайт. Таким образом, удаление старых ядер в ubuntu позволит освободить много дискового пространства.
Посмотреть сколько в вашей системе набралось образов ядер можно с помощью файлового менеджера, открыв каталог /boot или просто выполнив команду в терминале:
Кроме того, в меню загрузчика Grub присутствует пункт для каждого ядра, на случай если вы захотите выбрать его для загрузки:
Для очистки диска можно удалить старые ядра в Ubuntu, если вы их не используете и они вам больше не нужны.
Удалить старые ядра в Ubuntu
1. Терминал
Перед тем как удалить старые ядра Ubuntu вспомните, что рекомендуется иметь в системе две версии ядра - последнюю, используемую на данный момент, и предыдущую, на случай какой-либо неполадки.
Не рекомендуется работать с одним ядром в системе, потому что если вы его повредите, у вас будет намного больше работы для восстановления системы. Важно заметить, что такой вариант не будет работать, если вы устанавливали новые ядра из исходников.
В Ubuntu образы ядра принадлежат к таким пакетам:
- linux-image- <версия> - образ ядра
- linux-image-extra- <версия> - внешние модули ядра
- linux-headers- <версия> - файлы заголовков
Сначала посмотрим какое ядро используется на данный момент в вашей системе:
Смотрим какие версии ядер были установлены:
apt list --installed | egrep "linux-image|linux-headers"
Можно посмотреть список ядер с помощью dpkg:
dpkg --list | egrep "linux-image|linux-headers"
Здесь rc - означает, что пакет был установлен, но уже удален, а ii - что пакет сейчас установлен.
На основе полученного списка вы можете удалить любую версию, например, 4.15.0-91:
sudo apt purge linux-image-4.15.0-66-generic linux-headers-4.15.0-91-generic
Эти команды удалят образ ядра, а также связанные с ним заголовочные файлы и файлы модулей.
Обратите внимание, что при удалении старого ядра, будет автоматически инициирован процесс обновления ядра до последней версии, если вы этого еще не сделали, а также после удаления будет обновлен конфигурационный файл Grub, чтобы убрать лишнюю запись из меню.
Если такое ядро не одно, вы можете удалить старые ядра ubuntu одной командой, используя расширенный синтаксис Bash. Оператор <> будет работать только в Bash и совместимых с ним оболочках:
sudo apt purge linux-image-4.15.0- linux-headers-4.15.0-
После выполнения этих команд будет удаленно три образа ядра 4.15.0-20.21, 4.15.0-50.54, 4.15.0-51.55.
Если конфигурация Grub не обновится по каким-либо причинам, это можно сделать вручную:
Теперь можете перезагрузить компьютер, чтобы убедиться, что меню выбора операционной системы было очищено от лишних ядер.
Скрипт purge-old-kernels, который можно было использовать для удаления старых ядер больше не актуален, потому что он просто ссылается на команду apt. Теперь можно удалить старые ядра с помощью неё:
sudo apt --purge autoremove
Удалить все старые ядра, кроме используемого и предпоследнего, также можно командой:
sudo apt-get purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/3/!d' | head -n -1)
Затем нужно выполнить команду очистки системы и вручную обновить конфигурацию grub.
sudo apt autoremove
sudo update-grub
2. Synaptic
Synaptic - это графический пакетный менеджер для Ubuntu. Он позволяет устанавливать удалять и обновлять все пакеты в системе. Для его установки выполните:
sudo apt install synaptec
Запустите программу, в левой части выберите пункт Разделы затем Ядро и модули:
Найдите в списке пакеты linux-headers и linux-image, которые не используются и выберите в контекстном меню для них пункт Отметить для полного удаления:
Отметьте так все лишние пакеты и нажмите кнопку Применить на верхней панели чтобы применить изменения к системе. Конфигурация Grub должна обновится автоматически.
3. Ubuntu Cleaner
Это небольшая утилита, которая позволяет вам держать систему в чистоте удаляя старые ядра, ненужные пакеты, кэши браузеров и тому подобные вещи. Для её установки надо добавить PPA:
sudo add-apt-repository ppa:gerardpuig/ppa
Затем установите программу:
sudo apt install ubuntu-cleaner
После завершения установки вы найдёте её в главном меню:
Для очистки ядер выберите Old kernels на левой панели, затем отметьте ядра, которые надо удалить или отметьте пункт Old kernels в правой части окна:
После этого нажмите Clean и подтвердите операцию:
Всё, ваши старые ядра будут удалены.
Выводы
Незачем держать в системе очень много ненужных файлов. Теперь вы знаете, как правильно удалить старые версии ядер Ubuntu и сможете поддерживать свою систему в чистоте и порядке, это очень важно, особенно если вы часто обновляете ядра и тестируете новые версии. Если у вас остались вопросы, спрашивайте в комментариях!
Unattended upgrades — это родной для Debian/Ubuntu (и других основанных на них дистрибутивов GNU/Linux) механизм автоматических обновлений. По умолчанию он включён в системе благодаря наличию установленного пакета unattended-upgrades и конфигурационного файла /etc/apt/apt.conf.d/50unattended-upgrades , а настроен на обновления пакетов только из security-репозитория, куда попадают, например, критичные исправления для пакета libssl, которые выходят в результате очередного пополнения базы уязвимостей CVE.
Примечание: здесь и далее рассматриваются unattended upgrades в контексте серверных редакций Ubuntu, что скорее всего применимо «как есть» и к другим дистрибутивам, но могут встречаться свои особенности, оставшиеся вне рамок статьи.
Итак, какие дополнительные возможности предоставляют unattended upgrades (помимо включённых по умолчанию security updates) и к каким проблемам они могут привести?
Слово «unattended» в названии этого механизма действительно важно в его буквальном переводе — «без присмотра». Почему так? Достаточно вспомнить, что пакеты при установке генерируют файлы .dpkg-new , в которых оказывается новый конфиг для пакета (если контрольная сумма конфига в устанавливаемой пакете отличается от контрольной суммы конфига в системе). Это обстоятельство стоит учитывать, потому что иначе можно получить новую версию софта, которая больше не работает с опцией, добавленной вами в конфиг, и после установки пакета сервис/приложение просто не запустится. Поэтому, собирая или заимствуя пакет в свой репозиторий, помните, что установка такого пакета не обновит конфиги сама, так что, например, если конфиги версий не совместимы (что актуально в случае более значимого обновления, чем исправление в безопасности), может получиться очень неприятная ситуация, когда все давно уже спят, а ваш пакет выкатился на куче серверов и «Всё сломалось, шеф!».
К слову о времени срабатывания unattended upgrades пакетов: проверка обновлений и их установка в системах Ubuntu/Debian определяется в /etc/cron.daily/apt . Файл запускается из /etc/crontab , в котором по умолчанию задано раннее утро (06:25).
Применение для репозитория/PPA
Перейдём к практике. У нас была следующая проблема: один пакет устанавливался на все серверы, но не в родной его версии, а с определенными модификациями. Что делать? Очевидные варианты:
-
«Давайте проклянём на несколько часов одного из стажёров и пусть себе выкатывает!» — возможно, это и окажется полезным для стажёра, но только на этапе обучения работы с системой и при условии, что он совсем не умеет работать apt. Дальше это действительно превратится в проклятие. Вдобавок, получаемый результат будет больше зависим от человеческого фактора, чем хотелось бы.
Если у вас свой репозиторий, то слова Origin и Suite должны как минимум вызывать ассоциации из разряда «Где-то я уже это видел…». Подскажу, что такие параметры можно увидеть у репозитория на самой машине, где должен обновляться пакет, в файле *_InRelease . Иллюстрация для хорошо известной ppa:nginx/stable :
Видим два параметра:
- Origin — «происхождение» репозитория, что может указывать на имя мейнтейнера или самого репозитория;
- Suite — ветка дистрибутива; например, stable, testing для Debian или trusty, xenial для Ubuntu.
Таким образом, если у вас свой репозиторий пакетов, нужно добавить эти параметры. В результате, для данного примера с PPA nginx/stable конфигурация, разрешающая unattended upgrades для всех пакетов из него, будет выглядеть следующим образом:
Эти настройки логично автоматизировать (тем методом, который вам наиболее близок и/или уже используется), создавая все необходимые конфигурационные файлы при разворачивании новых инсталляций ОС. А проверить, как себя поведёт очередной запуск unattended upgrades, можно следующим образом:
Флаги здесь простые: -v — быть более многословным, а --dry-run — не применять изменения. При пробном запуске мы сразу увидим, что у этого решения могут быть обратные стороны:
-
Если установка пакета требует интерактивности, т.е. вмешательства пользователя (особенно актуально, если вы делаете масштабное обновление системы, поскольку уже давно этого не делали) — unattended upgrades просто ничего не будут делать.
Дополнительные возможности
В /etc/apt/apt.conf.d/50unattended-upgrades можно увидеть, что ещё умеют unattended upgrades. Настроек не так много, но некоторые из них полезны:
Выводы
Unattended upgrades — инструмент автоматической установки обновлений, встроенный в дистрибутивы на базе Debian и Ubuntu. Обычно его используют для установки обновлений безопасности (security updates) из соответствующего репозитория, но легко расширить применение и на любые другие репозитории. Инструмент будет полезен для поддержки простых в установке и обновлении программ и скриптов, собранных в пакеты, — для реализации требуется лишь собственно репозиторий и несколько строк в конфиге на обновляемой машине.
Но помните, что простота инструмента ещё не значит, что вы не ударите им себе по пальцам: не настраивайте автоматические обновления сложных или критичных сервисов, если вы не уверены на 100 % в безопасности этого действия и это никак не повлияет на продолжительность сна вас и ваших коллег.
Читайте также: