Обновление ядра в ubuntu

Увеличение времени безотказной работы с помощью Livepatch

Обновление ядра «на лету»

Перезагрузка системы может быть нежелательна по ряду причин. Многие критические системы подразумевают безостановочную работу, однако даже при стабильности программного обеспечения могут выходить обновления безопасности, которые относятся к ядру ОС и при традиционном подходе приводят к перезагрузке ОС.

Исправление ядра в реальном времени — это процесс установки исправлений безопасности для работающего ядра Linux без перезагрузки системы. Реализация для Linux называется Livepatch. Процесс исправления живого ядра — довольно сложный процесс. Однако, он обладает рядом преимуществ. Одним из них является возможность отложить перезагрузку до выполнения планового обслуживания. Это позволяет максимально увеличить доступность системы. Еще одним преимуществом является то, что обновления для системы безопасности не только устанавливаются, но и немедленно активируются.

Хотя обновление ядра «на лету» имеет свои риски, последствия известных проблем можно минимизировать.

Требования

Для оперативного обновления необходимо обеспечить выполнение некоторых требований. Прежде всего, нужно обеспечить поддержку Livepatch в самом ядре. В версиях 4.x первоначальная поддержка уже добавлена, то есть достаточно использовать более современное ядро. Во-вторых, системе необходим клиентский инструмент для извлечения патчей ядра и их загрузки. Чтобы разрешить загрузку патчей ядра, в системе должна быть включена возможность загрузки модулей ядра. Патчи ядра обычно создаются поставщиком дистрибутива Linux. Чтобы знать, как перенаправлять наборы команд, требуется определенная практика.

Как работает обновление ядра «на лету»?

Обновление ядра в процессе его работы реализуется с помощью трех механизмов:

  • Kernel probes (Kprobes). Kprobes позволяет внедрять код в ядро. Это называется точкой останова и позволяет разработчику определить желаемое поведение при ее достижении. Такое действие может быть использовано для запуска нового набора инструкций.
  • Function tracing (Ftrace). Ftrace используется для измерения производительности функций ядра.
  • Live patching (Livepatch). Livepatch — это третий компонент. С помощью специального обработчика Ftrace он может перенаправлять процедуры и переходить к исправленному набору инструкций.

Исправление начинается с создания патча. Это означает, что конкретная функция ядра должна быть изменена. Создание патча может быть сделано с помощью такого инструмента, как kpatch-build. В результате получается модуль ядра, который затем распространяется. Когда этот модуль загружен, он обеспечивает, что процессы, использующие определенный системный вызов, используют его исправленную версию.

Управление модулями вручную

Управление модулями ядра производится с помощью утилит, предоставляемых пакетом . Вы можете использовать эти утилиты вручную.

Примечание: Если вы обновили ваше ядро, но ещё не перезагрузились, modprobe не сработает без каких либо уведомлений об ошибках и завершится с ошибкой 1, потому что путь больше не существует. Проверьте вручную существование этого пути, если modprobe не работает, чтобы убедиться, что это ваш случай.

Загрузка модуля:

# modprobe module_name

Загрузка модуля из другого места (для тех модулей, которых нет в ):

# insmod filename 

Выгрузка модуля:

# modprobe -r module_name

Альтернативный вариант выгрузки модуля:

# rmmod module_name

Автоматизация обновлений

Активация LivePatch

LivePatch — это сервис от Canonical, компании, которая разрабатывает Ubuntu, и является эксклюзивным для этого дистрибутива.. Напоминаю, что для этих статей мы используем виртуальный частный сервер, на котором запущена серверная версия Ubuntu 20.04.

Большим преимуществом LivePatch является то, что Позволяет применять исправления безопасности к ядру Linux без перезагрузки сервера.. Давайте проясним. LivePatch применяет исправления к текущему ядру. Если вы перейдете на новое ядро, вам придется перезагрузиться.

Для его активации вам понадобится токен к чему ты можешь пойти эта страница. Убедитесь, что выбран вариант пользователя Ubuntu (если вы не хотите платить за коммерческую поддержку), и нажмите Получите свой токен LivePatch.

На следующем экране вас спросят, есть ли у вас учетная запись Ubuntu One, а если нет, вы сможете ее создать.

Когда вы входите в систему, он показывает вам токен вашей учетной записи и сообщает вам, какие команды вы должны ввести. Команды:

Обратите внимание, что токен можно использовать бесплатно только на трех машинах. Используйте эту инструкцию, чтобы проверить статус инструмента:

Используйте эту инструкцию, чтобы проверить статус инструмента:

Чтобы принудительно проверить наличие новых обновлений, введите:

Обеспечение безопасности сервера с помощью автоматических автоматических обновлений

Когда я начал делать сайты, Я использовал менеджер контента с открытым исходным кодом, который только начинал развиваться, а хостинг-провайдер, который, как я позже узнал, был авантюристом.. Однажды, когда я плохо спал, я сделал то, чего никогда не делал. Nap. За эти два часа кто-то воспользовался уязвимостью в проекте, моим отсутствием опыта и несерьезностью хостинг-провайдера к i.Размещение поддельной страницы на моем сайте для кражи данных клиентов Bank Of America. Уверяю вас, что BOA не очень хорошо переносит такие вещи.

Мораль в том, что Либо у вас есть кто-то, кто весь день следит за сервером, уведомляет о проблемах безопасности и наличии новых версий приложений, либо вы ищете способ автоматизировать проблему.

К счастью, разработчики Ubuntu включили исправление

Шаги по настройке следующие.

Устанавливаем необходимые программы

В открывшемся окне выберите Нет конфигурации.

Запускаем приложение с

В открывшемся окне нажмите, чтобы принять автоматические обновления.

Теперь нам нужно кое-что настроить.

Он пишет:

Нажатие CTRL + W ищет эту строку Автоматическое обновление :: Почта
И укажите свой адрес электронной почты.

Тогда ищите эту строку Автоматическое обновление :: Автоматическая перезагрузка
И убедитесь, что это правда. Это позволяет системе автоматически перезагружаться при необходимости.

Нажмите CTRL + X и согласитесь сохранить изменения.

Теперь пиши:
С помощью CTRL + W найдите eПочта Адрес и повторите адрес, который вы указали ранее.
Сохраните с помощью CTRL + X и согласитесь, что я сделаю это с изменениями.

Протестируйте конфигурацию с помощью

Создание ключа для UEFI

Создайте файл mokconfig.cnf, который будет содержать все нужные параметры для генерации сертификата, который используется как ключ:

# This definition stops the following lines failing if HOME isn't defined.
HOME                    = .
RANDFILE                = $ENV::HOME/.rnd 

distinguished_name      = req_distinguished_name
x509_extensions         = v3
string_mask             = utf8only
prompt                  = no


countryName             = <YOURcountrycode>
stateOrProvinceName     = <YOURstate>
localityName            = <YOURcity>
0.organizationName      = <YOURorganization>
commonName              = Secure Boot Signing Key
emailAddress            = <YOURemail>


subjectKeyIdentifier    = hash
authorityKeyIdentifier  = keyid:always,issuer
basicConstraints        = critical,CA:FALSE
extendedKeyUsage        = codeSigning,1.3.6.1.4.1.311.10.3.6
nsComment               = "OpenSSL Generated Certificate"

Раздел заполните на своё усмотрение. Реальными или выдуманными данными. Это пригодится только для того, чтобы проверить и удостовериться, что ключ установился.

Далее генерируем ключ и конвертируем в PEM-формат

openssl req -config ./mokconfig.cnf -new -x509 -newkey rsa:2048 -nodes -days 36500 -outform DER -keyout "MOK.priv" -out "MOK.der"
openssl x509 -in MOK.der -inform DER -outform PEM -out MOK.pem

После того. как ключ сгенерирован и его формат приведён к нужному, заливаем его в UEFI

sudo mokutil --import MOK.der

В процессе импорта ключа требуется ввести пароль, который потребуется просто для подтверждения импорта ключа. Поэтому можно ввести любой.

Далее перезагрузите систему. Первым делом, что вы увидете при загрузке – синий экран. Но это не синий экран смерти ;) а интерфейс инструмента MOKManager.

В пункте меню “Enroll MOK” нажмите  “View key” и убедитесь, что этот ключ тот самый, что был сгенерирован. Завершением установки ключа будет ввод пароля, который был указан ранее. После этого продолжите загрузку системы.

После удачного завершения загрузки системы и авторизации в учётную запись, проверьте на всякий случай, что ключ был успешно импортирован командой:

$  sudo mokutil --list-enrolled

SHA1 Fingerprint: 41:55:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            6b:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=RU, ST=IRK, L=Irkutsk, O=sabinich, CN=Secure Boot Signing Key/[email protected]
        Validity...
...

Когда нужно прописывать канонический тег

Используйте canonical, когда одинаковый контент доступен по разным URL. Когда дублирующиеся URL создаются системой, фактически сам контент не дублируется — разные URL обслуживают одно содержимое. Тем не менее, это дубли, канонический тег стоит указать. Разберем разные случаи.

Дублирование страниц

К примеру, если в каталоге есть несколько позиций одного дивана, отличающиеся только цветом обивки, можно выбрать самый популярный вариант и указать его каноническим. Все варианты диванов будут доступны пользователям, но ссылочный вес и другие сигналы будут идти на страницу с основным вариантом.

Другой вариант — страница товара подходит сразу под несколько категорий, так что образовываются множественные URL одного предмета. Решение такое же: выбрать популярную в качестве основной и указать ее на остальных дублирующих страницах в rel = «canonical».

Страницы пагинации

Переключение страниц в каталоге рождает дубли. Иногда для всех страниц пагинации указывают первую страницу в качестве канонической — это советуют не делать, потому что тогда проиндексируется только первая страница.

Пагинация на сайте www.petshop.ru

Вариант 1

Если на странице есть «Показать все», страница со всеми вариантами и будет канонической. На каждой из страниц пагинации укажите ее в атрибуте rel = «canonical».

Например, для страницы https://site.ru/category1/page-2 нужно прописать канонический URL:

Вариант 2

Если «Показать все» нет, для каждой страницы пагинации советуют указывать эти же страницы как канонические.

Например, на странице https://site.ru/category1/page2 нужно указать каноническую ссылку:

Вариант 3

Есть и другое мнение: если указать canonical страницы саму на себя, все страницы пагинации пойдут в выдачу. Если вы считаете, что плохо, если у разных URL с отличающимся контентом будут одинаковые Title и Description, то не делайте так.

В таком случае не нужно проставлять canonical, а лучше закрыть страницы пагинации в noindex, follow и использовать dissalow в robots для /page. Это значит, что индексировать нельзя, а переходить по ссылкам можно.

Напомним, что noindex подходит только для Яндекса.

HTTPS, HTTP, www

Один сайт может быть доступен по трем вариантам: http://site.ru и http://www.site.ru и https://www.site.ru. Но поисковые системы будут рассматривать все три как наборы отдельных страниц, если не указать canonical. Из-за чего могут быть проблемы со сканированием и индексацией сайта.

Мобильный URL

Google уже давно переходит на Mobile-First Indexing, то есть при индексировании он ориентируется на мобильную версию сайта.

Представитель Google Джон Мюллер рассказал, что делать с каноническим тегом в этих условиях.

Если у вас есть мобильная версия сайта m.site.ru, обычно у нее указывают rel = «canonical», ведущий на десктопную. А для десктопной используют тег rel=alternate, ведущий на мобильную. Если вы сделали так, ничего менять не надо. Бот распознает мобильную версию как каноническую, даже если в коде канонической указана десктопная. Если и в Sitemap.xml также, то тоже можно не трогать.

URL страны

Бывает, что для конкретной страны у сайта есть несколько версий с разными URL. При этом язык один и контент одинаковый с несущественными отличиями. Тогда нужно выбрать каноническую и сделать отсылки к ней на всех дублях.

Но если речь идет о разных языковых версиях, нужно использовать hreflang, чтобы поисковики выдавали отдельные результаты. Атрибут hreflang нужен для указания дополнительных URL с аналогичным или похожим содержимым на других языках или для отдельных регионов.

Из-за перехода Google на Mobile-First Indexing, нужно правильно настроить hreflang. Десктопные hreflang-теги должны ссылаться на десктопные URL, мобильные — соответственно на мобильные URL. И редиректить пользователей на нужную версию в зависимости от устройства.

Верхний и нижний регистр

Поисковик может посчитать разными два адреса, написанные в разном регистре. При назначении URL система должна применять только нижний регистр, чтобы одни и те же ссылки были действительно одинаковыми.

Итак, с помощью rel = «canonical» можно указать поисковику, какую страницу считать основной и главной среди дублей, чтобы сканировать ее, индексировать, показывать в выдаче и направлять на нее ссылочный вес. Разберемся, как настраивать тег.

Установка нового ядра

После окончания сборки ядра, его необходимо установить. Перед установкой, необходимо выполнить для установки модулей ядра в новый подкаталог /lib/modules. После установки модулей, необходимо выполнить для установки нового ядра и стартового RAM-диска (initial RAM disk) в каталог /boot и обновления конфигурации загрузчика.

Хочу обратить внимание, что в процессе сборки автоматически создается необходимый стартовый RAM-диск (initial RAM disk или initrd). Если у вас возникнет необходимость создать его вручную, это можно сделать при помощи команды

После выполнения должен обновиться конфигурационный файл загрузчика. Но у меня он почему-то  обновился после команды.

На этом и закончу. Очень большая статья получилась. В ближайшем будущем постараюсь ее ужать.

Что еще почитать?

1. Gentoo Handbook: http://www.gentoo.org/doc/ru/handbook/handbook-x86.xml?full=1#book_part1_chap7
2. Ставим ядро 2.6, или Ядерная физика для домохозяйки. Версия 2.0: http://linux4u.jinr.ru/docs/add04/kernel-2.6-install-2.0.html
3. The Linux Kernel Module Programming Guide (Программирование ядра Linux): http://linux4u.jinr.ru/docs/add04/lkmpg.html
4. Linux From Scratch: http://linux4u.jinr.ru/docs/add04/LFS-BOOK-5.0-HTML/

Включение службы Canonical Livepatch с использованием интерфейса командной строки

Вам понадобится аккаунт в Ubuntu One . Если у вас его нет, у вас будет возможность его создать. Они бесплатны, и это займет всего минуту.

Некоторые из шагов, которые нам нужно выполнить, основаны на веб-технологиях, так что это не только метод CLI. Мы начнем с посещения веб-страницы сервиса Canonical Livepatch Service , чтобы получить наш секретный ключ или «токен».

Выберите переключатель «Пользователь Ubuntu» и нажмите кнопку «Получить токен Livepatch».

Вам будет предложено войти в свою учетную запись Ubuntu One.

  • Если у вас есть учетная запись, введите адрес электронной почты, который вы использовали для настройки учетной записи, и выберите переключатель «У меня есть учетная запись Ubuntu One, а мой пароль:».
  • Если у вас нет учетной записи, введите свой адрес электронной почты и выберите переключатель «У меня нет учетной записи Ubuntu One». Вы будете руководствоваться процессом создания учетной записи.

После того, как ваша учетная запись Ubuntu One будет проверена, вы увидите веб-страницу исправлений ядра в режиме реального времени. Ваш ключ будет отображаться.

Держите веб-страницу с открытым ключом и откройте окно терминала. Используйте эту команду в окне терминала для установки демона службы Livepatch:

  sudo snap установить канонический-livepatch 

Когда установка будет завершена, вам нужно будет включить службу. Вам понадобится ключ на веб-странице «Управляемое исправление ядра».

Вам необходимо скопировать и вставить ключ в командную строку. Выделите ключ на веб-странице, щелкните его правой кнопкой мыши и выберите «Копировать» в контекстном меню. Или вы можете выделить клавишу и нажать «Ctrl + C».

Введите следующую команду в окне терминала, но не нажимайте «Enter».

  sudo canonical-livepatch enable 

Затем введите пробел, щелкните правой кнопкой мыши и выберите «Вставить» в контекстном меню. Или вы можете нажать «Ctrl + Shift + V». Вы должны увидеть только что набранную команду, пробел и клавишу с веб-страницы.

На тестовой машине, использованной для исследования этой статьи, это выглядело так:

Нажмите Ввод.»

СВЯЗАННЫЕ: Как копировать и вставлять текст в Linux Bash Shell

Если все пойдет хорошо, вы увидите подтверждающее сообщение от Livepatch, сообщающее, что на компьютере включена возможность исправления ядра. Это также покажет еще один длинный ключ; это «машинный токен».

Что только что произошло:

  • Вы получили свой ключ Livepatch от Canonical.
  • Вы можете использовать его на трех компьютерах. Вы использовали его на одном компьютере до сих пор.
  • Машинный токен, сгенерированный для этого компьютера — с использованием вашего ключа, — это машинный токен, отображаемый в этом сообщении.

Если вы откроете вкладку Livepatch в диалоговом окне «Программное обеспечение и обновления», вы увидите, что Livepatch включен и активен.

General setup

Содержит общие настройки

Некоторые вещи, которые поддерживает Linux (таких, как сетевые драйверы,
файловые системы, сетевые протоколы и т.д.) могут находиться в состоянии
разработки, где функциональность, стабильность или уровень тестирование еще
не достаточно высоки для общего использования. То есть данная опция включает
дополнительные экспериментальные настройки. Рекомендуется включить, чтобы
отображались все доступные опции.

Сюда можно внести наименование, которым дополнится название вашего ядра.
Бывает полезно, когда вы собираете несколько ядер одной и той же версии. Обычно не нужно.

Доступные алгоритмы сжатия, отличающиеся по скорости, эффективности,
компрессии и декомпрессии. Скорость сжатия имеет значение только при сборке ядра.

Поддержка ядром своп-файла. Включаем.

— механизм связи между процессами. Набор библиотечных
функций и вызовов ядра, позволяющий процессам обмениваться информацией. Некоторые
программы требуют этого механизма.

— очередь для сообщений формата POSIX с использованием
приоритетов. Часть механизма связи между процессами. Нужно, если запускать программы написанные под этот формат, например с ОС Solaris.

— поддержка дополнительных сведений о процессах
(время запуска, владелец, командная строка запуска, использование памяти).
Полезно для контроля процессов.

— включение механизма проверки ядра. Например
используется системой SELinux (система расширенной безопасности для Linux).

— включение системных вызовов для
механизма проверки ядра.

Сохранять настройки ядра в нем самом. Это полезно, если у Вы удалите папку с
исходниками ядра, а потом захотите немного изменить ядро.

Если эта опция включена, вы сможете получать параметры текущего ядра из

Рекомендуется включить. Пригодится.

Поддержка группирования процессов. Используется такими подсистемами как CPUSETS,
CFS, контроль памяти или устройства изоляции.

Позволяет двум процессам в разных виртуальных средах иметь один и тот же .
Эта возможность делает реальными такие сценарии, как апгрейд сервера без необходимости его перезагрузки.

Включает поддержку интерфейса некоторых файловых систем (таких как debugfs). Предназначена для эффективного механизма передачи больших объёмов данных из пространства ядра в пользовательское пространство.

Поддержка initrd/initramfs.

Если собирается ядро без оных, следует отключить опцию.

Оптимизация кода ядра по размеру. Может быть полезно для создания загрузочных дискет. В обычных случаях не требуется.

Включение расширенной поддержки профилирования (например, OProfile). Обычно не нужно.

Livepatch important for servers

If Ubuntu powers your server, then you should enable Canonical Livepatch. Livepatch will silently install Kernel updates without requiring a system reboot. However, it is also available for Desktop users but is less useful.

The entire purpose of Livepatch is to prevent the system reboot after the kernel updates; the desktop users will anyway restart the computer now and then. So Livepatch can be installed and set up but will rarely be used.

Also, it’s important to note that the Livepatch feature is free for up to 3 devices for personal use. You can set up Livepatch on Desktops, servers, virtual machines, and in the cloud. Organizations will need to pay for the service by subscribing to Ubuntu Advantage.

About the Author

@DustinKirkland is the Chief Product Officer of Apex Clearing, a PEAK6 portfolio company. Apex is a technology firm, rapidly modernizing the financial services industry. Apex has provided the back end clearing and custody services that has helped launch Robinhood, Wealthfront, Betterment, Stash, M1, among many others.

Previously, Dustin was a Product Manager at , bridging the gaps between enterprise IT and Google Cloud with the GKE On-Prem and Velostrata technologies.

Dustin was also the VP of Product at Canonical, leading the amazing team that delivers Ubuntu, from the Cloud to IoT commercial offerings.

Formerly the CTO of Gazzang, a venture funded start-up acquired by Cloudera, Dustin designed and implemented a key management system for cloud applications, called zTrustee, and delivered comprehensive security for cloud and big data platforms with eCryptfs and other encryption technologies.

Dustin is an active maintainer and contributor to many open source projects, including Byobu and eCryptFS. At IBM, Dustin produced , including QWERsive (the technology behind «Swype» keyboards), and created the Orange Box (10-node portable cloud hardware).

A graduate of Texas A&M University, Dustin lives in Austin, Texas, with his wife Kimberly, daughters, and his Australian Shepherds, Aggie and Tiger. Dustin is also an avid home brewer and wine maker.

As an Amazon Associate I earn from qualifying purchases.



Графическая активация сервиса Canonical Livepatch

Чтобы запустить графический интерфейс настройки, нажмите кнопку «Супер». Он расположен между клавишами «Ctrl» и «Alt» в нижнем левом углу большинства клавиатур. Ищите «Livepatch».

Когда вы увидите значок Livepatch, щелкните значок или нажмите «Enter».

Откроется диалоговое окно «Программное обеспечение и обновления» с выбранной вкладкой «Livepatch». Нажмите кнопку «Войти». Вам напомнят, что вам нужна учетная запись Ubuntu One.

Нажмите кнопку «Войти / Зарегистрироваться».

Откроется диалоговое окно «Учетная запись для единого входа Ubuntu». Canonical использует термины «Ubuntu One» и «единый вход» как синонимы. Они означают одно и то же. «Единый вход» был официально заменен на «Ubuntu One», но старое название осталось.

Введите данные своей учетной записи и нажмите кнопку «Подключиться». Вы также можете использовать это диалоговое окно для регистрации учетной записи, если вы еще не создали учетную запись.

Вам будет предложено ввести пароль.

Введите свой пароль и нажмите кнопку «Аутентификация». В диалоговом окне будет показан адрес электронной почты, связанный с учетной записью Ubuntu One, которую вы будете использовать.

Убедитесь, что он правильный, и нажмите кнопку «Далее».

Вам снова будет предложено ввести пароль. Через несколько секунд вкладка Livepatch в диалоговом окне «Программное обеспечение и обновления» обновится, показывая, что Livepatch активен и активен.

В области уведомлений инструмента появится новый значок щита. рядом с сетью, звуковыми и силовыми символами. Зеленый кружок с галочкой говорит о том, что все в порядке. Щелкните значок, чтобы открыть меню.

Нам сообщили, что Livepatch активирован и текущих обновлений нет.

Параметр «Настройки Livepatch» открывает диалоговое окно «Программное обеспечение и обновления» на вкладке Livepatch.

Вот и все; все готово.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Зов электронных книг
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: