Зачем обновлять ядро linux

Обновлено: 02.07.2024

Что такое ядро ОС? Типы ядер

Как правило, большинство ядер ОС делятся на три типа:

Микроядро

Микроядро — это ядро, состоящее из нескольких подгружаемых в память по мере надобности независимых модулей, выполняющихся в отдельных адресных пространствах. По сути, в таком варианте исполнения оно не сильно отличается от обычных прикладных программ. К достоинствам данного ядра можно отнести теоретически большую надежность в сравнении с другими архитектурами (в действительности же не всё так радужно и гладко) и его модульность (легкость в подключении дополнительных частей ядра). К минусам микроядерной архитектуры относится то, что ядро, построенное по такой схеме, получается очень медленным (ведь ему нужно постоянно переключаться между отдельными частями).

небольшие требования к используемой памяти;

аппаратное обеспечение сильнее абстрагировано от системы;

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

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

Монолитное ядро

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

практически прямой доступ программ к оборудованию;

процессам проще взаимодействовать друг с другом;

если ваше устройство поддерживается ядром, никаких дополнительных установок ПО не потребуется;

процессы реагируют быстрее, потому что не требуется ожидания в очереди за процессорным временем.

большой размер ядра;

больший размер занимаемой памяти;

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

Гибридное ядро

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

разработчик может выбрать, какие программы будут работать в пользовательском пространстве, а какие — в пространстве ядра;

меньший размер в сравнении с монолитным ядром;

гибче в отличие от других ядер.

может страдать от пониженной производительности (как и микроядро);

работа драйверов устройств, как правило, сильнее зависит от производителей оборудования.

Ядро Linux хоть и относится к монолитным ядрам, но оно также заимствует и некоторые идеи из микроядерной архитектуры, что означает, что вся операционная система работает в пространстве ядра, а драйверы устройств (в виде модулей) могут быть легко загружены (или выгружены) прямо во время работы операционной системы.

Где находится ядро Linux?

Каждый раз во время запуска (или перезапуска) системы первым компонентом, который загружается в память компьютера, является ядро Linux.

В системах Debian/Ubuntu файлы присутствующих в системе ядер расположены в каталоге /boot и именуются в виде vmlinuz-[версия_ядра] (выполнив в терминале команду uname-r , мы получим информацию о текущей версии установленного ядра):


В папке /boot вы также найдете и другие очень важные файлы:

img-[версия_ядра] — используется в качестве RAM-диска, в который распаковывается и с которого загружается ядро;

map-[версия_ядра] — используется для управления памятью до полной загрузки ядра;

config-[версия_ядра] — сообщает ядру, какие параметры и модули следует загрузить в образ ядра при его компиляции.

Примечание: Также для сжатия ядра часто применяются алгоритмы LZMA или bzip2, а сами ядра именуются zImage.

Модули ядра Linux

Модули обычно расширяют базовые возможности ядра, связанные с различной работой устройств, файловых систем и системных вызовов. Они, как правило, имеют расширение .ko и обычно хранятся в каталоге /lib/modules:


Версии ядра дистрибутивов Linux

Stable

Stable — это последняя доступная стабильная версия ядра Linux, предназначенная для широкого круга использования. По умолчанию, в большинстве дистрибутивов Linux применяется именно stable-версия ядра. Она регулярно обновляется, и к ней довольно часто выпускаются новые патчи.

Несмотря на то, что исправления безопасности внедряются в LTS-версию так же часто, как и в обычную, она, тем не менее, не дает 100% гарантии отсутствия каких-либо ошибок. Правда, шанс того, что с LTS-версией ядра Linux возникнут какие-то проблемы, немного меньше по сравнению с обычной версией ядра Linux, и поэтому многие предприятия отдают предпочтение именно LTS-релизам.

Примечание: По данным компании Canonical, примерно 95% всех установок Ubuntu являются LTS-релизами.

Hardened

Hardened — это усиленная различными обновлениями безопасности stable-версия ядра Linux. Она умеет блокировать потенциально опасные операции, обеспечивая тем самым эффективную защиту от эксплойтов, нацеленных на использование уязвимостей ядра. Данная версия ядра не так популярна, как другие, из-за того, что несколько медленнее их. Hardened-ядро убивает любой процесс, который покажется ему потенциально опасным. Кроме этого, он не отображает PID процессов, и, следовательно, вы не сможете напрямую обратиться к запущенному исполняемому файлу. Также некоторые программы и функции могут не работать с hardened-ядром.

Zen — версия ядра Linux, ориентированная на повышение производительности и отзывчивости системы. Также говорят, что это лучшее ядро Linux для игр. Zen имеет низкую задержку и высокочастотный планировщик.

Установка/Обновление ядра Linux

Соответственно, из этого можно сделать следующие выводы:

Если вам нужно ядро Linux с правками под какой-то конкретный дистрибутив (например, Debian или Manjaro), то вам нужно скачать ядро из репозитория конкретного дистрибутива с помощью менеджера пакетов.

Есть 2 способа установки/обновления ядра Linux:

Обновление ядра Linux через менеджер пакетов.

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

Обновление ядра Linux через менеджер пакетов

Обычно, вместе с обновлением системы происходит и обновление ядра. Но если вы по каким-либо причинам хотите произвести установку/обновление непосредственно только ядра Linux, то ниже мы рассмотрим данный процесс для нескольких дистрибутивов Linux.

Linux Mint (Debian/Ubuntu)

Для начала сверим текущую установленную версию ядра:


Далее выполним поиск доступных для установки ядер (сгенерированный список может быть очень длинным, поэтому, чтобы хоть как-то ограничить вывод и сделать его постраничным, применим фильтр | more ):

$ sudo apt-cache search linux-image | more


Мой выбор пал на ядро linux-image-4.15.0-1004-oem. Чтобы его установить, нужно выполнить команду:

$ sudo apt-get install linux-image-4.15.0-1004-oem


Останется только перезагрузить систему и убедиться, что новое ядро успешно установилось:


Manjaro (Arch Linux)

В Manjaro используется свой менеджер пакетов — pacman, поэтому его команды будут немного отличаться от команд в других дистрибутивах. Чтобы вывести список доступных для установки ядер, необходимо выполнить:

$ sudo pacman –S linux


В рамке обведен список ядер, которые мы можем установить. Я выбрал пункт №5 (linux510), нажав соответствующую кнопку на цифровой клавиатуре. После этого запустился процесс скачивания необходимых пакетов. Когда всё будет готово, перезагружаем систему и радуемся новому ядру:



Установка ядра Zen (Liquorix)

Liquorix — это отдельный проект ядра, собранный из исходников zen-ядра, но с использованием лучшей конфигурации для повышения производительности системы.

Debian

Скачиваем скрипт, который добавит в систему нужные репозитории:


После чего выполняем всего одну команду, устанавливающую пакеты с новым ядром:

$ sudo apt-get install linux-image-liquorix-amd64 linux-headers-liquorix-amd64



Ubuntu

Установка в Ubuntu происходит практически аналогичным образом. Сначала добавляем репозитории zen-ядра (liquorix):

sudo add-apt-repository ppa:damentz/liquorix && sudo apt-get update

После чего выполняем уже знакомую по прошлому разу команду:

sudo apt-get install linux-image-liquorix-amd64 linux-headers-liquorix-amd64

И теперь перезагружаем систему. Готово!

Manjaro


Далее установим необходимые утилиты:

$ sudo pacman –S base-devel


Заходим в каталог yay и производим сборку пакета:

$ cd yay
$ makepkg -si


После этого переходим непосредственно к установке zen-ядра:

$ yay -S linux-zen-git


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

Допустим, новое ядро целиком еще можно установить из бинарного RPM-пакета (см. п.7.4.2). Но для подключения нового драйвера недостаточно просто скопировать его в каталог ядра: нужно интегрировать его код в структуры данных и таблицы ядра, для чего ядро придется строить заново из исходного кода. Исходные коды тем более необходимы для прикладывания заплатки (см. п. 7.4.3).

Данный текст является ознакомительным фрагментом.

Продолжение на ЛитРес

Ядро в роли арбитра

Ядро в роли арбитра Так кто же определяет, который из потоков должен выполняться в данный момент времени? Этим занимается ядро.Ядро определяет, который из потоков должен использовать процессор в данный момент времени и переключает контекст на этот поток. Давайте

Ядро системы

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

(4.5) Как поменять ядро системы?

(4.5) Как поменять ядро системы? В W2k этот процесс упрощён до предела. Больше не надо переставлять всю систему, или использовать внешние утилитки из Resource Kit-а. Ядро меняется в Device Manager?Computer, как и любой другой драйвер. Но, это ИСКЛЮЧИТЕЛЬНО важно, НЕ СТАВЬТЕ ядро, которое не

Почему так важно обновлять систему

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

Linux (ядро)

1.4. Ядро

1.4. Ядро Ядро — это сердце ОС, в котором реализовано управление физическими и программными ресурсами компьютера. Помимо этого оно позволяет получить доступ к различному железу. Например, ранние версии ядра обеспечивали работу только двух USB-устройств: клавиатура и мышь.

4.4. Как поменять ядро системы?

4.4. Как поменять ядро системы? В XP этот процесс упрощён до предела. Больше не надо переставлять всю систему, или использовать внешние утилитки из Resource Kit-а. Ядро меняется в Device Manager -> Computer, как и любой другой драйвер. Но, это ИСКЛЮЧИТЕЛЬНО важно, НЕ СТАВЬТЕ ядро, которое не

17.4.1 Зачем вообще нужно компилировать ядро?

17.4.1 Зачем вообще нужно компилировать ядро? Как было сказано в начале данного раздела, основная функция ядра состоит в том, чтобы обеспечить взаимодействие с аппаратурой компьютера. Обслуживание некоторых составляющих аппаратного обеспечения (таких, как память,

7.4.1. Ядро и поддержка устройств

7.4.1. Ядро и поддержка устройств Ядро ОС Linux может быть собрано как монолитное или модульное. Монолитное ядро — это один большой файл, в который включены сразу все возможности, заложенные в данную версию ядра. Оно без всяких изменений находится в оперативной памяти от

20.2. Зачем настраивать ядро?

20.2. Зачем настраивать ядро? В главе 7 я уже говорил о том, что в обязанности ядра ОС Linux входит не только реализация концепций процессов, виртуальной памяти, файловой системы и тому подобных составляющих UNIX, но и организация взаимодействия с оборудованием компьютера. Это

Семантическое ядро

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

Составьте семантическое ядро

Составьте семантическое ядро Чтобы успешно продвигать свой бизнес в Интернете, необходимо правильно составить семантическое ядро.Семантическое ядро, говоря простым языком, – это слова, которые будут наиболее точным образом характеризовать направленность вашей

Ядро API Firebird

Ядро API Firebird Программирование с использованием API необходимо при написании драйверов для создания сценариев в таких языках, как PHP и Python, и при разработке объектно- ориентированных классов доступа к данным для объектно-ориентированных языков типа Java, C++ и Object Pascal.

Как обновлять BIOS?

Как обновлять BIOS? Процесс обновления BIOS можно разделить на следующие этапы:1. Определение текущей версии BIOS.2. Получение обновления.3. Подготовка флэш-диска BIOS.4. Запись новой версии BIOS.Рассмотрим каждый этап по

Как обновлять BIOS?

Как обновлять BIOS? Процесс обновления BIOS можно разделить на следующие этапы:1. Определение текущей версии BIOS.2. Получение обновления.3. Подготовка флэш-диска BIOS.4. Запись новой версии BIOS. Рассмотрим каждый этап по


Как обновить ядро ​​в Linux Mint? В этой статье объясняется то, как это сделать и что это проще, чем вы думаете.

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

Зачем обновлять ядро ​​Linux?

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

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

Чтобы узнать, какое ядро ​​вы сейчас используете, откройте терминал и введите:

У вас должна получиться распечатка, подобная этой:


Вы можете обнаружить, что ваше ядро ​​значительно старше последней версии ядра. Это связано с тем, что некоторые дистрибутивы, такие как Linux Mint, поставляются со старыми ядрами для обеспечения стабильности. Это старое ядро ​​более надежно и с большей вероятностью будет работать с уникальным программным обеспечением дистрибутива, что снижает вероятность сбоев ядра.

Хотя всегда можно вручную обновить ядро ​​до более нового, этот процесс может быть довольно сложным.

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

Как обновить ядро ​​Linux

Вот как вы можете обновить ядро:

Не удаляйте старое ядро ​​после установки нового. Вы избавите себя от огромной головной боли, если у вас возникнут проблемы с новым ядром.

Чтобы начать использовать новое ядро, просто перезагрузите устройство. Если вы не укажете иное, ваше устройство всегда будет выбирать самое новое установленное ядро ​​при загрузке.

Устранение неполадок ядра Linux

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

  • Перезагрузите компьютер с Linux, удерживая нажатой клавишу Shift.
  • Когда появится меню GRUB, выберите Advanced Options.
  • Появится список установленных ядер. Выберите старое ядро, в котором не было проблем.

Если проблема исчезнет после отката, старое ядро ​​может быть вашим лучшим выбором на данный момент, если оно имеет официальный статус поддержки.

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

  • Снова войдите в меню ядра в диспетчере обновлений Mint и выберите более новое ядро.
  • Щелкните Удалить (Remove).

После этого ваше устройство больше не должно загружаться с новым ядром.

Простое обновление ядра Linux

Теперь у вас есть последнее ядро, которое официально поддерживает Linux Mint. Все системы Linux основаны на той или иной версии ядра, поэтому вам может быть интересно, что их всех отличает?

image

После всех этих лет, разработчики ядра Linux продолжают внедрять новшества. Новые версии будут быстрее и стабильнее.

Linux работает практически на всем: все 500 из 500 самых быстрых суперкомпьютеров мира; большинство общедоступных облаков, даже Microsoft Azure; и 74 процента смартфонов. Действительно, благодаря Android, Linux является самой популярной операционной системой для конечных пользователей, чуть обойдя Windows на 4 процента (39% против 35%).

Итак, что же будет дальше с Linux? После освещения Linux на протяжении всех 29 лет его истории и зная практически любого, кто хоть как-то связан с разработкой Linux, включая Линуса Торвальдса, я думаю, что у меня есть ответ на этот вопрос.

Недавние улучшения ядра Linux

Самое большое недавнее улучшение – и ничто другое даже близко не стоит – это то, что Linux теперь станет платформой для виртуальных частных сетей (VPN). Хотя Linux, во многом благодаря OpenVPN, долгое время был важным игроком в сфере VPN, добавление WireGuard, революционного подхода к VPN, меняет всё.

Торвальдсу очень, очень нравится WireGuard, вот что он писал: «Могу ли я еще раз заявить о своей любви к нему и надеяться на то, что в скором времени он будет объединен с ядром?». Чего хочет Линус, то он и получает. WireGuard был объединен с ядром Linux 5.6 в марте 2020 года.

Почему он так важен? WireGuard обладает редким качеством в надежности программы: его код чист и прост. Кроме того, он поддерживает передовые технологии криптографии: Noise Protocol Framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24 и HKDF.

Что еще более важно для пользователей, так это то, что он намного быстрее своих конкурентов. Эталонные тесты показали, что WireGuard быстрее OpenVPN более чем в два раза. Кроме того, он кроссплатформенный, так что вы можете запустить его на Linux сервере, а ваши клиенты могут быть на Windows, macOS, BSD, iOS, Android, и конечно же на Linux.

Ядро Linux 5.6 также может похвастаться и другими значительными улучшениями. Особо выделим то, что для 32-х разрядных систем, Linux решил свою проблему «конца времени». Видите ли, во вторник 19 января 2038 года в 03:14:08 по Гринвичу (GMT, также известное как Всемирное координированное время) наступит конец света.

Случится то, что значение времени в 32-х разрядных операционных системах на основе UNIX, таких, как Linux и старых версий macOS, исчерпает 32-х битные числа. После этого, отсчёт времени пойдет в обратную сторону с отрицательными числами. А Вы думали, что ошибка 2000 года была страшной!

Всё началось с того, что UNIX, отец Linux, датирует начало времени в секундах от 1 января 1970 года 00:00:00 GMT. Проблема была в том, что UNIX начиналась как 32-х разрядная операционная система, которая хранила время в виде одного 32-х разрядного целого числа со знаком. Это много секунд, но этого недостаточно. Исправление позволяет даже 32-х разрядному Linux использовать 64-х разрядные числа. Конечно это только задерживает проблему до воскресенья 4 декабря 29227702659 года 5:30:08 GMT, но меня это вполне устраивает.

Android и Linux синхронизируются

Все кто обращают внимание на операционные системы знают, что Android это специализированный дистрибутив Linux для мобильных устройств. Но возможно мало кто знает, что на протяжении многих лет, Android был форком Linux. Даже сейчас, спустя 10 лет после того, как разработчики Android и ядра Linux cнова начали работать вместе и хорошо взаимодействовать друг с другом, они не совсем идут «нога в ногу». Но это меняется.

Джонатан Корбет, разработчик ядра Linux и писатель, сказал в своем ежегодном отчете по ядру Linux следующее: «последнее стабильное ядро находится на пути к тому, чтобы стать частью общего образа системы Android, а затем они будут отслеживать стабильные обновления. Это будет означать, что они будут гораздо ближе к современному уровню техники».

Для Вас это может показаться неважным, но это важно, и вот почему. Сегодня прежде чем Linux окажется на этом новом, стильном Android-телефоне, который у Вас в руках, он проходит три отдельных, трудоемких этапа. Сначала Google берет ядро Linux с долгосрочной поддержкой (LTS) и добавляет в него специфичный для Android код, для того что бы сделать общее ядро Android. Затем Google отправляет его производителю систем на кристалле (SoC), например, Qualcomm. OEM-производитель адаптирует ядро под конкретную SoC и чипсет. Наконец адаптированное общее ядро Android (SoC ядро), передается производителю смартфона. Производитель уже добавляет свои доморощенные, проприетарные драйверы для дисплея, камеры и Wi-Fi/сотового модема. В результате получается ядро устройства – это то, что у Вас на телефоне.

Попутно каждый телефон вбирает в себя, буквально, миллионы строк кода ядра, не являющиеся частью стандартного дистрибутива. Во многом это драйверы устройств, потому что, каждый смартфон или планшет на Android поставляется со своим набором драйверов. Вот почему так сложно сделать по-настоящему универсальный дистрибутив для Android-смартфона, такой как операционная система /e/. Каков результат? В этом стильном, новом телефоне, который у Вас в кармане, установлено ядро Linux, которому уже 2 года. Благодаря этим древним ядрам, LTS-ядра Linux теперь поставляются с шестилетней поддержкой.

Google и поставщики не больше стремятся, чем Вы бы хотели, перенести исправления безопасности на пыльные, старые ядра. Поэтому Google, совместно с сообществом разработчиков, пытается привести поставляемые версии Android, в соответствие с основными текущими ядрами Linux.

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

eBPF: Межсетевой экран, который стал отладчиком Linux

Корбет также рассказал о росте интереса к расширенному фильтру пакетов Беркли (eBPF), используемого как мощный инструмент отладки ядра Linux. Вы спросите, как такое могло произойти? Смотрите.

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

Вы можете запустить eBPF в ответ на действия в tracepoints, kprobes и perf-событиях. Это позволяет Вам отлаживать проблемы ядра и выполнять анализ производительности. Более того, поскольку eBPF программы могут иметь доступ к структурам данных ядра, Вы можете писать, добавлять и тестировать новый отладочный код без перекомпиляции ядра. Для занятых разработчиков это большая экономия времени. Теперь системные администраторы и программисты, не входящие в круг тех, кто работает непосредственно с ядром Linux, начинают использовать возможности eBPF.

Rust становится вторым языком программирования Linux

С самого первого дня если Вы хотели развивать ядро Linux или что-то близкое к нему, Вы должны были делать это на языке Си. В самом деле, Вы можете утверждать, что Linux является причиной того, что Си остается самым популярным языком. Но это уже в прошлом.

На виртуальной конференции «2020 Linux Plumbers Conference», где ведущие разработчики ядра Linux обсуждают будущее Linux, говорилось о введении Rust в качестве второго языка ядра. Rust – это системный язык программирования высокого уровня, спонсируемый Mozilla, являющейся материнской компанией Firefox. Верите Вы или нет, но эта идея получает широкую поддержку. Хотя сам Торвальдс уверен в том, что Linux не будет написан на Rust. Однако ведь цель не в этом. Никто не собирается переписывать на Rust, 25 миллионов строк ядра, написанных на Си.

Использование Rust, языка системного уровня, внутри ядра, было предложено Джошем Триплеттом, ведущим специалистом по языку Rust, и Ником Десолнерсом, инженером Google. Почему Rust? Потому что он гораздо безопаснее, чем Си, особенно когда дело доходит до работы с памятью.

Как пояснил Райан Левик, главный защитник облачных разработчиков Microsoft, «Rust полностью безопасен для памяти». Если принять во внимание, что примерно две трети проблем безопасности могут быть вызваны плохой работой с памятью, то это довольно серьезное улучшение. Кроме того, Райан Левик говорит, что «Rust предотвращает эти проблемы, как правило, без добавления каких-либо накладных расходов во время выполнения».

Торвальдс видит в этом свои преимущества. Хотя он поощряет медленный, но неуклонный подход к внедрению Rust в Linux, он также сказал, что использование интерфейсов Rust для драйверов и других программ, не связанных с ядром, имеет смысл: «Я убежден что это произойдет. Это может быть и не Rust, но может случиться так, что у нас будут разные модели для написания подобных вещей, и Си не будет единственной».

Пока разработчики ядра медленно двигаются вперед, другие разработчики дистрибутивов Linux, не теряя времени, приняли Rust. Amazon Web Services (AWS) объявила, что ее только что выпущенный Bottlerocket Linux для контейнеров в основном написан на Rust.

Подобно Microsoft и Firefox, если назвать еще две компании, включающие Rust в свои планы разработки, AWS нравится Rust за его функции защиты памяти. Самарта Чандрашекар, менеджер по продукту AWS, сказала, что это «помогает обеспечить безопасность потоков и предотвратить ошибки, связанные с памятью, например, переполнение буфера, которое может привести к уязвимостям в безопасности».

Забегая вперед становится ясно, что Rust скоро будет играть важную роль как в разработке ядра Linux, так и в разработке дистрибутивов. Кто бы мог подумать, что Си будет хоть немного вытеснен в этой области программирования?

Ядро Linux 6.0 и выше

К концу этого года появится Linux 6.0. Но не стоит сильно обращать внимание на это число. В свое время, Торвальдс сказал о выпуске 5.0 следующее: «Я хотел бы отметить (ещё раз), что мы не делаем функциональные релизы, и что 5.0 не означает ничего большего, чем то, что числа 4.х стали такими большими, что у меня не хватает пальцев на руках и ногах, чтобы сосчитать их».

Забегая вперед можно сказать, что Linux версии 6.0, как и большинство предыдущих релизов, будет состоять из новых и улучшенных драйверов оборудования. Однако все заметят одно перспективное изменение: Linux наконец-то будет поддерживать набор инструкций AMD и Intel FSGSBASE. Хорошо, если вы и вправду не заядлый разработчик, то я только что Вас потерял. В общем, если коротко, то Ваша машина будет работать гораздо быстрее под управлением Linux, поддерживающим этот набор команд.

Вы можете резонно спросить меня, насколько быстрее? Я отвечу, ранние тесты производительности, проводимые на бета-версии ядра Linux 5.9, показали значительное улучшение ввода/вывода. С Redis, хранилищем структур данных в памяти, которое часто используется как база данных, прирост производительности составил более 50 процентов. Что не так уж и плохо!

Итак, все сводится к тому, что Linux продолжает улучшать свою скорость и безопасность. И как это ни удивительно, Linux продолжает расширять свои рынки благодаря недавно интегрированной WireGuard VPN.

Кто знает, возможно, 2021 год станет годом рабочего стола Linux? В конце концов, 2020 год был годом Linux на рабочем столе Windows.

Читайте также: