Проект CentOS официально объявил о доступности дистрибутива CentOS Stream 9, который используется в качестве основы для формирования дистрибутива Red Hat Enterprise Linux 9 в рамках нового более открытого процесса разработки. CentOS Stream относится к непрерывно обновляемым дистрибутивам и позволяет раньше получить доступ к пакетам, развиваемым для будущего выпуска RHEL. Сборки подготовлены для архитектур x86_64, Aarch64 и ppc64le (IBM Power 9+). Дополнительно заявлена поддержка архитектуры IBM Z (s390x Z14+), но сборки для неё ещё не доступны.
CentOS Stream позиционируется как upstream-проект для RHEL, дающий возможность сторонним участникам контролировать подготовку пакетов для RHEL, предлагать свои изменения и влиять на принимаемые решения. Раньше в качестве основы для новой ветки RHEL использовался снапшот одного из выпусков Fedora, который дорабатывался и стабилизировался за закрытыми дверями, без возможности контролировать ход разработки и принимаемые решения. В процессе разработке RHEL 9 на основе снапшота Fedora 34 при участии сообщества сформирована ветка CentOS Stream 9, в которой проводится подготовительная работа и формируется базис для новой значительной ветки RHEL.
Отмечается, что для CentOS Stream публикуются те же обновления, что подготовлены для ещё не выпущенного будущего промежуточного выпуска RHEL и основной целью разработчиков является достижения уровня стабильности CentOS Stream идентичного с RHEL. До того как пакет будет предложен в CentOS Stream он проходит через различные системы автоматического и ручного тестирования, и публикуется только если его уровень стабильности признаётся отвечающим стандартам качества пакетов, готовых для публикации в RHEL. Одновременно с CentOS Stream подготовленные обновления помещаются в ночные сборки RHEL.
Основные изменения в CentOS Stream 9 по сравнению с прошлой значительной веткой:
В качестве альтернативы пользователи также могут перейти на дистрибутивы, продолжившие развитие ветки CentOS 8: AlmaLinux (скрипт для миграции), Rocky Linux (скрипт для миграции), VzLinux (скрипт для миграции) или Oracle Linux (скрипт для миграции). Кроме того, компания Red Hat предоставила возможность (скрипт для миграции) бесплатного использования RHEL в организациях, развивающих открытое ПО, и в окружениях индивидуальных разработчиков, насчитывающих до 16 виртуальных или физических систем.
CentOS Stream позиционируется как upstream-проект для RHEL, дающий возможность сторонним участникам контролировать подготовку пакетов для RHEL, предлагать свои изменения и влиять на принимаемые решения. Раньше в качестве основы для новой ветки RHEL использовался снапшот одного из выпусков Fedora, который дорабатывался и стабилизировался за закрытыми дверями, без возможности контролировать ход разработки и принимаемые решения. В процессе разработке RHEL 9 на основе снапшота Fedora 34 при участии сообщества сформирована ветка CentOS Stream 9, в которой проводится подготовительная работа и формируется базис для новой значительной ветки RHEL.
Отмечается, что для CentOS Stream публикуются те же обновления, что подготовлены для ещё не выпущенного будущего промежуточного выпуска RHEL и основной целью разработчиков является достижения уровня стабильности CentOS Stream идентичного с RHEL. До того как пакет будет предложен в CentOS Stream он проходит через различные системы автоматического и ручного тестирования, и публикуется только если его уровень стабильности признаётся отвечающим стандартам качества пакетов, готовых для публикации в RHEL. Одновременно с CentOS Stream подготовленные обновления помещаются в ночные сборки RHEL.
Основные изменения в CentOS Stream 9 по сравнению с прошлой значительной веткой:
- Обновлено системное окружение и сборочный инструментарий. Для сборки пакетов задействован GCC 11. Стандартная Си-библиотека обновлена до glibc 2.34. Пакет с ядром Linux построен на базе выпуска 5.14. Пакетный менеджер RPM обновлён до версии 4.16 с поддержкой контроля целостности через fapolicyd.
- Завершена миграция дистрибутива на Python 3. По умолчанию предложена ветка Python 3.9. Поставка Python 2 прекращена.
- Рабочий стол основан на GNOME 40 (в RHEL 8 поставлялся GNOME 3.28) и библиотеке GTK 4. В GNOME 40 виртуальные рабочие столы в обзорном режиме (Activities Overview) переведены на горизонтальную ориентацию и отображаются в виде непрерывно прокручиваемой слева направо цепочки. На каждом рабочем столе, показываемом в обзорном режиме, наглядно представлены имеющиеся окна, для которых применяется динамическое панорамирование и масштабирование при взаимодействии пользователя. Обеспечен бесшовный переход между списком программ и виртуальными рабочими столами.
- В GNOME задействован обработчик power-profiles-daemon, предоставляющий возможность переключения на лету между режимом экономии энергии, режимом сбалансированного энергопотребления и режимом максимальной производительности.
- Все звуковые потоки переведены на мультимедийный сервер PipeWire, который теперь используется по умолчанию вместо PulseAudio и JACK. Использование PipeWire позволяет в обычной настольной редакции предоставить возможности профессиональной обработки звука, избавиться от фрагментации и унифицировать звуковую инфраструктуру для разных применений.
- По умолчанию скрыто загрузочное меню GRUB, если RHEL является единственным установленным в системе дистрибутивом и если прошлая загрузка прошла без сбоев. Для показа меню во время загрузки достаточно удерживать клавишу Shift или несколько раз нажать клавишу Esc или F8. Из изменений в загрузчике также отмечается размещение файлов конфигурации GRUB для всех архитектур в одном каталоге /boot/grub2/ (файл /boot/efi/EFI/redhat/grub.cfg теперь является символической ссылкой на /boot/grub2/grub.cfg), т.е. одну и ту же установленную систему можно загружать как с использованием EFI, таки и BIOS.
- Компоненты для поддержки различных языков вынесены в пакеты langpacks, позволяющие варьировать уровень устанавливаемой языковой поддержки. Например, в пакете langpacks-core-font предлагаются только шрифты, в langpacks-core - локаль для glibc, базовый шрифт и метод ввода, а в langpacks - переводы, дополнительные шрифты и словари для проверки правописания.
- Обновлены компоненты для обеспечения безопасности. В дистрибутиве задействована новая ветка криптографической библиотеки OpenSSL 3.0. По молчанию включены более современные и надёжные криптографические алгоритмы (например, запрещено применение SHA-1 в TLS, DTLS, SSH, IKEv2 и Kerberos, отключены TLS 1.0, TLS 1.1, DTLS 1.0, RC4, Camellia, DSA, 3DES и FFDHE-1024). Пакет OpenSSH обновлён до версии 8.6p1. Cyrus SASL переведён на бэкенд GDBM вместо Berkeley DB. В библиотеках NSS (Network Security Services) прекращена поддержка формата DBM (Berkeley DB). GnuTLS обновлён до версии 3.7.2.
- Значительно повышена производительность SELinux и снижено потребление памяти. В /etc/selinux/config убрана поддержка настройки "SELINUX=disabled" для отключения SELinux (указанная настройка теперь только отключает загрузку политик, а для фактического отключения функциональности SELinux теперь требуется передача ядру параметра "selinux=0").
- Добавлена экспериментальная поддержка VPN WireGuard.
- По умолчанию запрещён вход по SSH под пользователем root.
- Объявлены устаревшими инструменты управления пакетным фильтром iptables-nft (утилиты iptables, ip6tables, ebtables и arptables) и ipset. Для управления межсетевым экраном теперь рекомендуется использовать nftables.
- В состав включён новый демон mptcpd для настройки MPTCP (MultiPath TCP), расширения протокола TCP для организации работы TCP-соединения с доставкой пакетов одновременно по нескольким маршрутам через разные сетевые интерфейсы, привязанные к разным IP-адресам. Использование mptcpd даёт возможность настроить MPTCP без использования утилиты iproute2.
- Удалён пакет network-scripts, для настройки сетевых соединений следует использовать NetworkManager. Поддержка формата настроек ifcfg сохранена, но NetworkManager по умолчанию использует формат на основе файла keyfile.
- В состав включены новые версии компиляторов и инструментов для разработчиков: GCC 11.2, LLVM/Clang 12.0.1, Rust 1.54, Go 1.16.6, Node.js 16, OpenJDK 17, Perl 5.32, PHP 8.0, Python 3.9, Ruby 3.0, Git 2.31, Subversion 1.14, binutils 2.35, CMake 3.20.2, Maven 3.6, Ant 1.10.
- Обновлены серверные пакеты Apache HTTP Server 2.4.48, nginx 1.20, Varnish Cache 6.5, Squid 5.1.
- Обновлены СУБД MariaDB 10.5, MySQL 8.0, PostgreSQL 13, Redis 6.2.
- Для сборки эмулятора QEMU по умолчанию задействован Clang, что позволило применить в гипервизоре KVM некоторые дополнительные механизмы защиты, такие как SafeStack для защиты от методов эксплуатации на основе возвратно-ориентированного программирования (ROP - Return-Oriented Programming).
- В SSSD (System Security Services Daemon) повышена детализация логов, например, к событиям теперь прикрепляется время завершения задачи и отражается поток аутентификации. Добавлены функции поиска для анализа проблем с настройками и производительностью.
- Расширена поддержка IMA (Integrity Measurement Architecture) для проверки целостности компонентов операционной системы по цифровым подписям и хэшам.
- По умолчанию задействована единая унифицированная иерархия cgroup (cgroup v2). Сgroups v2 можно использовать, например, для ограничения потребления памяти, ресурсов CPU и ввода/вывода. Ключевым отличием cgroups v2 от v1 является применение общей иерархии cgroups для всех видов ресурсов, вместо раздельных иерархий для распределения ресурсов CPU, для регулирования потребления памяти и для ввода/вывода. Раздельные иерархии приводили к трудностям организации взаимодействия между обработчиками и к дополнительным затратам ресурсов ядра при применении правил для процесса, упоминаемого в разных иерархиях.
- Добавлена поддержка синхронизации точного времени на базе протокола NTS (Network Time Security), который использует элементы инфраструктуры открытых ключей (PKI) и позволяет использовать TLS и аутентифицированное шифрование AEAD (Authenticated Encryption with Associated Data) для криптографической защиты взаимодействия клиента и сервера по протоколу NTP (Network Time Protocol). NTP-сервер chrony обновлён до версии 4.1.
- Обеспечена экспериментальная поддержка KTLS (реализация TLS на уровне ядра), Intel SGX (Software Guard Extensions), DAX (Direct Access) для ext4 и XFS, поддержка AMD SEV и SEV-ES в гипервизоре KVM.
В качестве альтернативы пользователи также могут перейти на дистрибутивы, продолжившие развитие ветки CentOS 8: AlmaLinux (скрипт для миграции), Rocky Linux (скрипт для миграции), VzLinux (скрипт для миграции) или Oracle Linux (скрипт для миграции). Кроме того, компания Red Hat предоставила возможность (скрипт для миграции) бесплатного использования RHEL в организациях, развивающих открытое ПО, и в окружениях индивидуальных разработчиков, насчитывающих до 16 виртуальных или физических систем.