Oпубликoвaн oтчёт o рaзвитии прoeктa FreeBSD с июля пo сeнтябрь 2017 гoдa.
Oснoвныe дoстижeния:
- Oбщиe и систeмныe вoпрoсы
- Вoзoбнoвлeнa рaзрaбoткa систeмнoгo мeнeджeрa nosh, включaющeгo нaбoр срeдств для инициaлизaции, зaгрузки, вeдeния лoгoв, упрaвлeния фoнoвыми прoцeссaми и тeрминaлaми. Nosh позиционируется как замена систем BSD init и NetBSD rc.d, вобравшая в себя черты таких систем, как Solaris SMF, daemontools-encore, UCSPI и средств IBM AIX по раздельному управлению системой и сервисами. Предоставляется набор прослоек для использования команд, ставших привычных в других системах, импорта существующих конфигурационных файлов /etc/fstab, /etc/rc.conf, /etc/rc.local и /etc/ttys, а также настроек изолированных окружений Jail и PC-BSD Warden.
Доступны возможности для определения порядка запуска сервисов, организации зависимостей между сервисами, обеспечения параллельного выполнения сервисов, автоматической ротации логов, отслеживания работы сервисов и применения kevent для обеспечения событийно-ориентированного параллелизма. Система переносимая, не зависит от особенностей ядра и может применяться как в BSD-системах, так и в Linux.
С момента прошлого упоминания nosh в отчёте о развитии FreeBSD в 2015 году, проведена реструктуризация пакетов, позволившая сократить число конфликтов с другими инструментариями. Добавлены файл для автодополнения ввода к zsh. Улучшены подсистемы управления виртуальными терминалами, раскладкой клавиатуры, поддержки мыши, ugen и DECSCUSR. Добавлена возможность удалённой передачи логов (RFC 5424/5426). Представлено несколько вспомогательных команд. Добавлено автоматическое определение местоположения Java VM. Улучшены средства активации по обращению к сокету. Улучшена работа одноразовых сервисов. Добавлена поддержка псевдонимов (alias) сервисов. Улучшена работа привязанных к пользователю сервисов D-Bus. Улучшен импорт сервисов MySQL, MariaDB, Percona и OpenVPN, а также импорт конфигурации.
- Размер пожертвований за 2017 год составил 978 тысяч долларов от 859 участников, при поставленной цели в 1250 тысяч долларов.
- В рамках программы грантов завершены или находятся в разработке проекты по обеспечению поддержки OpenZFS RAID-Z, улучшению драйвера bhnd для беспроводных адаптеров Broadcom, обеспечению работы на плате Beaglebone Black в режиме без вывода на экран (headless), расширению возможностей гипервизора bhyve для ARMv7, портированию bhyve/ARM на системы ARMv8;
- Трудоустроенные в организации FreeBSD Foundation инженеры выполнили работу по улучшению ZFS, поддержке новых серверных платформ Intel, обновлению реализации kqueue, поддержке 64-разрядных inode, возможности сборки с защитой стека (Stack guard), поддержке сборки ядра в режиме выявления неопределённого поведения (Undefined Behavior Sanitizer), улучшению системного инструментария, портированию свежего кода графического драйвера i915, поддержке памяти NVDIMM в acpiconf, интеграции ФС FAT в makefs;
- Развивается инфраструктура непрерывной интеграции, в которой налажено регулярное автоматизированное тестирование в Travis CI и Jenkins содержимого Subversion-репозитория проекта. Введён в строй дополнительный тестовый сценарий на базе DTrace;
- Вoзoбнoвлeнa рaзрaбoткa систeмнoгo мeнeджeрa nosh, включaющeгo нaбoр срeдств для инициaлизaции, зaгрузки, вeдeния лoгoв, упрaвлeния фoнoвыми прoцeссaми и тeрминaлaми. Nosh позиционируется как замена систем BSD init и NetBSD rc.d, вобравшая в себя черты таких систем, как Solaris SMF, daemontools-encore, UCSPI и средств IBM AIX по раздельному управлению системой и сервисами. Предоставляется набор прослоек для использования команд, ставших привычных в других системах, импорта существующих конфигурационных файлов /etc/fstab, /etc/rc.conf, /etc/rc.local и /etc/ttys, а также настроек изолированных окружений Jail и PC-BSD Warden.
- Системы хранения и файловые системы
- Ведётся тестирование реализации расширения Parallel NFS (pNFS), которое позволяет организовать высокоскоростной обмен данными между машинами сети за счет возможности распараллеливания обращения к данным на нескольких хранилищах, а также разделения передачи потоков данных и мета-данных. Реализация включает модифицированное ядро и демон nfsd, которые можно использовать в окружениях, начиная с FreeBSD 11. В текущем виде можно запустить один сервер метаданных и несколько серверов хранения, с которыми могут работать любые клиенты NFSv4.1 с поддержкой pNFS File Layout. Сервера хранения могут зералироваться (Flex Files Layout) для обеспечения избыточности (средства оценки сбоев и восстановления зеркал пока отсутствуют);
- Поддержка оборудования
- Значительно улучшена поддержка процессоров AMD на базе микроархитектуры Zen (семейство 17h, CPU Ryzen, Threadripper, Epyc), в том числе в cpufreq добавлены средства для управления частотой и уровнями производительности, в amdtemp добавлена поддержка мониторинга температуры CPU, а в aesni поддержка механизмов ускорения вычисления хэшей SHA. Уровень поддержки Zen во FreeBSD оценен как пригодный для широкого использования на серверах и рабочих станциях. Из нереализованных особенностей остаются только поддержка счётчиков производительности и CCP (Crypto Co-Processor);
- Драйвер ixgbe для 10-гигабитных сетевых адаптеров Intel переведён на использование фреймворка iflib. Ведётся портирование на iflib драйвера ixl (40G чипы);
- Передан для рецензирования код драйвера для адаптеров Intel X722 (iw_ixl) с реализацией поддержки протокола iWARP (Internet Wide-area RDMA Protocol) для обеспечения удалённого прямого доступа к памяти. В дальнейшем планируется представить полную поддержку iWARP для система на чипах Intel C620;
- Приложения и система портов
- Для FreeBSD-CURRENT (amd64) представлен порт graphics/drm-next-kmod, обеспечивающий работу DRM-модулей amdgpu, i915 и radeon, используя фреймворк linuxkpi, обеспечивающий совместимость с DRM API (Direct Rendering Manager) ядра Linux. В настоящее время порт соответствует состоянию подсистемы DRM ядра Linux 4.9. Несмотря на то, что порт экспериментальный, он вполне работоспособен на многих современных GPU, включая серию AMD HD7000 (от Tahiti до Polaris) и Intel HD3000 (от Sandy Bridge до Skylake);
- Дерево портов FreeBSD преодолело рубеж в 31600 портов (на 1600 портов больше, чем в прошлом отчёте), число незакрытых PR держится на отметке в 2671, из которых 718 неразобраны. За отчётный период внесено 5900 изменений от 175 разработчиков. Права коммиттера получили пять новых участников: Zach Leslie (zleslie@), Luca Pizzamiglio (pizzamig@), Craig Leres (leres@), Adriaan de Groot (adridg@), and Dave Cottlehuber (dch@). Четыре участника лишились права коммита в порты из-за длительной неактивности (alonso@), смерти ache@) или по собственному желанию (rpaulo@, kami@).
Удалены два новых USES-набора: execinfo (libexecinfo перенесён в базовую систему), twisted (остался лишь один порт Twisted). Предлагаемая по умолчанию версия GCC поднята с 5 до 6. Обновлены портыс Firefox и Chromium. Паетный менеджер pkg обновлён до выпуска 1.10.1. Улучшена работа флагов USE_GITHUB и SHEBANG_FILES.
- Принято решение исключить из базовой системы утилиты rlogin, rsh, rcp, ruptime и rwho, которые объявлены устаревшими и давно вытеснены инструментарием SSH. Указанные команды не войдёт в состав выпуска FreeBSD 12, но их можно будет отдельно установить из порта net/bsdrcmds;
- Добавлены порты с компонентами платформы OpenJFX, в рамках которого развивается полностью открытый вариант JavaFX для разработки пользовательских и встраиваемых приложений на базе JavaSE. В том числе добавлены порты с графическим интерфейсом для построения сцен. По умолчанию для задействования ускорения GPU включен бэкенд OpenGL Prism;
- Создана команда разработчиков puppet@, которая взяла на себя сопровождение около 30 портов, связанных с системой управления конфигурацией Puppet. В дерево портов добавлен выпуск Puppet 5 (sysutils/puppet5). В качестве замены варианта Facter, написанного на языке Ruby (sysutils/rubygem-facter), предложена версия Facter на C++ (sysutils/facter). Ведётся работа по добавлению в порты Puppetserver 5;
- Началась работа по замене в базовой системе Heimdal Kerberos на MIT Kerberos, которая обеспечивает более полную совместимость с решениями от Microsoft и Red Hat;
- Порт devel/gdb обновлён до GDB 8.0.1. В основную кодовую базу GDB включены подготовленные разработчиками FreeBSD патчи с поддержкой $_siginfo (необходимы для извлечения информации о сигналах из core-файлов) и исправления для поддержи приложений в окружении FreeBSD/aarch64 (патчи для отладки ядра FreeBSD/aarch64 пока доступны через порт). На этапе рецензирования находятся патчи с поддержкой FreeBSD/arm. В ветке FreeBSD 12 проведена работа по обеспечению отладки core-дампов и VFP-регистров через ptrace ().