The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

31.03 Fedora и CentOS запускают Git Forge. GitLab открывает 18 проприетарных возможностей (100 +3)
  Проекты CentOS и Fedora сообщили о решении по созданию сервиса совместной разработки Git Forge, который будет построен с использованием платформы GitLab. GitLab станет первичной платформой для взаимодействия с Git-репозиториями и для хостинга проектов, связанных с дистрибутивами CentOS и Fedora. Ранее применяемый сервис Pagure продолжит существовать, но будет передан на попечение сообществу, заинтересованному в продолжении разработки. Pagure будет выведен из-под сопровождения трудоустроенной в Red Hat команды CPE (Community Platform Engineering), занимающейся поддержанием инфраструктуры для разработки и публикации релизов Fedora и CentOS.

При оценке возможных решений для нового Git Forge рассматривались Pagure и Gitlab. На основании изучения около 300 отзывов и пожеланий от участников проектов Fedora, CentOS, RHEL и CPE, были сформированы требования к функциональности и сделан выбор в пользу Gitlab. Кроме типовых операций с репозиториями (слияние, создание форков, добавление кода и т.п.) среди ключевых требований были заявлены безопасность, удобство работы и стабильность платформы.

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

Из возможностей GitLab, которые окончательно повлияли на принятие решения по выбору данной платформы, упомянуты поддержка подгрупп с выборочным доступом к репозиториям, возможность использования бота для автоматических слияний (требуется CentOS Stream для поддержании пакетов с ядром), наличие встроенных средств для планирования разработки, возможность использования готового SAAS-сервиса с гарантируемым уровнем доступности (позволит высвободить ресурсы на поддержание серверной инфраструктуры).

Решение уже вызвало критику среди разработчиков, связанную с тем, что решение было принято без предварительного широкого обсуждения. Также были высказаны опасения, что сервис не будет использовать свободную Comminity-редакцию GitLab. В частности, возможности, необходимые для реализации описанных в анонсе требований к Git Forge, доступны только в проприетарной версии GitLab Ultimate.

Критике также подверглось намерение воспользоваться предоставляемым компанией GitLab сервисом SAAS (приложение как сервис), вместо развёртывания GitLab на своих серверах, что выводит сервис из под контроля (например, невозможно быть уверенным, что все уязвимости в системе оперативно устраняются, должным образом поддерживается инфраструктура, в один прекрасный момент не будет навязана телеметрия и исключена диверсия со стороны персонала сторонней компании). Решение также не сочетается с основополагающими принципами Fedora, в которых определено, что проект должен отдавать предпочтения свободным альтернативам.

Тем временем, компания GitLab объявила об открытии реализаций 18 функциональных возможностей, ранее предлагавшихся только в проприетарных редакциях GitLab. Возможности охватывают различные области управления полным циклом разработки ПО, включая планирование разработки, создание проектов, верификацию, работу с пакетами, формирование релизов, настройку и защиту.

В число свободных переведены следующие функции:

  • Прикрепление связанных issue;
  • Экспорт issue из GitLab в CSV;
  • Режим планирования, упорядочивания и визуализации процесса разработки отдельных функциональных возможностей или релизов;
  • Встроенная сервисная служба для связывания участников проекта со сторонними лицами при помощи email;
  • Web-терминал для Web IDE;
  • Возможность синхронизации файлов для тестирования изменений в коде в web-терминале;
  • Средства управления дизайном, позволяющие загружать в issue макеты и ресурсы, используя issue как единую точку доступа ко всему, что требуется для разработки новой возможности;
  • Отчёты о качестве кода;
  • Поддержка пакетных менеджеров Conan (C/C++), Maven (Java), NPM (node.js) и NuGet (.NET);
  • Поддержка канареечных развёртываний, позволяющих установить новую версию приложения на небольшой части систем;
  • Инкрементальные распространения, позволяющие вначале доставить новые версии лишь для небольшого числа систем, постепенно доводя охват до 100%;
  • Флаги активации функциональности, дающие возможность поставлять проект в различных редакциях, динамически активируя определённые возможности;
  • Обзорный режим развёртываний, позволяющий оценить состояние каждого окружения непрерывной интеграции на базе Kubernetes;
  • Поддержка определения нескольких кластеров Kubernetes в конфигураторе (например, можно использовать отдельные кластеры Kubernetes для пробных внедрений и рабочих нагрузок);
  • Поддержка определения политик сетевой безопасности контейнеров, позволяющих разграничить доступ между подами Kubernetes.

Дополнительно можно отметить публикацию обновлений GitLab 12.9.1, 12.8.8 и 12.7.8 (Community Edition и Enterprise Edition), в которых устранена уязвимость. Проблема проявляется начиная с выпуска GitLab EE/CE 8.5 и позволяет прочитать содержимое любого локального файла при перемещении issue между проектами. Детали об уязвимости будут раскрыты через 30 дней.

  1. Главная ссылка к новости
  2. OpenNews: Фонд СПО планирует запустить новую платформу совместной разработки и хостинга кода
  3. OpenNews: Проект KDE внедряет GitLab. Разработка GitLab EE и CE перенесена в общий репозиторий
  4. OpenNews: Принадлежащий GitLab сервис Gitter использует методы скрытой идентификации пользователей
  5. OpenNews: Инцидент с СУБД проекта GitLab
  6. OpenNews: GitLab вводит сбор телеметрии для облачных и коммерческих продуктов (решение отложено)
Обсуждение (100 +3) | Тип: Тема для размышления |


31.03 Уязвимость в ядре Linux, позволяющая повысить свои привилегии через BPF (130 +21)
  Опубликованы сведения об уязвимости (CVE-2020-8835) в ядре Linux, которая была использована в соревновании Pwn2Own 2020 при демонстрации взлома Ubuntu. Уязвимость позволила непривилегированному пользователю получить права root. Рабочий эксплоит существует, но пока не опубликован. Уязвимость присутствует в подсистеме eBPF, позволяющей запускать обработчики для трассировки, анализа работы подсистем и управления трафиком, выполняемые внутри ядра в специальной виртуальной машине с JIT.

Проблема вызвана ошибкой в функции __reg_bound_offset32(), применяемой для проверки 32-разрядных операций в байткоде BPF. Из-за неверного расчёта границ регистра при обработке специально оформленных BPF-приложений возникали условия для записи и чтения данных вне выделенного буфера в области памяти ядра. Проблема появилась в ядре 5.5 и позднее при бэкпортировании исправлений была перенесена в ядро 5.4, а также в пакет с ядром 5.3, предлагаемым в Ubuntu Linux.

Для блокирования уязвимости рекомендовано откатить проблемный патч или запретить выполнение BPF-приложений непривилегированными пользователями через установку sysctl kernel.unprivileged_bpf_disabled в значение 1. Статус исправления в дистрибутивах: Ubuntu, Debian, Arch, Fedora и SUSE (в ядра RHEL проблемное изменение не переносилось).

  1. Главная ссылка к новости
  2. OpenNews: На соревновании Pwn2Own 2020 продемонстрированы взломы Ubuntu, Windows, macOS и VirtualBox
  3. OpenNews: В eBPF найдена возможность обхода защиты ядра Linux от атаки Spectre
  4. OpenNews: Компания Oracle намерена переработать DTrace для Linux с использованием eBPF
  5. OpenNews: В состав GCC принят бэкенд для компиляции в eBPF
  6. OpenNews: Критические уязвимости в подсистеме eBPF ядра Linux
Обсуждение (130 +21) | Тип: Проблемы безопасности |


31.03 Доступен дистрибутив для создания сетевых хранилищ OpenMediaVault 5 (37 +12)
  После почти двух лет с момента формирования прошлой значительной ветки состоялся релиз дистрибутива OpenMediaVault 5, нацеленного на быстрое развёртывание сетевого хранилища (NAS, Network-Attached Storage). Проект OpenMediaVault основан в 2009 году после раскола в стане разработчиков дистрибутива FreeNAS, в результате которого наряду с основанным на FreeBSD классическим FreeNAS было создано ответвление, разработчики которого поставили перед собой цель перевести дистрибутив на ядро Linux и пакетную базу Debian. Для загрузки подготовлены установочные образы OpenMediaVault для архитектуры x86_64 (586 Мб).

Основные новшества:

  • Пакетная база обновлена до Debian 10 (Buster).
  • Осуществлён переход на использование системы централизованного управления конфигурацией SaltStack для развёртывания и синхронизации настроек. Например, для развёртывания конфигурации новой системы в соответствие с параметрами из конфигурационной БД теперь достаточно выполнить "omv-salt stage run all".
  • Вместо утилиты omv-mkconf предложена новая команда omv-salt, которую можно использовать для создания файлов конфигурации.
  • Вместо утилиты omv-initsystem добавлена команда "omv-confdbadm populate", которая определяет текущие настройки и синхронизирует их с конфигурационной БД.
  • В механизм резервного копирования Time Machine добавлена поддержка разделов SMB/CIFS.
  • Для обработки кнопки выключения задействован systemd-logind.
  • Для инициирования перезагрузки, завершения работы и перехода в спящий режим задействован systemd.
  • Вместо ntpd для синхронизации точного времени использован chrony.
  • Для настройки сети задействован systemd.
  • Выполнение операции TRIM (передача устройствам хранения сведений о неиспользуемых блоках) на лету заменено на запуск подобной работы по расписанию.
  • Добавлен бэкенд для использования хранилищ на базе RAID-контроллеров Areca.
  • Из-за проблем со стабильностью для новых установок по умолчанию отключена поддержка совместных каталогов ("/sharedfolder/"). Для включения следует установить переменную "OMV_SHAREDFOLDERS_DIR_ENABLED=YES" и запустить команды "omv-salt stage run prepare" и "omv-salt deploy run systemd".
  • Обеспечено запоминание размера и позиции окон.
  • На основном экране реализовано отображение подсказки о появлении обновления.
  • Добавлен вывод предупреждения о перезагрузке.

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

Управляющий web-интерфейс OpenMediaVault написан на PHP с использованием JavaScript-фреймворка ExtJS и отличается загрузкой данных по мере необходимости при помощи технологии Ajax без перезагрузки страниц (web-интерфейс FreeNAS написан на языке Python с использованием фреймворка Django). В интерфейсе присутствуют функции организации совместного доступа к данным и разделения привилегий (в том числе поддержка ACL). Для мониторинга можно использовать SNMP (v1/2c/3), кроме того присутствует встроенная система отправки уведомлений о проблемах на email (включая отслеживание состояния дисков через S.M.A.R.T. и контроль работы системы обеспечения бесперебойного питания).

Из связанных с организацией работы хранилища базовых сервисов можно отметить: SSH/SFTP, FTP, SMB/CIFS, клиент DAAP, RSync, клиент BitTorrent, NFS и TFTP. В качестве файловой системы можно использовать EXT3, EXT4, XFS и JFS. Так как дистрибутив OpenMediaVault изначально нацелен на расширение функциональности через подключение дополнений, отдельно развиваются плагины с реализацией поддержки AFP (Apple Filing Protocol), сервера BitTorrent, сервера iTunes/DAAP, LDAP, iSCSI target, UPS, LVM и антивируса (ClamAV). Поддерживается создание программных RAID (JBOD/0/1/5/6) с использованием mdadm.

  1. Главная ссылка к новости
  2. OpenNews: Доступен дистрибутив для создания сетевых хранилищ OpenMediaVault 4
  3. OpenNews: Инициатива по созданию свободного NAS GnuBee Personal Cloud 1
  4. OpenNews: Проект FreeNAS разделяется на две части: на базе FreeBSD и Debian GNU/Linux
  5. OpenNews: Выпуск дистрибутива для создания сетевых хранилищ FreeNAS 11.3
  6. OpenNews: Объявлено об объединении проектов FreeNAS и TrueNAS
Обсуждение (37 +12) | Тип: Программы |


31.03 Уязвимости в механизме автообновления Apache NetBeans (17 +5)
  Раскрыты сведения о двух уязвимостях в системе автоматической доставки обновлений для интегрированной среды разработки Apache NetBeans, позволяющих подменить отдаваемые сервером обновления и nbm-пакеты. Проблемы без лишней огласки были устранены в выпуске Apache NetBeans 11.3.

Первая уязвимость (CVE-2019-17560) вызвана отсутствием проверки SSL-сертификатов и имени хоста при загрузке данных через HTTPS, что даёт возможность незаметно подменить загружаемые данные. Вторая уязвимость (CVE-2019-17561) связана с неполноценной проверкой загруженного обновления по цифровой подписи, что позволяет атакующему добавить в nbm-файлы дополнительный код без нарушения целостности пакета.

  1. Главная ссылка к новости
  2. OpenNews: Выпуск интегрированной среды разработки Apache NetBeans 11.3
  3. OpenNews: Выпуск интегрированной среды разработки Apache NetBeans 11.2
  4. OpenNews: Критическая уязвимость в Apache Struts
  5. OpenNews: Уязвимость в Apache Tomcat, позволяющая подставить JSP-код и получить файлы web-приложений
  6. OpenNews: WordPress и Apache Struts среди web-платформ лидируют по числу уязвимостей с эксплоитами
Обсуждение (17 +5) | Тип: Проблемы безопасности |


30.03 Выпуск Linux-дистрибутива openEuler 20.03, развиваемого компанией Huawei (113 +6)
  Компания Huawei представила Linux-дистрибутив openEuler 20.03, который стал первым выпуском, который будет сопровождаться в рамках длительного цикла поддержки (LTS). Обновления пакетов для openEuler 20.03 будут выпускаться до 31 марта 2024 года. Репозитории и установочные iso-образы (x86_64 и aarch64) доступны для свободной загрузки с предоставлением исходных текстов пакетов. Исходные тексты специфичных для дистрибутива компонентов размещены в сервисе Gitee.

openEuler базируется на наработках коммерческого дистрибутива EulerOS, который является ответвлением от пакетной базы CentOS и оптимизирован для использования на серверах с процессорами ARM64. Применяемые в дистрибутиве EulerOS методы защиты сертифицированы Министерством общественной безопасности КНР, а также признаны соответствующими требованиям CC EAL4+ (Германия), NIST CAVP (США) и CC EAL2+ (США). EulerOS является одной из пяти операционных систем (EulerOS, macOS, Solaris, HP-UX и IBM AIX) и единственным дистрибутивом Linux, сертифицированных комитетом Opengroup на соответствие стандарту UNIX 03.

Отличия openEuler от CentOS довольно существенны и не ограничиваются проведением ребрендинга. Например, в openEuler поставляется модифицированное ядро Linux 4.19, systemd 243, bash 5.0 и рабочий стол на основе GNOME 3.30. Внесено много специфичных для ARM64 оптимизаций, часть которых уже передана в основные кодовые базы ядра Linux, GCC, OpenJDK и Docker.

Среди заявленных преимуществ openEuler:

  • Ориентация на достижение максимальной производительности на многоядерных системах и высокий параллелизм обработки запросов. Оптимизация механизма управления файловым кэшем дала возможность избавиться от лишних блокировок и поднять число параллельно обрабатываемых запросов в Nginx на 15%.
  • Интегрированная библиотека KAE, позволяющая использовать аппаратные ускорители Hisilicon Kunpeng для ускорения производительности различных алгоритмов (криптографические операции, регулярные выражения, сжатие и т.п.) от 10% до 100%.
  • Упрощённый инструментарий управления изолированными контейнерами iSulad, сетевой конфигуратор clibcni и runtime lcr (Lightweight Container Runtime, совместим с OCI, но в отличие от runc написан на Си и использует gRPC). При использовании легковесных контейнеров iSulad отмечается ускорение запуска контейнеров до 35% и снижение потребления памяти до 68%.
  • Оптимизированная сборка OpenJDK, демонстрирующая увеличение производительности на 20% за счёт модернизированной системы управления памятью и применения расширенных оптимизаций при компиляции.
  • Система автоматической оптимизации настроек A-Tune, использующая методы машинного обучения для тюнинга параметров работы системы. По тестам Huawei автоматическая оптимизация настроек в зависимости от сценария использования системы демонстрирует увеличение эффективности до 30%.
  • Поддержка различных аппаратных архитектур, таких как процессоры Kunpeng и x86 (в будущем ожидается увеличения числа поддерживаемых архитектур).

Компания Huawei также объявила о появлении четырёх коммерческих редакций openEuler - Kylin Server OS, iSoft Server OS, deepinEuler и EulixOS Server, подготовленных сторонними производителями Kylinsoft, iSoft, Uniontech и ISCAS (Institute of Software Chinese Academy of Sciences), которые подключились к работе сообщества, развивающего openEuler. Компания Huawei изначально преподносит openEuler как открытый совместный проект, развиваемый при участии сообщества. В настоящее время уже приступили к работе курирующие openEuler технический комитет, комитет обеспечения безопасности и общественный секретариат.

При сообществе планируется создать службы сертификации, обучения и технической поддержки. Huawei планирует формировать LTS-выпуски раз в два года, а развивающие функциональность версии - раз в полгода. Проектом также принято обязательство по первоочередной передаче изменений в Upstream и возвращению всех разработок сообществу в форме открытых проектов.

  1. Главная ссылка к новости
  2. OpenNews: Huawei опубликовал новый Linux-дистрибутив openEuler
  3. OpenNews: Компания Huawei предложила новую ФС EROFS для ядра Linux
  4. OpenNews: Google ограничит доступ Huawei к своим сервисам для Android
  5. OpenNews: Huawei анонсировал операционную систему Harmony
  6. OpenNews: Компания Huawei начала предустановку Deepin Linux на ноутбуки
Обсуждение (113 +6) | Тип: Программы |


30.03 Доступен VPN WireGuard 1.0.0 (50 +33)
  Представлен знаковый выпуск VPN WireGuard 1.0.0, который отметил собой поставку компонентов WireGuard в основном составе ядра Linux 5.6 и стабилизацию разработки. Включённый в состав ядра Linux код прошёл дополнительный аудит безопасности, выполненный независимой фирмой, специализирующейся на подобных проверках. Аудит не выявил каких-либо проблем.

Так как WireGuard теперь развивается в основном составе ядра Linux, для дистрибутивов и пользователей, продолжающих использование старых версий ядра, подготовлен репозиторий wireguard-linux-compat.git. Репозиторий включает бэкпортированный код WireGuard и слой compat.h для обеспечения совместимости со старыми ядрами. Отмечается, что пока есть возможность разработчиков и потребность у пользователей обособленный вариант патчей будет поддерживаться в рабочем виде. В текущем виде обособленный вариант WireGuard может использоваться с ядрами из Ubuntu 20.04 и Debian 10 "Buster", а также доступен в виде патчей для ядер Linux 5.4 и 5.5. Дистрибутивы, применяющие самые свежие ядра, такие как Arch, Gentoo и Fedora 32, получат возможность использования WireGuard вместе с обновлением ядра 5.6.

Основной процесс разработки теперь ведётся в репозитории wireguard-linux.git, включающем полное дерево ядра Linux с изменениями от проекта Wireguard. Патчи из данного репозитория будут рецензироваться для включения в основное ядро и регулярно переноситься в ветки net/net-next. Разработка запускаемых в пространстве пользователя утилит и скриптов, таких как wg и wg-quick, ведётся в репозитории wireguard-tools.git, который можно использовать для создания пакетов в дистрибутивах.

Напомним, что VPN WireGuard реализован на основе современных методов шифрования, обеспечивает очень высокую производительность, прост в использовании, лишён усложнений и хорошо зарекомендовал себя в ряде крупных внедрений, обрабатывающих большие объёмы трафика. Проект развивается с 2015 года, прошёл аудит и формальную верификацию применяемых методов шифрования. Поддержка WireGuard уже интегрирована в NetworkManager и systemd, а патчи для ядра входят в базовый состав дистрибутивов Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph и ALT.

В WireGuard применяется концепция маршрутизации по ключам шифрования, которая подразумевает привязку к каждому сетевому интерфейсу закрытого ключа и применение для связывания открытых ключей. Обмен открытыми ключами для установки соединения производится по аналогии с SSH. Для согласования ключей и соединения без запуска отдельного демона в пространстве пользователя применяется механизм Noise_IK из Noise Protocol Framework, похожий на поддержание authorized_keys в SSH. Передача данных осуществляется через инкапсуляцию в пакеты UDP. Поддерживается смена IP-адреса VPN-сервера (роуминг) без разрыва соединения с автоматической перенастройкой клиента.

Для шифрования используется потоковый шифр ChaCha20 и алгоритм аутентификации сообщений (MAC) Poly1305, разработанные Дэниелом Бернштейном (Daniel J. Bernstein), Таней Ланге (Tanja Lange) и Питером Швабе (Peter Schwabe). ChaCha20 и Poly1305 позиционируются как более быстрые и безопасные аналоги AES-256-CTR и HMAC, программная реализация которых позволяет добиться фиксированного времени выполнения без задействования специальной аппаратной поддержки. Для генерации совместного секретного ключа применяется протокол Диффи-Хеллмана на эллиптических кривых в реализации Curve25519, также предложенной Дэниелом Бернштейном. Для хеширования используются алгоритм BLAKE2s (RFC7693).

При старом тестировании производительности WireGuard продемонстрировал в 3.9 раза более высокую пропускную способность и в 3.8 раз более высокую отзывчивость, по сравнению с OpenVPN (256-bit AES c HMAC-SHA2-256). По сравнению с IPsec (256-bit ChaCha20+Poly1305 и AES-256-GCM-128) в WireGuard наблюдается небольшое опережение по производительности (13-18%) и снижение задержек (21-23%). Размещённые на сайте проекта результаты тестирования охватывают старую обособленную реализацию WireGuard и отмечены как недостаточно качественные. Со времени проведения тестов код WireGuard и IPsec был дополнительно оптимизирован и теперь работает быстрее. Более полное тестирование, охватывающее интегрированную в ядро реализацию, пока не проведено. Тем не менее, отмечается, что WireGuard в некоторых ситуациях по-прежнему обгоняет IPsec в силу многопоточности, в то время как OpenVPN остаётся очень медленным.


  1. Главная ссылка к новости
  2. OpenNews: Релиз ядра Linux 5.6
  3. OpenNews: Разработчики VPN WireGuard представили новую криптографическую библиотеку Zinc
  4. OpenNews: Cloudflare опубликовал реализацию VPN WireGuard на языке Rust
  5. OpenNews: WireGuard и andOTP удалены из Google Play из-за ссылок на приём пожертвований
  6. OpenNews: VPN WireGuard принят в ветку net-next и намечен для включения в ядро Linux 5.6
Обсуждение (50 +33) | Тип: Программы |


30.03 Выпуск Kubernetes 1.18, системы управления кластером изолированных контейнеров (25 +7)
  Опубликован релиз платформы оркестровки контейнеров Kubernetes 1.18, позволяющей как единым целым управлять кластером из изолированных контейнеров и предоставляющей механизмы для развёртывания, сопровождения и масштабирования выполняемых в контейнерах приложений. Проект изначально был создан компанией Google, но затем переведён на независимую площадку, курируемую организацией Linux Foundation. Платформа позиционируется как развиваемое сообществом универсальное решение, не привязанное к отдельным системам и способное работать с любыми приложениями в любых облачных окружениях. Код Kubernetes написан на языке Go и распространяется под лицензией Apache 2.0.

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

Выпуск Kubernetes 1.18 включает 38 изменений и улучшений, из которых 15 переведены в статус стабильных, а 11 в статус бета. 12 новый изменений предложены в статусе альфа. При подготовке новой версии равные усилия были направлены как на доработку различной функциональности и стабилизацию экспериментальных возможностей, так и на добавление новых разработок. Основные изменения:

  • Kubectl
    • Добавлена альфа-версия команды "kubectl debug", которая позволяет упростить отладку в подах, с помощью запуска эфемерных контейнеров с инструментами для отладки.
    • Объявлена стабильной команда "kubectl diff", позволяющая посмотреть, что изменится в кластере, если применить манифест.
    • Убраны все генераторы команды "kubectl run", кроме генератора запуска одиночного пода.
    • Изменили флаг "--dry-run", в зависимости от его значения (client, server и none) пробное исполнение команды выполняется на стороне клиента или сервера.
    • Код kubectl выделен в отдельный репозиторий. Это позволило отделить kubectl от внутренних зависимостей kubernetes и облегчило импорт кода в сторонние проекты.
  • Ingress
    • Началось изменение API group для Ingress на networking.v1beta1.
    • Добавлены новые поля:
      • pathType, позволяющее указать каким способом будет сравниваться путь в запросе
      • IngressClassName - замена аннотации kubernetes.io/ingress.class, которая объявлена deprecated. В этом поле указывается название специального объекта InressClass
    • Добавлен объект IngressClass, в котором указывается название ингресс контроллера, его дополнительные параметры и признак использования его по умолчанию
  • Service
    • Добавлено поле AppProtocol, в котором можно указать какой протокол использует приложение
    • Переведён в статус бета и включён по умолчанию EndpointSlicesAPI, который является более функциональной заменой обычных Endpoints.
  • Сеть
  • Постоянные диски. Объявлена стабильной следующая функциональность:
  • Конфигурирование приложения
    • В объекты ConfigMap и Secret добавлено новое поле "immutable". Установка значение поля в true запрещает изменение объекта.
  • Планировщик
    • Добавлена возможность создавать дополнительные профили для kube-scheduler. Если раньше требовалось запускать дополнительные отдельные планировщики для реализации нестандартных алгоритмов распределения подов, то теперь появилась возможность создать дополнительные наборы настроек для стандартного планировщика и указать его название в том же поле пода ".spec.schedulerName". Статус - альфа.
    • Taint Based Eviction объявлена стабильной
  • Масштабирование
    • Добавлена возможность указать в манифесте HPA степень агрессивности при изменении количества запущенных подов, то есть при увеличении нагрузки запускать сразу в N раз больше экземпляров (instance).
  • Kubelet
    • Topology Manager получил статус бета. Функция включает NUMA-распределение, что позволяет избежать деградации производительности на мультисокетных системах.
    • Статус бета получила функция PodOverhead, позволяющая указать в RuntimeClass дополнительное количество ресурсов, необходимое для запуска пода.
    • Расширена поддержка HugePages, в альфа статусе добавлена изоляция на уровне контейнера и поддержка нескольких размеров hugepages.
    • Удален endpoint для метрик /metrics/resource/v1alpha1, вместо него используется /metrics/resource
  • API
    • Окончательно убрали возможность использовать устаревшие API group apps/v1beta1 и extensions/v1beta1.
    • ServerSide Apply повышен до статуса бета2. Это улучшение переносит манипуляцию объектами из kubectl в API-сервер. Авторы улучшения утверждают, что это позволит починить множество существующих ошибок, которые невозможно исправлить в текущей ситуации. Также они добавили раздел ".metadata.managedFields", в котором предлагают хранить историю изменений объекта, с указанием кто, когда и что именно изменил.
    • Объявлен стабильным CertificateSigningRequest API.
  • Поддержка платформы Windows.

  1. Главная ссылка к новости
  2. OpenNews: Опубликован план окончания поддержки CoreOS Container Linux
  3. OpenNews: Docker продал компании Mirantis часть бизнеса, связанного с платформой Docker Enterprise
  4. OpenNews: Выпуск Cilium 1.4, сетевой системы для Linux-контейнеров, основанной на BPF
  5. OpenNews: В Kubernetes 1.13 устранена критическая уязвимость, позволяющая поднять свои привилегии
  6. OpenNews: Amazon открыл код легковесной платформы виртуализации Firecracker


30.03 Релиз ядра Linux 5.6 (136 +44)
  После двух месяцев разработки Линус Торвальдс представил релиз ядра Linux 5.6. Среди наиболее заметных изменений: интеграция VPN-интерфейса WireGuard, поддержка USB4, пространства имён для времени, возможность создания обработчиков перегрузки TCP при помощи BPF, начальная поддержка MultiPath TCP, избавление ядра от проблемы 2038 года, механизм "bootconfig", ФС ZoneFS.

В новую версию принято 13702 исправлений от 1810 разработчиков, размер патча - 40 Мб (изменения затронули 11577 файлов, добавлено 610012 строк кода, удалено 294828 строк). Около 45% всех представленных в 5.6 изменений связаны с драйверами устройств, примерно 15% изменений имеют отношение к обновлению кода, специфичного для аппаратных архитектур, 12% связано с сетевым стеком, 4% - c файловыми системами и 3% c внутренними подсистемами ядра.

Основные новшества:

  • Сетевая подсистема
    • Добавлена реализация VPN-интерфейса WireGuard, который реализован на основе современных методов шифрования (ChaCha20, Poly1305, Curve25519, BLAKE2s), прост в использовании, лишён усложнений, хорошо зарекомендовал себя в ряде крупных внедрений и обеспечивает очень высокую производительность (в 3,9 раз опережает OpenVPN по пропускной способности). В WireGuard применяется концепция маршрутизации по ключам шифрования, которая подразумевает привязку к каждому сетевому интерфейсу закрытого ключа и применение для связывания открытых ключей. Обмен открытыми ключами для установки соединения производится по аналогии с SSH. Необходимые для работы WireGuard криптографические примитивы были перенесены из библиотеки Zinc в состав штатного Crypto API и включены в состав ядра 5.5.
    • Началась интеграция компонентов, необходимых для поддержки MPTCP (MultiPath TCP), расширения протокола TCP для организации работы TCP-соединения с доставкой пакетов одновременно по нескольким маршрутам через разные сетевые интерфейсы, привязанные к разным IP-адресам. Для сетевых приложений подобное агрегированное соединение выглядит как обычное TCP-соединение, а вся логика разделения потоков выполняется силами MPTCP. Multipath TCP может использоваться как для расширения пропускной способности, так и для увеличения надёжности. Например, MPTCP можно применять для организации передачи данных на смартфоне с использованием одновременно линков WiFi и 4G или для сокращения расходов за счёт подключения сервера с использованием нескольких дешёвых линков вместо одного дорогого.
    • Добавлена поддержка дисциплины обработки сетевых очередей sch_ets (Enhanced Transmission Selection, IEEE 802.1Qaz), предоставляющей возможность распределения пропускной способности между разными классами трафика. Если нагрузка на определённый класс трафика ниже предоставленной пропускной способности, то ETS позволяет другим классам трафика использовать доступную (неиспользованную) пропускную способность. Qdisc sch_ets настраивается как дисциплина PRIO и использует классы трафика для определения строгих и совместно используемых ограничений пропускной способности. Работает ETS как комбинация дисциплин PRIO и DRR - при наличии жёстко ограниченных классов трафика используется PRIO, но если в очереди трафика нет, работает как DRR.
    • Добавлен новый тип BPF-программ BPF_PROG_TYPE_STRUCT_OPS, позволяющий реализовывать обработчики функций ядра через BPF. В настоящее время указанную возможность уже можно использовать для реализации алгоритмов контроля перегрузки TCP в виде BPF-программ. В качестве примера предложена BPF-программа с реализацией алгоритма DCTCP.
    • В ядро приняты изменения, переводящие инструментарий ethtool с ioctl() на использование интерфейса netlink. Новый интерфейс упрощает добавление расширений, улучшает обработку ошибок, позволяет отправлять уведомления при изменении состояния, упрощает взаимодействие между ядром и пространством пользователя и сокращает число синхронизируемых именованных списков.
    • Добавлена реализация алгоритма управления сетевыми очередями FQ-PIE (Flow Queue PIE), нацеленного на снижение негативного влияния промежуточной буферизации пакетов на граничном сетевом оборудовании (bufferbloat). FQ-PIE демонстрирует высокую эффективность при использовании в системах с кабельными модемами.
  • Дисковая подсистема, ввод/вывод и файловые системы
    • Для файловой системы Btrfs добавлена асинхронная реализация операции DISCARD (пометка освобождённых блоков, которые уже можно не хранить физически). Изначально операции DISCARD выполнялись синхронно, что могло приводить к проседанию производительности из-за ожидания завершения соответствующих команд накопителями. Асинхронная реализация позволяет не ждать завершения DISCARD накопителем и выполнять данную операцию в фоне.
    • В XFS проведена чистка кода, в котором использовались старые 32-разрядные счётчики времени (тип time_t заменён на time64_t), приводящие к проблеме 2038 года. Устранены ошибки и повреждения памяти, всплывавшие на 32-разрядых платформах. Переработан код для работы с расширенными атрибутами.
    • В файловую систему ext4 внесены оптимизации производительности, связанные c обработкой блокировки inode при операциях чтения и записи. Повышена производительность перезаписи в режиме прямого ввода/вывода (Direct I/O). Для упрощения диагностики проблем обеспечено сохранение в суперблоке первого и последнего кодов ошибок.
    • В файловой системе F2FS реализована возможность хранения данных в сжатом виде. Для отдельного файла или каталога сжатие может быть включено при помощи команды "chattr +c file" или "chattr +c dir; touch dir/file". Для сжатия всего раздела в утилите mount можно использовать опцию "-o compress_extension=ext".
    • В состав ядра принята файловая система ZoneFS, упрощающая низкоуровневую работу с зонированными устройствами хранения. Под зонированными накопителями подразумеваются устройства на жёстких магнитных дисках или NVMe SSD, пространство для хранения в которых разбито на зоны, составляющие группы блоков или секторов, в которые допускается лишь последовательное добавление данных с обновлением целиком всей группы блоков. ФС ZoneFS разработана компанией Western Digital и связывает каждую зону в накопителе с отдельным файлом, который можно использовать для хранения данных в raw-режиме без манипуляции на уровне секторов и блоков, т.е. позволяет приложениям использовать файловый API вместо прямого обращения к блочному устройству при помощи ioctl.
    • В NFS отключено по умолчанию монтирование разделов поверх UDP. Добавлена поддержка определённой в спецификации NFS 4.2 возможности прямого копирования файлов между серверами. Добавлена новая опция монтирования "softreval", в случае отказа сервера допускающая использование прокэшированных значений атрибутов. Например, при указании данной опции после недоступности сервера сохраняется возможность перемещения по путям в NFS-разделе и обращения к информации, которая осела в кэше.
    • Проведена оптимизация производительности механизма fs-verity, применяемого для контроля целостности и проверки подлинности отдельных файлов. Повышена скорость последовательного чтения, благодаря применению хеш-дерева Меркла. Оптимизирована производительнлсть FS_IOC_ENABLE_VERITY в условиях отсутствия данных в кэше (применено упреждающее чтение страниц с данными).
  • Виртуализация и безопасность
    • Объявлена устаревшей возможность отключения модуля SELinux во время работы, а в будущем выгрузка уже активированного SELinux будет запрещена. Для отключения SELinux потребуется передать параметр "selinux=0" в командной строке ядра.
    • Добавлена поддержка пространств имён для времени (time namespaces), позволяющих привязать к контейнеру состояние системных часов (CLOCK_REALTIME, CLOCK_MONOTONIC, CLOCK_BOOTTIME), использовать в контейнере своё время и при миграции контейнера на другой хост обеспечить неизменность показаний CLOCK_MONOTONIC и CLOCK_BOOTTIME (учесть время после загрузки с учётом или без учёта нахождения в спящем режиме).
    • Удалён блокируемый пул /dev/random. Поведение /dev/random приближено к /dev/urandom в плане предотвращения блокирования энтропии после инициализации пула.
    • В основной состав ядра включён драйвер, позволяющий гостевым системам, работающим под управлением VirtualBox, монтировать каталоги, экспортируемые хост-окружением (VirtualBox Shared Folder).
    • В подсистему BPF добавлен набор патчей (BPF dispatcher), в условиях применения механизма Retpoline для защиты от атак класса Spectre V2 позволяющий повысить эффективность вызова BPF-программ при наступлении привязанных к ним событий (например, даёт возможнось ускорить вызов XDP-обработчиков при поступлении сетевого пакета).
    • Добавлен драйвер для поддержки встроенных в APU AMD окружений TEE (Trusted Execution Environment).
  • Память и системные сервисы
    • В BPF добавлена поддержка глобальных функций. Разработка ведётся в рамках инициативы по добавлению поддержи библиотек функций, которые можно подключать в программах BPF. Следующим шагом станет поддержка динамических расширений, позволяющих загружать глобальные функции, в том числе для замены существующих глобальных функций во время их использования. В подсистеме BPF также добавлена поддержка варианта операции map (используется для сохранения постоянных данных), поддерживающего выполнение в пакетном режиме.
    • Добавлено устройство "cpu_cooling" позволяющее охлаждать перегретый CPU путём перевода его в состояние простоя (idle) на короткие промежутки времени.
    • Добавлен системный вызов openat2(), предлагающий набор дополнительных флагов для ограничения разрешения файлового пути (запрет пересечения точек монтирования, символических ссылок, magic-ссылок (/proc/PID/fd), компонентов "../").
    • Для разнородных систем на базе архитектуры big.LITTLE, комбинирующих в одном чипе мощные и менее производительные энергоэффективные ядра CPU, при выполнении задач реального времени обеспечено выставление параметра uclamp_min (появившийся в ядре 5.3 механизм закрепления нагрузки). Указанный параметр гарантирует, что задача будет размещена планировщиком на ядре CPU, имеющем достаточно производительности.
    • Ядро избавлено от проблемы 2038 года. Заменены последние остающиеся обработчики, в которых для счётчика эпохального времени использовался 32-разрядный (signed int) тип time_t, который с учётом отсчёта от 1970 года должен переполниться в 2038 году.
    • Продолжено усовершенствование интерфейса асинхронного ввода/вывода io_uring, в котором обеспечена поддержка новых операций: IORING_OP_FALLOCATE (резервирование пустых областей), IORING_OP_OPENAT, IORING_OP_OPENAT2, IORING_OP_CLOSE (открытие и закрытие файлов), IORING_OP_FILES_UPDATE (добавление и удаление файлов из списка быстрого доступа), IORING_OP_STATX (запрос информации о файле), IORING_OP_READ, IORING_OP_WRITE (упрощённые аналоги IORING_OP_READV и IORING_OP_WRITEV), IORING_OP_FADVISE, IORING_OP_MADVISE (асинхронные варианты вызовов posix_fadvise и madvise), IORING_OP_SEND, IORING_OP_RECV (отправка и приём сетевых данных), IORING_OP_EPOLL_CTL (выполнение операций над файловыми дескрипторами epoll).
    • Добавлен системный вызов pidfd_getfd(), дающий возможность процессу извлечь из другого процесса файловый дескриптор открытого файла.
    • Реализован механизм "bootconfig", позволяющий помимо опций командной строки определять параметры работы ядра через файл с настройками. Для добавления подобных файлов в образ initramfs предложена утилита bootconfig. Указанная возможность может применяться, например, для настройки kprobes во время загрузки.
    • Переработан механизм ожидания записи и чтения данных в неименованных каналах (pipe). Изменение позволило ускорить выполнение таких задач, как распараллеленная сборка больших проектов. При этом оптмизация может привести к состоянию гонки в GNU make из-за ошибки в выпуске 4.2.1, которая устранена в версии 4.3.
    • В prctl() добавлен флаг PR_SET_IO_FLUSHER, который может применяться для пометки процессов, занимающихся высвобождением памяти, для которых не следует применять ограничения в ситуации нехватки памяти в системе.
    • На основе применяемой в Android системы распределения памяти ION реализована подсистема dma-buf heaps, позволяющая управлять выделением DMA-буферов для совместного использования областей памяти драйверами, приложениями и различными подсистемами.
  • Аппаратные архитектуры
    • Добавлена поддержка расширения E0PD, появившегося в ARMv8.5 и позволяющего реализовать защиту от атак, связанных со спекулятивным выполнением инструкций в CPU. Защита на базе E0PD приводит к меньшим накладным расходам, чем защита KPTI (Kernel Page Table Isolation).
    • Для систем на базе архитектуры ARMv8.5 добавлена поддержка инструкции RNG, предоставляющей доступ к аппаратному генератору псевдослучайных чисел. В ядре инструкция RNG задействована для формирования энтропии при инициализации предоставляемого ядром генератора псевдослучайных чисел.
    • Удалена поддержка расширений MPX (Memory Protection Extensions), добавленная в ядре 3.19 и позволяющая организовать проверку указателей на соблюдение границ областей памяти. Указанная технология не получила распространения в компиляторах и была удалена из GCC.
    • Для архитектуры RISC-V реализована поддержка отладочного инструмента KASan (Kernel address sanitizer), обеспечивающего выявление ошибок при работе с памятью.
  • Оборудование
    • Реализована поддержка спецификации USB 4.0, которая основана на протоколе Thunderbolt 3 и обеспечивает пропускную способность до 40 Гбит/с, сохраняя обратную совместимость с USB 2.0 и USB 3.2. По аналогии с Thunderbolt интерфейс USB 4.0 позволяет туннелировать различные протоколы поверх одного кабеля с разъёмом Type-C, включая PCIe, Display Port и USB 3.x, а также программные реализации протоколов, например, для организации сетевых линков между хостами. Реализация основана на уже входящем в ядро Linux драйвере Thunderbolt и адаптирует его для работы с хостами и устройствами, совместимыми с USB4. Изменения также добавляют поддержку устройств Thunderbolt 3 в программную реализацию менеджера соединений (Connection Manager), который отвечает за создание туннелей для подключения нескольких устройств через один разъём.
    • В драйвер amdgpu добавлена начальная поддержка технологии защиты от копирования HDCP 2.x (High-bandwidth Digital Content Protection). Добавлена поддержка ASIC-чипа AMD Pollock, основанного на Raven 2. Реализована возможность сброса GPU для семейств Renoir и Navi.
    • В DRM-драйвер для видеокарт Intel добавлена поддержка DSI VDSC для чипов на базе микроархитектуры Ice Lake и Tiger Lake, реализован LMEM mmap (device local memory), улучшен парсинг VBT (Video BIOS Table), реализована поддержка HDCP 2.2 для чипов Coffee Lake.
    • Продолжена работа по унификации кода драйвера amdkfd (для дискретных GPU, таких как Fiji, Tonga, Polaris) с драйвером amdgpu.
    • Переработан драйвер k10temp, в котором появилась поддержка вывода параметров напряжения и силы тока для CPU AMD Zen, а также расширенных сведений c датчиков температуры, применяемых в CPU Zen и Zen 2.
    • В драйвере nouveau добавлена поддержка режима верифицированной загрузки прошивки для GPU NVIDIA на базе микроархитектуры Turing (GeForce RTX 2000), что позволило включить поддержку 3D-ускорения для данных карт (требуется загрузка официальных прошивок с цифровой подписью NVIDIA). Добавлена поддержка графического движка TU10x. Решены проблемы с HD Audio.
    • Добавлена поддержка сжатия данных при передаче через DisplayPort MST (Multi-Stream Transport).
    • Добавлен новый драйвер "ath11k" для беспроводных чипов Qualcomm с поддержкой 802.11ax. Драйвер основан на стеке mac80211 и поддерживает режимы точки доступа, рабочей станции и узла Mesh-сети.
    • Через sysfs предоставлен доступ к читаемым показаниям датчиков температуры, используемых на современных жёстких дисках и SSD.
    • Внесены существенные изменения в звуковую систему ALSA, нацеленные на избавление кода от проблемы 2038 года (уход от использования 32-разрядного типа time_t в интерфейсах snd_pcm_mmap_status и snd_pcm_mmap_control). Добавлена поддержка новых звуковых кодеков Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308, Ingenic JZ4770.
    • Добавлены драйверы для LCD-панелей Logic PD 28, Jimax8729d MIPI-DSI, igenic JZ4770, Sony acx424AKP, Leadtek LTK500HD1829, Xinpeng XPP055C272, AUO B116XAK01, GiantPlus GPM940B0, BOE NV140FHM-N49, Satoz SAT050AT40H12R2, Sharp LS020B1DD01D.
    • Добавлена поддержка ARM-плат и платформ Gen1 Amazon Echo (OMAP3630-based), Samsung Galaxy S III mini (GT-I8190), Allwinner Emlid Neutis, Libre Computer ALL-H3-IT, PineH64 Model B, Aibretech Amlogic GX PC, Armada SolidRun Clearfog GTR, NXPGateworks GW59xx, Tolino Shine 3 eBook reader, Embedded Artists COM (i.MX7ULP), SolidRun Clearfog CX/ITX и HoneyComb (LX2160A), Google Coral Edge TPU (i.MX8MQ), Rockchip Radxa Dalang Carrier, Radxa Rock Pi N10, VMARC RK3399Pro SOM ST Ericsson HREF520, Inforce 6640, SC7180 IDP, Atmel/Microchip AM9X60 (ARM926 SoC, Kizboxmini), ST stm32mp15, AM3703/AM3715/DM3725, ST Ericsson ab8505, Unisoc SC9863A, Qualcomm SC7180. Добавлена поддержка PCIe-контроллера, применяемого в Raspberry Pi 4.

Одновременно латиноамериканский Фонд свободного ПО сформировал вариант полностью свободного ядра 5.6 - Linux-libre 5.6-gnu, очищенного от элементов прошивок и драйверов, содержащих несвободные компоненты или участки кода, область применения которых ограничена производителем. В новом выпуске отключена загрузка блобов в драйверах для AMD TEE, ATH11K и Mediatek SCP. Обновлён код чистки блобов в драйверах и подсистемах AMD PSP, amdgpu и nouveau.

  1. Главная ссылка к новости
  2. OpenNews: Релиз ядра Linux 5.2
  3. OpenNews: VPN WireGuard принят в ветку net-next и намечен для включения в ядро Linux 5.6
  4. OpenNews: Релиз ядра Linux 5.3
  5. OpenNews: Релиз ядра Linux 5.4
  6. OpenNews: Релиз ядра Linux 5.5
Обсуждение (136 +44) | Тип: Программы | Интересно


29.03 Прекращена разработка TrueOS (бывший PC-BSD) (180 +19)
  На форуме компании iXsystems на вопрос "Продолжается ли разработка TrueOS?" основатель PC-BSD Крис Мур ответил: "В настоящее время основные разработчики TrueOS перестали работать над системой. Сейчас мы загружены работой над TrueNAS Core, но как только у нас появится свободное время, сайт и репозитории (TrueOS) будут отключены".

По словам Мура, последние пару лет TrueOS была в основном хобби-проектом нескольких сотрудников iXsystems. Однако слабая заинтересованность сообщества, а также напряжённая работа над TrueNAS, привели к остановке проекта. Ранее основанный на TrueOS дистрибутив Trident уже перешёл на использование Void Linux. Разработчики GhostBSD не планировали уходить с TrueOS из-за привязки к системному менеджеру OpenRC, но, вероятно, будут вынуждены вернуться на FreeBSD в качестве основы.

  1. Главная ссылка к новости
  2. OpenNews: Дистрибутив Trident переходит с BSD-системы TrueOS на Void Linux
  3. OpenNews: Выпуск ОС Trident 19.06 от проекта TrueOS
  4. OpenNews: Проект TrueOS трансформировался в обособленную ОС
  5. OpenNews: Первый стабильный выпуск проекта TrueOS, заменившего PC-BSD
  6. OpenNews: Проект PC-BSD эволюционировал в TrueOS
Обсуждение (180 +19) | Автор: Михрютка | Тип: К сведению |


29.03 Компания Cloudflare подготовила патчи, кардинально ускоряющие дисковое шифрование в Linux (137 +65)
  Разработчики из компании Cloudflare рассказали о проведении работы по оптимизации производительности дискового шифрования в ядре Linux. В результате были подготовлены патчи для подсистемы dm-crypt и Crypto API, позволившие в синтетическом тесте более чем в два раза поднять пропускную способности при чтении и записи, а также в два раза снизить задержки. При тестировании на реальном оборудовании накладные расходы от шифрования удалось снизить практически до уровня, наблюдаемого при работе с диском без применения шифрования данных.

Cloudflare использует dm-crypt для шифрования данных на накопителях, используемых при кэшировании контента в CDN-сети. Dm-crypt работает на уровне блочного устройства и выполняет шифрование запросов ввода/вывода на запись и расшифровку запросов на чтение, выступая в роли прослойки между блочным устройством и драйвером файловой системы.

Для оценки производительности dm-crypt при помощи пакета Flexible I/O tester было произведено измерение скорости работы с шифрованными и незашифрованными разделами на RAM-диске, размещённом в ОЗУ для исключения флуктуаций производительности дисков и фокусировании на производительность кода. Для незашифрованных разделов производительность чтения и записи держалась на уровне 1126 MB/s, но при включении шифрования скорость снизилась в 7 раз и составила 147 MB/s.

Вначале возникло подозрение в использовании неэффективных алгоритмов в криптосистеме ядра. Но в тестах использовался наиболее быстрый алгоритм aes-xts с 256 ключом шифрования, производительность которого при выполнении "cryptsetup benchmark" более чем в два раза выше, чем полученный при тестировании RAM-диска результат. Эксперименты с флагами dm-crypt для тюнинга производительности не дали результата: при использовании флага "--perf-same_cpu_crypt" производительность даже уменьшилась до 136 MB/s, а при указании флага "--perf-submit_from_crypt_cpus" возросла лишь до 166 MB/s.

Более глубокий разбор логики работы показал, что dm-crypt не так прост как кажется - при поступлении от драйвера ФС запроса на запись, dm-crypt не обрабатывает его сразу, а помещает в очередь "kcryptd", которая разбирается не сразу, а при наступлении удобного момента. Из очереди запрос отправляется в Linux Crypto API для выполнения шифрования. Но так как Crypto API использует асинхронную модель выполнения, шифрование также производится не сразу, а минуя ещё одну очередь. После завершения шифрования dm-crypt может пытаться выполнить сортировку ожидающих запросов на запись, используя дерево поиска red-black. В конце отдельный поток ядра опять с определённой задержкой подхватывает накопившиеся запросы ввода/вывода и отправляет их в стек блочного устройства.

При чтении вначале dm-crypt добавляет в очередь "kcryptd_io" запрос на получение данных с накопителя. Через какое-то время данные становятся доступны и помещаются в очередь "kcryptd" для расшифровки. Kcryptd отправляет запрос в Linux Crypto API, которые расшифровывает информацию в асинхронном режиме. Запросы не всегда проходят по всем очередям, но в худшем сценарии запрос на запись оседает в очередях до 4 раз, а запрос на чтение до 3 раз. Каждое попадание в очередь приводит к возникновению задержек, которые и являются ключевой причиной значительного снижения производительности dm-crypt.

Применение очередей обусловлено необходимостью работы в условиях возникновения прерываний. В 2005 году, когда была реализована текущая модель работы dm-crypt на основе очередей, Crypto API ещё не был асинхронным. После перевода Crypto API на асинхронную модель выполнения стала применяться, по сути, двойная защита. Очереди также вводились для экономии потребления стека ядра, но после его увеличения в 2014 году данные оптимизации потеряли актуальность. Дополнительная очередь "kcryptd_io" была введена для преодоления узкого места, приводящего к ожиданию выделения памяти при поступлении большого числа запросов. В 2015 году дополнительно была введена фаза сортировки, так как запросы шифрования на многопроцессорных системах могли завершаться, не соблюдая порядок отправки (вместо последовательного доступа к диску, осуществлялся доступ в случайном порядке, а также неэффективно работал планировщик CFQ). В настоящее время при использовании SSD-накопителей сортировка потеряла смысл, а планировщик CFQ уже не используется в ядре.

Учитывая то, что современные накопители стали быстрее и умнее, система распределения ресурсов в ядре Linux была пересмотрена, а некоторые подсистемы переработаны, инженеры Cloudflare добавили в dm-crypt новый режим работы, избавленный от использования лишних очередей и асинхронных вызовов. Режим включается отдельным флагом "force_inline" и приводит dm-crypt к форме простого прокси, шифрующего и расшифровывающего поступающие запросы. Взаимодействие с Crypto API было оптимизировано явным выбором алгоритмов шифрования, работающих в синхронном режиме и не использующих очереди запросов. Для синхронной работы с Crypto API был предложен модуль, позволяющий использовать FPU/AES-NI для ускорения и напрямую пробрасывающий запросы шифрования и расшифровки.

В итоге удалось при тестировании RAM-диска более чем в два раза поднять производительность dm-crypt - производительность возросла с 294 MB/s (2 x 147 MB/s) до 640 MB/s, что очень близко к производительности голого шифрования (696 MB/s).

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

  1. Главная ссылка к новости
  2. OpenNews: Выпуск Cryptsetup 2.3 с поддержкой шифрованных разделов BitLocker
  3. OpenNews: Проблема с потерей данных на SSD при использовании ядра Linux 5.1, LVM и dm-crypt
  4. OpenNews: Google представил механизм Adiantum для быстрого шифрования накопителей
  5. OpenNews: Спецслужбы Франции опубликовали защищённый дистрибутив CLIP OS
  6. OpenNews: Значительное обновление файловой системы Bcachefs
Обсуждение (137 +65) | Тип: К сведению |


29.03 Первый выпуск OpenRGB, инструментария для управления устройствами c RGB-подсветкой (46 +34)
  После года разработки опубликован первый выпуск проекта OpenRGB, нацеленного на предоставление универсального открытого инструментария для управления устройствами с цветной подсветкой, позволяющего обойтись без установки официальных проприетарных приложений, завязанных на конкретного производителя и, как правило, поставляемых только для Windows. Код написан на C/C++ и распространяется под лицензией GPLv2. Программа мультиплатформенная и доступна для Linux и Windows.

Пакет поддерживает материнские платы ASUS, Gigabyte, ASRock и MSI с RGB-подсистемой для подсветки корпуса, модули памяти с подсветкой от ASUS, Corsair и HyperX, графические карты ASUS Aura и Gigabyte Aorus, различные контроллеры светодиодных лент (ThermalTake, Corsair, NZXT Hue+), светящиеся кулеры, мыши, клавиатуры, наушники и аксессуары Razer с подсветкой. Информация о протоколе взаимодействия с устройствами в основном получена через проведение обратного инжиниринга проприетарных драйверов и приложений.

Проект вначале развивался под именем OpenAuraSDK и был сфокусирован на реализации протокола ASUS Aura, но затем был расширен на другие категории устройств. Поддержка Aura уже доведена до полноценного вида и охватывает различные поколения RGB-контроллеров Aura, применяемых в разных платформах на базе CPU Intel и AMD, а также совместимые контроллеры, такие как G.Skill Trident Z.

Для взаимодействия с оборудованием в большинстве случаев достаточно использования i2c-dev или управления через USB (предложены udev-правила). Для работы с RGB-контроллерами материнских плат Aura/ASRock требуется применение патча для ядра Linux. Для периферийных устройств Razer используется драйвер OpenRazer (пакет openrazer-dkms-drivers в Debian/Ubuntu).

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

  1. Главная ссылка к новости
  2. OpenNews: Выпуск системы управления цветностью colord 1.0.0
  3. OpenNews: В GIMP появилась поддержка цветовых профилей ICC v4 и продолжается перевод на GEGL
  4. OpenNews: Открытый цветовой стандарт как ответ на монополию Pantone
Обсуждение (46 +34) | Тип: Программы |


28.03 Выпуск легковесного дистрибутива antiX 19.2 (91 +20)
  Состоялся релиз легковесного Live-дистрибутива AntiX 19.2, построенного на пакетной базе Debian и ориентированного для установки на устаревшее оборудование. Выпуск основан на пакетной базе Debian 10 (Buster), но поставляется без системного менеджера systemd и с eudev вместо udev. Пользовательское окружение по умолчанию сформировано при помощи оконного менеджера IceWM, но на выбор также предлагается fluxbox, jwm и herbstluftwm. Для работы с файлами предлагаются Midnight Commander, spacefm и rox-filer. Дистрибутив работоспособен на системах с 256 Мб ОЗУ. Размер iso-образов: 1.1 Гб (полный), 712 Мб (базовый), 324 Мб (урезанный) и 164 Мб (установка по сети).

В новом выпуске подготовлен вариант сборки с системным менеджером runit. В состав полной сборки включён пакет apt-notifier для информирования о появлении обновлений. Для IceWM добавлен интерфейс для управления пиктограммами в системном лотке. В список antix.list добавлен репозиторий nosystemd и включён по умолчанию репозиторий buster-backports. Обновлены версии пакетов, включая ядро Linux 4.9.212, firefox-esr 68.6.0esr, libreoffice 6.4.1, IceWM 1.6.5, fluxbox 1.3.7, mtpaint 3.49, links 2.20.2, eudev 3.2.9, elogind 243.7. Добавлены consolekit2 и сетевой конфигуратор ceni (по умолчанию в полной и базовой сборках оставлен connman).

  1. Главная ссылка к новости
  2. OpenNews: Выпуск дистрибутива MX Linux 19.1
  3. OpenNews: Выпуск легковесного дистрибутива antiX 19.1
  4. OpenNews: Выпуск системы инициализации sysvinit 2.96
Обсуждение (91 +20) | Тип: Программы |


28.03 Выпуск Wine 5.5 (66 +25)
  Состоялся экспериментальный выпуск открытой реализации WinAPI - Wine 5.5. С момента выпуска версии 5.4 было закрыто 32 отчёта об ошибках и внесено 460 изменений.

Наиболее важные изменения:

  • Встроенные программы переведены на использование нового C runtime UCRTBase;
  • В функциях GetVersion, GetVersionEx и VerifyVersionInfo обеспечен вывод версии с учётом запуска с использованием режима совместимости (Compatibility Mode);
  • Улучшена поддержка отладочной информации в PE-файлах;
  • Добавлена поддержка таблиц для сопоставления символов с учётом их лингвистического значения;
  • В WebServices реализована поддержка дополнительных атрибутов;
  • Закрыты отчёты об ошибках, связанные с работой игр и приложений Might and Magic VI, Visual Studio .NET 2002, 2003, Visual Foxpro 9.0, Cisco IP Communicator, Cairo Shell v0.3.x, LTSpice, Death to Spies: Moment of Truth, ERD Concepts 6, Gridcoin Research Client, Beat hazard 2, Solid Edge v15, VSDC Video Editor, XCP-ng Center v8.x, Fable: The Lost Chapters, Audiosurf, Dark Souls 2, Oddworld: Munch's Oddysee, iTunes v12.10.4.2, Wolcen: Lords of Mayhem, How to Survive, Sniper Elite V2, Sniper Elite 3, F1 2012, Assetto Corsa 1.14.x, Project Car, Microsoft Word 6.0.

  1. Главная ссылка к новости
  2. OpenNews: Выпуск Wine 5.4 и Wine Staging 5.4
  3. OpenNews: Wine адаптирован для работы с использованием Wayland
  4. OpenNews: Стабильный релиз Wine 5.0
  5. OpenNews: Компания Valve выпустила Proton 5.0-5, пакет для запуска Windows-игр в Linux
  6. OpenNews: Выпуск DXVK 1.6, реализации Direct3D 9/10/11 поверх API Vulkan
Обсуждение (66 +25) | Тип: Программы |


28.03 Опубликован четвёртый том общедоступной книги "Программирование: введение в профессию" (290 +42)
  Андрей Столяров опубликовал четвёртый том книги «Программирование: введение в профессию» (PDF, 659 стр.), охватывающий части IX–XII. В книге рассматриваются следующие темы:
  • Парадигмы программирования как общее явление; примеры рассматриваются в основном на языке Си. Рассмотрены концептуальные различия между Паскалем и Си.
  • Язык Си++ и поддержанные в нём парадигмы объектно-ориентированного программирования и абстрактных типов данных. В том числе имеется глава, посвящённая графическим пользовательским интерфейсам и их созданию с помощью библиотеки FLTK.
  • Экзотические языки программирования. Рассмотрены Лисп, Scheme, Пролог, а для демонстрации ленивых вычислений привлечён Хоуп (Hope).
  • Демонстрация интерпретации и компиляции как самостоятельных парадигм программирования. Рассмотрены язык Tcl и библиотека Tcl/Tk. Предоставлен обзор концептуальных особенностей интерпретации и компиляции.



Первые три тома:

  • Том 1 (PDF) Азы программирования. Сведения из истории вычислительной техники, обсуждение некоторых областей математики, непосредственно используемых программистами (таких как алгебра логики, комбинаторика, позиционные системы счисления), математических основ программирования (теория вычислимости и теория алгоритмов), принципы построения и функционирования вычислительных систем, начальные сведения о работе с командной строкой ОС Unix. Обучение начальным навыкам составления компьютерных программ на примере Free Pascal под ОС Unix.
  • Том 2 (PDF) Низкоуровневое программирование. Рассмотрено программирование на уровне машинных команд на примере ассемблера NASM, а также язык Си. Также приводится краткое описание систем контроля версий CVS и git.
  • Том 3 (PDF). Системные вызовы для ввода-вывода, управление процессами, механизмы взаимодействия процессов, такие как сигналы и каналы, а также понятие терминала и связанные с ним явления, в том числе сеансы и группы процессов, виртуальные терминалы, управление дисциплиной линии. Компьютерные сети. Вопросы, связанные с разделяемыми данными, критические секции, взаимоисключение; даются базовые сведения о библиотеке pthread.Сведения о внутреннем устройстве операционной системы; в частности, рассматриваются различные модели виртуальной памяти, подсистема ввода-вывода и т.п.

  1. Главная ссылка к новости
  2. OpenNews: Опубликован третий том общедоступной книги "Программирование: введение в профессию"
  3. OpenNews: В свободном доступе опубликована книга по языку программирования R
  4. OpenNews: Второе издание свободной книги "Pro Git"
  5. OpenNews: Общедоступная книга по машинному обучению
  6. OpenNews: Перевод книги про Ричарда Столлмана
Обсуждение (290 +42) | Тип: Практикум | яз. русский


28.03 Collabora развивает надстройку для работы OpenCL и OpenGL поверх DirectX (69 +14)
  Компания Collabora представила новый Gallium-драйвер для Mesa, реализующий прослойку для организации работы API OpenCL 1.2 и OpenGL 3.3 поверх драйверов с поддержкой DirectX 12 (D3D12). Код опубликован под лицензией MIT.

Предложенный драйвер позволяет использовать Mesa на устройствах, изначально не поддерживающих OpenCL и OpenGL, а также в качестве стартовой позиции для портирования OpenGL/OpenCL-приложений для работы поверх D3D12. Для производителей GPU подсистема даёт возможность предоставить поддержку OpenCL и OpenGL, при наличии драйверов только с поддержкой D3D12.

Из ближайших планов отмечается достижение полного прохождения тестов на совместимость OpenCL 1.2 и OpenGL 3.3, проверка совместимости с приложениями и включение наработок в основной состав Mesa. Разработка ведётся совместно с инженерами Microsoft, развивающими открытый инструментарий D3D11On12 для перевода игр с D3D11 на D3D12 и библиотеку D3D12TranslationLayer, реализующую типовые графические примитивы поверх D3D12.

Реализация включает Gallium-драйвер, компилятор OpenCL, OpenCL runtime и компилятор шейдеров NIR-to-DXIL, преобразующий применяемое в Mesa промежуточное представление шейдеров NIR в бинарный формат DXIL (DirectX Intermediate Language), поддерживаемый в DirectX 12 и основанный на биткоде LLVM 3.7 (DirectX Shader Compiler от Microsoft, по сути, расширенный форк LLVM 3.7). Компилятор OpenCL подготовлен на основе наработок проекта LLVM и инструментария SPIRV-LLVM.

Исходные тексты с расширениями OpenCL компилируются при помощи clang в промежуточный псевдокод LLVM (LLVM IR), который затем преобразуется в промежуточное представление OpenCL-ядер в формате SPIR-V. Ядра в представлении SPIR-V передаются в Mesa, транслируются в формат NIR, оптимизируются и передаются в NIR-to-DXIL для генерации вычислительных шейдеров в формате DXIL, пригодном для выполнения на GPU c использованием runtime на базе DirectX 12. Вместо Clover, применяемой в Mesa реализации OpenCL, предложен новый OpenCL runtime, допускающий больше прямых преобразований в API DirectX 12.

OpenCL и OpenGL драйверы подготовлены с использованием предоставляемого в Mesa интерфейса Gallium, позволяющего при создании драйверов не углубляться в специфичные для OpenGL детали и транслировать вызовы OpenGL, в сущности, более близкие к графическим примитивам, которыми оперируют современные GPU. Gallium-драйвер, принимает команды OpenGL и при привлечении транслятора NIR-to-DXIL формирует буферы команд, которые исполняются на GPU, используя драйвер D3D12.

  1. Главная ссылка к новости
  2. OpenNews: Компания Collabora представила окружение для запуска Android-приложений в Linux
  3. OpenNews: Компания Collabora развивает Zink, реализацию OpenGL поверх API Vulkan
  4. OpenNews: Компания Collabora представила графический драйвер kms_swrast
  5. OpenNews: DirectX Shader Compiler портирован для Linux и macOS
  6. OpenNews: Выпуск DXVK 1.6, реализации Direct3D 9/10/11 поверх API Vulkan
Обсуждение (69 +14) | Тип: Программы |


<< Предыдущая страница (позже)
Следующая страница (раньше) >>



Спонсоры:
Слёрм
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2020 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру