Опубликован (https://www.freebsd.org/news/status/report-2016-04-2016-06.html) отчёт о развитии проекта FreeBSD с апреля по июнь 2016 года. Основные достижения во втором квартале:
-
Система
- Стартовал проект по проведению рефакторинга загрузчика для систем с UEFI, проведённого с целью более плотного использования EFI API. Вместо отдельного кода работы с ФС в загрузчике boot1 теперь задействована общая реализация, единая с loader, которая основана на модели драйверов EFI и позволяет легко экспортировать поддержку любых ФС FreeBSD в форме отдельных драйверов EFI. Загрузчики boot1 и loader также переработаны для применения интерфейса EFI_SIMPLE_FILE_SYSTEM. Отдельного упоминания заслуживает добавление модуля geli_efi (https://github.com/emc2/freebsd/tree/geli_efi) с возможностью работы с шифрованными дисковыми разделами, зашифрованными при помощи GELI;
- В libthr реализована поддержка надёжных мьютексов, дающих приложению возможность выявления и теоретически восстановления от краха в процессе изменения состояния совместного мьютекса. Новая модель мьютексов основана на использовании вызова pthread_mutex, обеспечивает надёжное определение факта краха потока, занимающей мьютекс, и позволяет корректно продолжить работу оставшимся потокам. Из приложений в которых применяются надёжные мьютексы отмечается Samba. В сочетании с ранее добавленными разделяемыми между процессами блокировками (PTHREAD_PROCESS_SHARED) надёжные мьютексы позволили привести libthr к совместимости со всеми значительными возможностями POSIX. Наработки включены в состав ветки FreeBSD 11.
- Продолжается работа по обеспечению использования (https://wiki.freebsd.org/LLD) компоновщика lld, развиваемого проектом LLVM, для динамического связывания объектных файлов FreeBSD. Уже налажен процесс сборки базовой системы FreeBSD/amd64 с применением lld вместо GNU BFD ld, т.е. lld уже может использоваться при сборке пользовательского окружения FreeBSD. Lld пока не может использоваться для ядра FreeBSD из-за ограничений в вычислении выражений в скриптах компоновки и отсутствия поддержки некоторых опций;
-
Изолированные окружения, эмуляторы, безопасность и ограничения ресурсов
- Продолжена разработка реализации (https://kib.kiev.ua/kib/aslr) механизма защиты ASLR (Address Space Layout Randomization) для FreeBSD, который производит рандомизацию отображения в память (memory mapping) любых нефиксированных структур. В последнее время в рамках проекта подготовлена утилита proccontrol, предназначенная для управления, оценки состояния и отслеживания применения ASLR в привязке к отдельным процессам. В частности, утилита может использоваться для анализа проблем, возникающих в приложениях после включения ASLR. Применение proccontrol позволило выявить ряд портов, неработоспособных при включении ASLR (например, Lisp и Emacs), для подобных портов предложено добавить директиву ASLR_UNSAFE=yes, при установке которой ASLR при сборке порта отключается через вызов "proccontrol -m aslr -s disable". В заголовок ELF-файла также предложено включить флаг, сигнализирующий о несовместимости исполняемого файла с ALSR;
- Развивается проект (https://wiki.freebsd.org/ReproducibleBuilds) по обеспечению повторяемых сборок FreeBSD, при которых сборка одних и тех же исходных текстов приводит к генерации тождественных бинарных файлов, совпадающих побитово, что позволяет любому желающему убедиться в том, что сборка ISO-образа произведена из заявленных исходных текстов. Координация работы по обеспечению повторяемых сборок ведётся на сайте reproducible-builds.org (https://reproducible-builds.org/). За отчётный период в базовую систему (https://wiki.freebsd.org/ReproducibleBuilds) и порты (https://wiki.freebsd.org/PortsReproducibleBuilds) внесена большая порция исправлений. Число портов, для которых поддерживаются повторяемые сборки доведен до 80%. Для анализа различий бинарных файлов предложен инструментарий Diffoscope (https://diffoscope.org/). Из задач на будущее отмечается интеграция сборки портов FreeBSD в инфраструктуру непрерывной интеграции reproducible-builds.org, включение подготовленных патчей в дерево портов и продолжение работы по приведению портов в вид, пригодный для повторяемых сборок;
- Продолжается развитие набора FreeBSD Integration Services (BIS), предоставляющего средства для работы в гостевых системах под управлением гипервизора Hyper-V и облачной платформы Azure. Компания Microsoft опубликовала (https://www.opennet.ru/opennews/art.shtml?num=44570) в официальном хранилище образов виртуальных машин Azure Marketplace собственную сборку FreeBSD 10.3. Выполнена работа по увеличению производительности, стабильности и функциональности драйверов для синтетических сетевых адаптеров и устройств хранения HyperV.
-
Системы хранения и файловые системы
- Продолжается разработка порта (https://github.com/wjwithagen/ceph) распределённого хранилища Ceph (https://www.opennet.ru/opennews/art.shtml?num=44303) для FreeBSD. Порт пока охватывает только объектное хранилище RADOS (Object Storage) и инструментарий. Блочное устройство RBD (Ceph Block Device) и файловая система CephFS пока не портированы. Итоговой целью проекта является предоставление возможности развёртывания кластера Ceph с узлами хранения на базе FreeBSD и ZFS, а также поддержка запуска виртуальных машин bhyve на виртуальных дисках, развёрнутых поверх блочного устройства Ceph RBD. За отчётный период порт переведён с Automake на систему сборки CMake, переработан код, связанный с блокировками, обеспечено полное прохождение тестового набора (за исключением тестов, связанных с ещё не реализованными RBD, BlueStore и CephFS);
-
Сетевая подсистема
- Обновлён фреймворк виртуализации VIMAGE, базирующийся на технологиях FreeBSD Jail и подсистеме виртуализации сетевого стека VNET (https://svnweb.freebsd.org/base/projects/vnet/). Проведена работа по устранению проблем, крахов и утечек памяти в процессе применения VIMAGE в рабочих конфигурациях с большой нагрузкой. Кроме того, поддержка VNET добавлена и для невиртуализированных компонентов, таких как pf и ipfilter, а также для виртуальных сетевых интерфейсов;
-
Поддержка оборудования
- Расширена поддержка одноплатных компьютеров на базе ARM-процессоров Allwinner. Добавлена поддержка OHCI.,Для SoC H3, A83T и A64 реализована поддержка контроллера Gigabit Ethernet. Представлена отдельная конфигурация сборки ядра ALLWINNER. Добавлена поддержка SoC A83T, H3 и A13.
- Отмечается прогресс в реализации поддержки 64-разрядной архитектуры ARM64 (https://wiki.freebsd.org/arm64) (AARCH64). Добавлена начальная поддержка платформы ARM Juno и продемонстрирована успешная загрузка на 4-ядерных CPU Cortex-A53. Ведётся портирование для плат Pine64 и Raspberry Pi 3. Обеспечена поддержка 4 уровней pagetable в коде pmap, что позволило увеличить виртуальное адресное пространство до 256TB и реализовать возможность работы на системах с 2 Тб физической памяти. Фреймворк управления прерываниями заменён на intrng, что позволяет использовать общие драйверы для контроллеров прерываний для систем arm и arm64;
-
Приложения и система портов
- Дерево портов FreeBSD выросло до 26100 портов (в прошлом отчёте отмечалось 25 тысяч), число незакрытых PR держится на отметке в 2000. За отчётный период закрыто около 1760 PR и внесено приблизительно 7 тысяч изменений. Проведена работа по модернизации инфраструктуры портов, большие целевые файлы bsd.port.mk разбиты на отдельные скрипты, в фазу оценки качества сборки в утилите Poudriere добавлена проверка отсутствующих зависимостей, внесены улучшения для реализации повторяемых сборок, продолжена работа над инфраструктурой для автоматизации сборки пакетов и сборки с дополнительными компонентами для повышения защищённости. Из наиболее значительных обновлений портов отмечаются Firefox 47.0.1, Firefox ESR...
URL: https://www.freebsd.org/news/status/report-2016-04-2016-06.html
Новость: http://www.opennet.ru/opennews/art.shtml?num=44876