Отчёт о состоянии развития FreeBSD за третий квартал 2015 года
Представлен отчёт о развитии проекта FreeBSD с июля по сентябрь 2015 года.
Основные достижения:
- Система
- Представлен системный менеджер nosh, включающий набор средств для инициализации, загрузки, ведения логов, управления фоновыми процессами и терминалами. 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.
Система переносимая, не зависит от особенностей ядра и может применяться как в BSD-системах, так и в Linux. Доступны возможности для определения порядка запуска сервисов, организации зависимостей между сервисами и обеспечения параллельного выполнения сервисов. Nosh уже очень близок к готовности работы вместо системы rc.d - из 157 отмеченных в плане задач остаётся выполнить 39. Например, пока не обеспечена конвертация скриптов /etc/rc.d/gptboot, /etc/rc.d/growfs, /etc/rc.d/routing, /etc/rc.d/bluetoot и /etc/rc.d/kldxref;
- Поставляемые в базовой системе компилятор Clang, компоненты LLVM, compiler-rt, libc++ и отладчик LLDB обновлены до выпуска 3.7;
- Во FreeBSD HEAD приняты изменения ядра, необходимые для реализации runtime-окружения CloudABI, базирующегося на применении механизма управления доступом Capsicum и предоставляющего средства для разработки приложений, более защищённых от типовых уязвимостей и переносимых между разными системами. Для работы CloudABI требуется загрузка модуля ядра cloudabi64, после чего можно запускать программы, собранные с runtime CloudABI, из shell или при помощи специальной утилиты cloudabi-run (sysutils/cloudabi-utils), позволяющей определить к каким сокетам, файлам и директориям будет иметь доступ запускаемая программа. Для пользователей развивается отдельная коллекция портов, в которую включены варианты типовых утилит и библиотек, кросс-компилируемых для CloudABI;
- В системе динамической отладки DTrace реализованы контрольные проверки, трансляторы и скрипты сопровождения для отладки TCP-стека, реализующие функциональность TCPDEBUG;
- Синхронизация данных между многими серверами кластера, обслуживающего инфраструктуру FreeBSD, переведена с rsync на распределённую P2P-систему Syncthing. Реализованы дополнительные компоненты инфраструктуры для верификации кода и данных по цифровым подписям. Готовится к официальному анонсу новая система загрузки download.FreeBSD.org с автоматическим выбором ближайшего зеркала;
- Улучшена совместимость с различными реализациями UEFI. Расширены возможности EFI-драйвера фреймбуфера efifb, улучшена совместимость с Apple MacBook Pro;
- Стартовал проекта по аудиту организации блокировок во FreeBSD и переводу подсистем на применение атомарных операций, не требующих установки блокировок (lockless).
- Представлен системный менеджер nosh, включающий набор средств для инициализации, загрузки, ведения логов, управления фоновыми процессами и терминалами. 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.
- Изолированные окружения, эмуляторы, безопасность и ограничения ресурсов
- Продолжается усовершенствование гипервизора BHyVe, изначально разработанного компанией NetApp и поставляемого в базовом составе FreeBSD 10. Работа сосредоточена на обеспечении поддержки новых типов гостевых систем и доведении функциональности до других популярных гипервизоров. В настоящее время поддерживается создание хост-систем на базе платформы FreeBSD/AMD64 и запуск гостевых систем c FreeBSD 8+, Linux i386/x64, OpenBSD i386/amd64, NetBSD/amd64, Illumos и Windows Vista/7/8/10/2008r2/2012r2/2016 x64. Из последних достижений отмечается возможность загрузки внешних прошивок, в том числе прошивок Intel edk2 UEFI, что позволяет запускать в гостевых системах Windows без вывода на экран (режим headless) и Illumos;
Для управления запуском гостевых систем развивается инструментарий bhyveucl. На ближайшее будущее запланирована поддержка virtio-scsi, создание сетевых бэкендов wanproxy и vhost-net, возможность работы без прав root, создание фильтров для популярных форматов виртуальных машин (VMDK, VHD, QCOW2), абстрактный слой для видео (не зависящий от X11 и SDL), поддержка спящего режима, live-миграция, вложенная виртуализация (гостевая система в гостевой системе), поддержка архитектур ARM, MIPS и PPC;
- Усовершенствована работа FreeBSD в качестве хост-системы (dom0) для запуска гостевых окружений с использованием гипервизора Xen. За отчётный период была проведена работа по реализации возможности загрузки ARM-систем FreeBSD/arm64 в форме гостевых окружений Xen. Продолжена работа по реализации режима PVH, который комбинирует элементы режимов паравиртуализации (PV) и полной виртуализации (HVM). Подготовленные в рамках реализации PVH патчи скорее всего войдут в состав выпуска Xen 4.7. После реализации PVH работа будет сосредоточена на обеспечении полной функциональности для запуска обычных паравиртуализирорваных окружений (PV).
- Продолжается усовершенствование гипервизора BHyVe, изначально разработанного компанией NetApp и поставляемого в базовом составе FreeBSD 10. Работа сосредоточена на обеспечении поддержки новых типов гостевых систем и доведении функциональности до других популярных гипервизоров. В настоящее время поддерживается создание хост-систем на базе платформы FreeBSD/AMD64 и запуск гостевых систем c FreeBSD 8+, Linux i386/x64, OpenBSD i386/amd64, NetBSD/amd64, Illumos и Windows Vista/7/8/10/2008r2/2012r2/2016 x64. Из последних достижений отмечается возможность загрузки внешних прошивок, в том числе прошивок Intel edk2 UEFI, что позволяет запускать в гостевых системах Windows без вывода на экран (режим headless) и Illumos;
- Сетевая подсистема
- Подготовлен скрипт automtud для определения размера MTU удалённой машины и корректировки таблицы маршрутизации, позволяя FreeBSD отправлять jumbo-кадры для поддерживающих их хостов, продолжая использовать кадры нормального размера для остальных систем.
- Доступен новый выпуск патчей с реализацией расширения Multipath TCP (MPTCP), позволяющего организовать доставку пакетов одновременно по нескольким маршрутам через разные сетевые интерфейсы, привязанные к разным IP-адресам. Целью проекта является подготовка MPTCP-патчей для ядра FreeBSD, совместимых с эталонной реализацией MPTCP и дополнительными улучшениями.
- В ядре GENERIC по умолчанию активирована поддержка стека IPsec. Реализация IPsec расширена поддержкой аппаратных и программных режимов AES;
- Стартовал проект по тестированию работы многоуровневых очередей (multiqueue) при различных режимах работы сетевого стека;
- Системы хранения и файловые системы
- Во FreeBSD HEAD и stable/10 принят обновлённый код файловой системы ZFS, синхронизированный с реализацией ZFS от проекта Illumos. Добавлена поддержка сжатия LZ4, на 50% сокращено потребление памяти при использовании L2ARC, улучшено агрегирование ввода/вывода, переработан код упреждающей загрузки данных. В UEFI-загрузчики boot1.efi и loader.efi добавлена поддержка загрузки и чтения данных с ZFS;
- В ветку FreeBSD 11-CURRENT добавлена поддержка функции смены корневой ФС на лету. Ранее для перемонтирования корневого раздела требовалась перезагрузка. Смена корневой ФС необходима для работы на ранней стадии загрузки временных образов ram-дисков, осуществляющих инициализацию сеанса iSCSI, с последующим подключением корневой ФС поверх iSCSI;
- В подсистему CAM Target Layer (CTL), обеспечивающую эмуляцию дисковых и процессорных устройств, через которую реализован сервер iSCSI, добавлена поддержка кластерных средств для обеспечения высокой доступности. Поддерживается создание двухузловых кластеров с асинхронными режимами доступ к юнитам LUN (ALUA, Asynchronous LUN Unit Access): Active/Unavailable, Active/Standby, синхронным Active/Active и прокси Active/Active. Кроме средств высокой доступности в CAM Target Layer добавлена поддержка эмуляции CD/DVD и извлекаемых накопителей, а также возможность переконфигурации LUN. Код уже принят в ветки FreeBSD HEAD и stable/10;
- Представлен инструментарий sesutil для управления устройствами, поддерживающими протокол SES (SCSI Enclosure Services);
- Поддержка оборудования
- Во FreeBSD HEAD приняты патчи с поддержкой нетбука Acer C720 Chromebook. Поддерживаются все компоненты устройства, включая сенсор освещённости, трекпад, управление подсветкой экрана, HDMI, SD-слот, камеру и беспроводной адаптер Atheros. За отчётный период улучшены драйверы клавиатуры и smbus, добавлены драйверы "ig4" для шины I2C, "cyapa" для трекпада и "isl" для датчика освещённости;
- Добавлена поддержка горячего подключения устройств PCI Express (PCIe). Например, на ноутбуках появилась возможность подключения и изъятия Ethernet- и eSATA-карт с интерфейсами ExpressCard или Thunderbolt без остановки работы системы.
- Добавлен драйвер для 10/40-гигабитных Ethernet-адаптеров LiquidIO;
- Добавлен драйвер ioat для устройств поддерживающих технологию Intel I/O Acceleration Technology, которые применяются в некоторых серверных системах Intel;
- Продолжена работа по реализации поддержки 64-разрядной архитектуры ARM64 (AARCH64) и, в частности, эталонной платы Cavium ThunderX. Усовершенствована поддержка режима SMP, что позволило загрузить FreeBSD на всех 48 ядрах платформы Cavium ThunderX, задействовать контроллер прерываний ARM GICv3 и обеспечить маппинг памяти между ядрами CPU;
- Представлен начальный порт FreeBSD для ARMv8-платы HiKey, разработанной в рамках инициативы Linaro 96boards.
- Началось портирование FreeBSD для процессоров на базе архитектуры RISC-V. В настоящее время FreeBSD уже загружается в однопользовательском режиме в симуляторе RISC-V.
- Улучшена поддержка ARM-плат на чипах Allwinner A10 и A20, таких как Cubieboard/Cubieboard 2 и Banana Pi. Добавлена поддержка сетевого интерфейса dwc, SD-карт и SATA-контроллеров;
- Приложения и система портов
- Состоялся релиз пакетного менеджера pkg 1.6, в котором значительно улучшена работа системы разрешения зависимостей, улучшена поддержка частичных обновлений, добавлены правила автодополнения опций для zsh, улучшена поддержка платформы Linux, добавлена возможность вывода контекстно зависимых сообщений, при поиске через pkg search включен вывод комментариев для совпавших пакетов;
- Обновлён графический стек. В портах libglapi, libGL, libEGL, libglesv2, gbm и dri задействован новый выпуск Mesa 10.6.8. Переработана организация поставки портов с Mesa - для всех поддерживаемых версий FreeBSD теперь предлагается только одна версия Mesa. Xorg-server пока используется 1.14, но уже готов для обновления порт с 1.17. Добавлены порты с двумя реализациями OpenCL: lang/clover для GPU AMD Radeon и lang/beignet для GPU Intel (пока поддерживается только Ivy bridge). Обновлён KMS-драйвер i915;
- Окружение GNOME в портах обновлено до выпуска 3.16, а окружение MATE до выпуска 1.10. Подготовлен порт для GNOME 3.18, но он пока не включен в основное дерево портов;
- Проведена адаптация новых версий десктоп-оболочки KDE и фреймворка Qt для FreeBSD. В порты помещены релизы CMake 3.3.1, Qt 4.8.7, QtCreator 3.5.0. В экспериментальном репозитории доступны порты Qt 5.5.0 (area51/qt-5.5), KDE Frameworks 5.14.0, KDE Plasma Desktop 5.4.2 и KDE Applications 15.08.1 (area51/plasma5);
- Обновлены порты, связанные с десктоп-окружением Xfce: x11-wm/xfce4-desktop 4.12.3, www/midori 0.5.11, science/xfce4-equake-plugin 1.3.8, sysutils/xfce4-power-manager 1.5.2, x11/libexo 0.10.7, x11/xfce4-embed-plugin 1.6.0, x11/xfce4-verve-plugin 1.1.0, x11/xfce4-whiskermenu-plugin 1.5.1;
- Началась работа над библиотекой libmtree с унифицированной реализацией формата mtree для использования в программах mtree, bsdtar, install и makefs, которые сейчас включают собственные реализации mtree;
- Дерево портов FreeBSD держится на уровне 25 тысяч портов, число незакрытых PR достигло отметки в 2000. За отчётный период закрыто около 1500 PR и внесено приблизительно 7 тысяч изменений.
- Подготовлен порт с платформой GitLab, предоставляющей средства для организации совместной работы с Git-репозиториями;
- Развивается проект для предоставления возможности установки через систему портов модулей к Node.js. В настоящее время в порты включено около 100 модулей Node.js, включая CoffeeScript, node-gyp и Request;
- Доступна сборка дистрибутива ZFSguru 0.3, ориентированного на создание сетевых хранилищ с использованием файловой системы ZFS.
Полный текст статьи читайте на OpenNet