Опубликован (https://www.freebsd.org/news/status/report-2018-09-2018-12.html) отчёт о развитии проекта FreeBSD с октября по декабрь 2018 года.
Основные достижения:
-
Общие и системные вопросы
- Продолжено развитие инфраструктуры непрерывной интеграции (http://ci.FreeBSD.org), в которой проводится регулярное автоматизированное тестирование изменений и пересборка содержимого Subversion-репозитория проекта в Travis CI и Jenkins. За отчётный период была проведена работа по расширению окружения для выполнения тестов, расширению покрытия тестами кодовой базы и налаживанию сотрудничества по совместному тестированию с внешними проектами. Из планов отмечается добавление в CI сборки drm-портов в окружении ветки CURRENT, реализация автоматических тестов на невиртуализированном оборудовании (bare metal) и добавление тестов для отдельных веток, таких как clang800-import;
- FreeBSD Core Team одобрил план (https://www.opennet.ru/opennews/art.shtml?num=49396) по переводу драйверов для 10 и 100 мегабитных сетевых адаптеров Ethernet в разряд устаревших;
- Размер собранных в прошлом году пожертвований превысил 1.3 млн долларов. Наиболее значительный вклад внесли (https://www.freebsdfoundation.org/donors/) компании Juniper, Netflix и Facebook, а также проект Handshake.org
- Трудоустроенные в организации FreeBSD Foundation инженеры выполнили работу по выявлению и исправлению узких мест в ядре и системных библиотеках, обеспечению сборки системы и портов с использованием утилиты Poudriere (https://www.freebsd.org/doc/en/books/handbook/ports-poudrier...), добавлению встроенного в ядро загрузчика микрокода для CPU Intel, расширению изоляции системных утилит при помощи фреймворка capsicum, улучшению поддержи NUMA, внесению исправлений, связанных с компоновщиком lld (от LLVM) и компонентами инструментария ELF, обновлением OpenSSL до версии 1.1.1 и добавлением защиты Retpoline от атак Spectre;
- В дополнение к недавно добавленной в реализацию виртуальных терминалов поддержке установки цветовых схем (kern.vt.color.X.rgb tunables) пользователям предложена готовая коллекция (https://github.com/mbadolato/iTerm2-Color-Schemes) из примерно 200 цветовых схем для различных терминалов. Для применения схем достаточно скопировать их параметры в /boot/loader.conf или /boot/loader.conf.local;
- Для ядра i386 предложена опция PAE_PAGETABLES, включающая поддержку нового формата таблиц страниц памяти, который ранее был доступен только в режиме PAE. Новый формат необходим для реализации поддержки не исполняемых страниц памяти (бит noexec) и увеличения адресуемой памяти (до 24G). Его применение без PAE позволит сохранить прежними структуры vm_paddr_t и bus_addr_t, т.е. обеспечить неизменными интерфейсы ядра и избежать нарушения совместимости с драйверми. Чтобы не распространять несколько сборок ядра i386 поддержка страниц памяти вынесена в отдельные модули - два модуля pmap, один для PAE и один для поддержки старых двухуровневых таблиц страниц памяти;
-
Безопасность
- Добавлена поддержка механизма ключей защиты памяти Usermode Protection Keys, позволяющего приложениям разбить используемую память на зоны, применив к каждой зоне дополнительные ограничения, например, можно установить права при которых код может быть запущен, но не может быть прочитан. Механизм предоставляется в процессорах Intel Xeon на базе микроархитектуры Skylake;
- В гипервизор bhyve добавлена поддержка (https://github.com/FreeBSD-UPB/freebsd/wiki/Virtual-Machine-...) Live-миграции гостевых окружений с одного хоста на другой. Для управления переносом в bhyvectl добавлена опция "--migrate-live". В
bhyve также реализована функциональность Save/Restore, позволяющая заморозить гостевую систему с сохранением состояния в файл, а затем возобновить выполнение. При сохранении в разные файлы записывается образ памяти, метаданные для восстановления, состояние CPU и устройств. Для заморозки гостевой системы в bhyvectl добавлена команда "--suspend state_file", а для восстановления опция "-r" (используется вместе с "--suspend");
- Внесены улучшения во фреймворк Capsicum (http://www.cl.cam.ac.uk/research/security/capsicum/), предоставляющий (https://www.opennet.ru/opennews/art.shtml?num=40110) механизмы ограничения использования приложениями определённых системных функций. В Casper, фоновый процесс для организации доступа к привилегированным операциям из режима повышенной изоляции, добавлены сервис fileargs для обращения к частям ФС из sandbox-окружения. Использование fileargs позволяет изолировать такие приложения, как brandelf, wc, savecore, head и strings, а также добавить в bhyve поддержку доступа к звуковым устройствам, изолированным при помощи Capsicum. Кроме того, добавлен
Casper-сервис private и реализована sandbox-изоляция процессов rtsold (https://www.freebsd.org/cgi/man.cgi?query=rtsold&sektion=8) и rtsol (https://www.freebsd.org/cgi/man.cgi?query=rtsol&sektion=8) , используемых для отправки сообщений ICMPv6 Router Solicitation;
- Добавлена поддержка устройств TPM 2.0 (Trusted Platform Module) с отдельным чипом и памятью для безопасных вычислений, которые обычно применяются для верифицированной загрузки прошивок и загрузчика ОС. Во FreeBSD TPM также может использоваться для усиления безопасности Strongswan IPsec, SSH и TLS за счёт выполнения криптографических операций на отдельном чипе;
- Для режима верифицированной загрузки UEFI Secure Boot реализована поддержка сертификатов X509. На базе библиотеки BearSSL для загрузчика EFI подготовлен код проверки цифровых подписей. Обеспечено извлечение списка разрешённых и запрещённых сертификатов из переменных окружения UEFI. Предоставленной функциональности достаточно для создания цифровой подписи для ядра с использованием самостоятельно сгенерированного сертификата и верифицированной загрузки ядра;
- Проходит рецензирование кода с реализацией системы контроля целостности исполняемых файлов Veriexec, который скорее всего будет интегрирован с кодом для поддержки UEFI Secure Boot;
- Библиотека
libvdsk (https://github.com/FreeBSD-UPB/freebsd/tree/projects/bhyve_l...) оптимизирована для упрощения добавления поддержки новых форматов дисковых образов. Добавлена поддержка формата QCOW2. Из планов отмечается поддержка Copy-On-Write, средства для работы с несколькими снапшотами и интеграция с bhyve;
-
Сетевая подсистема
- Проведена оптимизация производительности pfsync, системы для синхронизации таблиц отслеживания состояния соединений нескольких пакетных фильтров. Пакетный фильтр pf может обрабатывать одновременно несколько состояний на разных ядрах CPU, но pfsync был привязан к блокировке PFSYNC_LOCK, позволявшей единовременно использовать только одно ядро CPU. Для решения данной проблемы очереди pfsync теперь разбиты на несколько сегментов с разными идентификаторами состояния и собственными независимыми блокировками. Указанное изменение позволяет одновременно обрабатывать несколько состояний на разных ядрах CPU.
Число сегментов настраивается (по умолчанию выбирается в два раза больше, чем число CPU). В зависимости конфигурации прирост производительности составляет от 30% до 100%;
-
Поддержка оборудования
- Продолжается развитие компонентов графического стека. Проведена работа по стабилизации портированных из ядра Linux 4.16 графических драйверов drm-kmod (порт, обеспечивающий работу DRM-модулей amdgpu, i915 и radeon, используя фреймворк linuxkpi для совместимости с DRM API (Direct Rendering Manager) ядра Linux).
Порты с DRM-драйверами переименованы для более явной привязки к веткам (graphics/drm-current-kmod и graphics/drm-fbsd12.0-kmod для CURRENT и релиза 12.0. Добавлен новый порт graphics/drm-kmod, устанавливающий корректный драйвер в зависимости от версии FreeBSD и аппаратной архитектуры.
Старые драйверы, портированные из ядра 4.11 и используемые в выпуске Fre...
URL: https://lists.freebsd.org/pipermail/freebsd-announce/2019-Ma...
Новость: https://www.opennet.ru/opennews/art.shtml?num=50385