Отчёт о состоянии развития FreeBSD за первый квартал 2014 года
Представлен отчёт о развитии проекта FreeBSD с января по март 2014 года. Основные достижения:
Система Продолжается работа по внедрению системы непрерывной интеграции Jenkins в процесс разработки FreeBSD. Введены в строй два виртуальных сборочных сервера jenkins-9.FreeBSD.org и jenkins-10.FreeBSD.org, а также сайт jenkins.freebsd.org с отчётами о результатах сборки. В настоящее время обеспечены постоянные пересборки FreeBSD HEAD и некоторых веток STABLE. В случае выявления проблем при сборке уведомления автоматически отправляются в списки рассылки freebsd-current и freebsd-stable, а также напрямую разработчикам, осуществлявшим коммиты с момента последней успешной сборки. Инфраструктура непрерывной интеграции основана на системе, уже опробованной компанией iXsystems при разработке дистрибутива FreeNAS. Интересно, что внедрение новой системы позволило выявить выявить сбой в подсистеме виртуальной памяти, проявлявшийся в виде краха ядра во FreeBSD 9.2 и отдельных крахах Java-процессов во FreeBSD 10 при выполнении Jenkins. В дальнейшем планируется увеличить число веток, конфигураций и портов, проверяемых в системе непрерывной интеграции, а также обеспечить выполнение после сборки тестов kyua. Во FreeBSD HEAD приняты наработки проекта по обеспечению поддержки загрузки FreeBSD на системах с UEFI. Проведена адаптация загрузчика и процесса загрузки ядра FreeBSD для обеспечения совместимости с прошивками UEFI, применяемыми на выпускаемых ноутбуках, ПК и серверах. Поддержку загрузки и установки на системы с UEFI планируется реализовать в выпуске FreeBSD 10.1. Из планов отмечается реализация поддержки UEFI Secure Boot и интеграция настройки UEFI в инсталлятор. В ветки stable/10 и stable/9 интегрирована поддержка подсистемы vt, развиваемой в рамках проекта Newcons и пришедшей на смену syscons. Vt предоставляет новый интерфейс для обеспечения вывода через графические устройства, позволяющий организовать доступ простых драйверов к консоли и терминальному режиму, а также доступ к фреймбуферу для X.Org. При этом от драйвера не требуется встраивание шрифтов, цветовых карт и изображений курсоров мыши, все эти компоненты предоставлены Newcons-драйвером vt. Проект также включает интеграцию с модулями KMS (Kernel Mode Setting), что позволит добиться поддержки современных релизов X.Org и обеспечить корректный возврат к режиму виртуального терминала после смены видеорежима средствами X.Org. Среди возможностей отмечается поддержка мыши, KMS (i915kms и radeonkms), USB-клавиатур, экрана-заставки, vidcontrol, Unicode, xterm-подобная эмуляция терминала, использование различных шрифтов в разных окнах терминала. В настоящий момент vt находится на стадии повсеместного тестирования для архитектур ARM, i386 и amd64 и может быть активирован пересборкой ядра с заменой опций «device sc» и «device vga» на «device vt» и «device vt_vga». После завершение тестирования планируется переход на vt по умолчанию. Улучшена поддержка использование внешнего инструментария Clang, что позволяет по аналогии GCC одновременно применять для сборки ядра и базовой системы разные версии Clang. Развивается инициатива по портированию для более новых выпусков GCC, доступных в портах lang/gcc*, возможностей и исправлений, созданных разработчиками FreeBSD, но по тем или иным причинам не принимаемых в upstream. Например, необходимо портирование дополнения для проверки форматирования кода ядра FreeBSD. В рамках проекта FreeBSD Test Suite продолжается работа по внедрению средств для обеспечения тестирования качества кода в процессе разработки FreeBSD. Роль базового инструмента для организации автоматизированного тестирования выполняет фреймворк kyua (devel/kyua). Сценарии тестирования размещаются в каталоге /usr/tests/. Для разработчиков формируемый тестовый набор позволяет постоянно контролировать качество кодовой базы и оперативно выявлять регрессивные изменения, для пользователей появляется возможность проверки корректности работы внедрённых программных и аппаратных конфигураций. За отчётный период добавлена большая порция новых тестов и портированы старые тесты src/tools/regression/. Число тестов доведено до 509. Синхронизированы тестовые наборы в ветках HEAD и stable/10. В кластер тестирования добавлены системы для выполнения сборки для архитектуры i386. Из планов на будущее отмечается включение сборки тестового набора по умолчанию, улучшение HTML-отчётов и создание системы предупреждения в случае нарушения работы отдельных тестов. Проведена работа по устранению ошибок и наращиванию функциональности отладчика LLDB, развиваемого проектом LLVM. LLDB пока не собирается по умолчанию и требует отдельной сборки с указанием «WITH_LLDB=» в src.conf. По сравнению с прошлым отчётом добавлена поддержка аппаратных точек останова, улучшена поддержка протокола удалённой отладки, в debuggee реализованы очереди libdispatch (GCD), добавлена настройка «step-avoid-libraries», началась работа над консольным GUI. Из планов на будущее отмечается добавление LLDB в порты, реализация совместимого с gdb протокола удалённой отладки, обеспечение поддержки отладки ядра и включение по умолчанию в базовую систему для поддерживаемых архитектур. Изолированные окружения, эмуляторы, безопасность и ограничения ресурсов Для всех архитектур обеспечена поддержка технологии ASLR (Address space layout randomization) для защиты от некоторых видов атак, манипулирующих переполнением буфера. Тем не менее, полноценно ASLR пока поддерживается только для amd64, например, для ARM и sparc64 ещё предстоит устранить несколько ошибок. Из других средств защиты отмечается интеграция в некоторые приложение поддержки технологии PIE (Position-Independent Executables). Началась разработка инфраструктуры для поддержки технологии PCI SR-IOV (PCI Single Root I/O Virtualization), нацеленной на предоставление средств для аппаратной акселерации виртуализации устройств PCIe. При использовании SR-IOV на базе физической функции PCI-устройства (PF, Physical Function) реализуется серия виртуальных PCI-функций (VF) на шине PCI, который выступают в роли независимых устройств PCI, имеющих доступ к ресурсам PF. В контексте систем виртуализации гипервизор, такой как bhyve, может использовать VF для организации проброса PCI-устройства в несколько гостевых окружений для организации совместного доступа без применения дополнительных прослоек. В настоящее время выполнена работа по проектированию универсального API для интеграции поддержки PCI SR-IOV в различные драйверы и ведётся работа по добавлению поддержки PCI SR-IOV в драйвер ixgbe. Продолжается работа по улучшению реализации гипервизора BHyVe, изначально разработанного компанией NetApp и поставляемого в базовом составе FreeBSD 10. Для работы BHyVe требуется система с процессором Intel, поддерживающим аппаратные средства виртуализации VT-x и EPT (Extended Page Tables). Из возможностей можно отметить проброс PCI-устройств, доступ к содержимому виртуальной машины через специальное блочное устройство, возможность назначения нескольких CPU гостевой системе. В качестве гостевых систем могут запускаться системы для которых имеются драйверы VirtIO для паравиртуализации ввода/вывода, в том числе различные версии FreeBSD, свежие сборки OpenBSD и системы GNU/Linux (CentOS, Debian, Ubuntu, openSUSE). Текущая работа сосредоточена на обеспечении поддержки запуска в гостевом режиме 64-разрядных сборок различных операционных систем. В планах поддержка virtio-scsi и Netmap, эмуляция сетевых карт Intel 82580 и e1000, объединение bhyveload и bhyve в один процесс, возможность запуска bhyve без прав root, добавление фильтров для форматов VMDK, VHD и QCOW2, поддержка вывода видео через VNC, поддержка проброса звука и USB, Live-миграция, поддержка создания вложенных окружений, поддержка архитектур ARM, MIPS и PPC. Из реализованных за отчётный период возможностей отмечены: поддержка загрузки гостевых систем FreeBSD/i386 (ранее поддерживалась только архитектура amd64), поддержка SMBIOS, возможность эмуляции устройств HPET, поддержка загрузки с ZFS, задействованы VT-x-расширения новых CPU Intel — VID («Virtual Interrupt Delivery») и PIP («Posted Interrupt Processing»).
В тулките Libvirt 1.2.2, в рамках которого развиваются библиотеки и набор инструментов для унифицированного локального и удаленного управления виртуальными окружениями, обеспечена поддержка гипервизора bhyve. Поддерживается запуск и остановка виртуальных машин, настройка сетевого моста, использование драйверов virtio/SATA. В планах создание порта netcf для FreeBSD. Отмечается успех проекта по добавлению в облачную платформу OpenStack поддержки использования FreeBSD в качестве хост-системы для развёртывания гостевых систем с использованием гипервизора Bhyve и средств виртуализации сети OpenContrail. Уже готов драйвер для поддержки гипервизора bhyve в компоненте OpenStack nova-compute и выполнено портирование для FreeBSD модуля OpenContrail vRouter. Подготовлен рабочий прототип compute-узла OpenStack, работающего на хосте под управлением FreeBSD и позволяющего запускать гостевые системы на базе Bhyve или QEMU и обеспечивать их сетевое взаимодействие. Завершена работа по расширению возможностей демона auditdistd, используемого для организации безопасной и надёжной передачи логов системного аудита поверх TCP/IP сети от локального демона аудита к демону аудита на удалённом сервере, без промежуточного сохранения лога на локальной системе. В auditdistd добавлена проверка сертификатов на стороне клиента (ранее поддерживался только TLS с проверкой сертификатов на стороне сервера) и полноценная поддержка инфраструктуры открытых ключей (PKI, Public Key Infrastructure) с возможностью проверки всей цепочки доверия для сертификата и проверкой по спискам отозванных сертификатов. Кроме того появилась возможность отправки логов сразу на несколько серверов. Сетевая подсистема Во FreeBSD HEAD приняты улучшения и исправления, направленные на увеличение стабильности и производительности нового нативного стека iSCSI, работающего на уровне ядра и содержащего реализации iSCSI Target и iSCSI Initiator. Из улучшений отмечается поддержка перенаправлений, необходимых для обеспечения отказоустойчивости, а также возможность изменения параметров сеанса через утилиту iscsictl без необходимости удаления и создания нового сеанса. В ближайшее время указанные изменений планируется портировать для stable/10 и включить в состав FreeBSD 10.1-RELEASE. Системы хранения и файловые системы Выпущена девятая бета-версия проекта ZFSguru, в рамках которого на базе FreeBSD развивается серверная редакция FreeBSD, в первую очередь ориентированная на создание сетевых хранилищ с использованием файловой системы ZFS. В отличие от FreeNAS, в ZFSguru используется полноценная, не урезанная, базовая система FreeBSD, что даёт возможность опытным пользователям развернуть любые дополнительные сервисы. Для новичков в ZFSguru подготовлен web-интерфейс, который позволяет быстро создавать нужные конфигурации и управлять ZFS-хранилищем, не имея углублённых знаний. Сразу после установки, помимо базовой системы FreeBSD, из коробки становятся доступны web-интерфейс и сервис для доступа к хранилищу пользователей Windows, построенный на базе Samba. Дополнительно могут быть установлены другие расширенные сервисы, такие как экспорт разделов по NFS. В 9 бета-версии web-интерфейса подготовлены удобные средства для наглядной настройки прав доступа к Samba-разделам. Из планов на будущее отмечается создание сервера для разработчиков на основе системы GitLab, выпуск beta10 с увеличением производительности и улучшением совместимости с web-браузерами, выпуск beta11 с реализацией Migration Manager для сохранения и восстановления снапшотов ФС.
Близится к завершению разработка проекта по реализации файловой системы autofs и связанного с ней демона automountd для организации автоматического монтирования ФС при попытке обращения к связанным с ними разделам. Система автомонтирования реализована виде, близком к подобным подсистемам Linux, OS X и Solaris, для обеспечения совместимости на уровне формата файлов маппинга. В настоящее время уже почти завершена работа над automountd, работающим в пространстве пользователя, но пока не готовы компоненты на уровне ядра. Первый рабочий прототип, пригодный для тестирования, планируется выпустить в следующем месяце. Возобновлена работа над портом для поддержки работы FreeBSD в качестве клиента распределенной сетевой файловой системы OpenAFS. Порт net/openafs отмечен как пригодный для начального использования, но ещё не пригоден для применения под высокой нагрузкой; Поддержка оборудования Реализована готовая для повсеместного использования поддержка SMP для многоядерных процессоров ARM. Во FreeBSD HEAD поддержка SMP для ARM включена по умолчанию для всех поддерживаемых систем, поставляемых с многоядерными процессорами ARM, в том числе Allwinner A20, Freescale i.MX6, Marvell Armada XP, Samsung Exynos 5 и Texas Instruments OMAP4. Планируется скорый перенос изменений в ветку stable/10 для включения в выпуск 10.1-RELEASE. Продолжена, но пока не доведена до конца, работа по обновлению KMS-драйвера i915kms для видеокарт Intel, обеспечивающего переключение видеорежимов на уровня ядра. Код драйвера синхронизируется с текущей кодовой базой драйвера для ядра Linux и включает все исправления, внесённые за последние полтора года. С точки зрения функциональности в новом выпуске обновлена поддержка IvyBridge, добавлена поддержка процессоров серии Haswell и ValleyView, запланированы для включения новые возможности, необходимые для использования свежих выпусков X.Org и Mesa; Продолжено развитие драйвера для устройств с интерфейсом SDIO (Secure Digital I/O), позволяющего подключать периферийные устройства через стандартный контроллер для SD-карт. Среди устройств с интерфейсом SDIO на рынке присутствуют адаптеры Bluetooth и WiFi, камеры, устройства чтения отпечатков пальцев, сканеры штрихкодов и т.п. Драйвер выполнен в виде дополнения для существующей шины MMC, расширенной поддержкой специфичных для SDIO возможностей. В настоящее время прототип драйвера подготовлен для модуля Marvell SDIO WLAN/BT (Avastar 88W8787). Поддерживаются операции определения, загрузки прошивки и инициализации устройства, а также большинство методов работы с шиной для передачи данных. Для повышения эффективности работы MMC-стека планируется переход на новую модель блокировок и создание MMC-транспорта для подсистемы CAM. Ведётся работа по созданию порта FreeBSD для устройств Chromebook на базе SoC Samsung Exynos 5 с процессором ARMv7 Cortex-A15. В настоящее время уже обеспечена возможность загрузки и работы FreeBSD c USB-накопителя. Работает вывод на экран и клавиатура, но пока отсутствуют драйверы для SD и SATA. Также планируется портирование FreeBSD для грядущего второго поколения Chromebook. Обеспечена возможность сборки и начального запуска FreeBSD в эмуляторе 64-разрядной архитектуры ARM64 (AARCH64). Для UEFI-окружения AArch64 портирован загрузчик и обеспечена возможность загрузки ядра. Из планов отмечается создание начальной прослойки pmap, написание недостающего привязанного к архитектуре кода и проведение тестирования на реальном оборудовании. В ARM-порт FreeBSD добавлена возможность использования варианта ARM EABI ABI (armv6hf), использующего блок VPF для выполнения операций с плавающей запятой. Для пользователей, запускающих код с операциями с плавающей запятой на ARMv6 или ARMv7 SoC с поддержкой VPF, улучшение проявится заметным повышением производительности за счёт ухода от программной эмуляции вычислений. Приложения и система портов Дерево портов FreeBSD преодолело отметку в 25000 портов, число незакрытых PR снижено до уровня 1800. Введено в строй поддерживаемое компанией Yandex зеркало репозитория бинарных пакетов pkg.freebsd.org. Произведено ежеквартальное ответвление дерева портов 2014Q1 для поддержания стабильной и высококачественной ветки портов, в которую будут приниматься только патчи с устранением уязвимостей, а также отдельные бэкпорты важных исправлений из ветки HEAD. В пользу pkg инструментарий pkg_tools объявлен устаревшим. Участники FreeBSD Core Team утвердили создание команды Ports Security Team, которая будет отвечать за выпуск обновлений с устранением уязвимостей в приложениях, поддерживаемых в дереве портов. Ведётся работа по добавлению в основной процесс формирования релизов поддержки создания сборок для встраиваемых платформ, таких как Raspberry Pi, BeagleBone и WandBoard. Предлагаемый в портах базовый компилятор GCC (lang/gcc), обновлён с GCC 4.6.4 до GCC 4.7.3. В планах обновление lang/gcc до ветки GCC 4.8. Для FreeBSD подготовлен порт десктоп-окружения Cinnamon 2.0, который планируется интегрировать в дерево портов после добавления GNOME 3. Также ведётся работа по портированию MATE 1.8 для FreeBSD. В скором времени базовый порт с GNOME 2 будет заменён на GNOME 3.12 (пользователям, отдающим предпочтение GNOME 2, рекомендуется перейти на использования порта x11/mate). Проведена адаптация новых версий десктоп-оболочки KDE и фреймворка Qt для FreeBSD. В порты помещены релизы KDE SC 4.12.2, 4.12.3 и 4.12.4, Qt 5.2.1, KDevelop 4.6.0 и Digikam 3.5.0. По данным сервиса PortScout доступно 526 связанных с KDE порта, из которых 98.86% (в прошлом отчёте было 88.15%) портов содержат свежие версии приложений. Порты KDE3 объявлены устаревшими. Из планов отмечается исключение HAL из числа зависимостей, поддержка KDE 4.13 и Qt 5, проверка корректности сборки компонентов KDE с использованием Clang и libc++; Обновлены компоненты графического стека. KMS-модуль Radeon признан стабильным, включён в ветку stable/9 и будет доступен во FreeBSD 9.3-RELEASE. Следующим значительным шагом, запланированным на апрель, станет обновление кода DRM и драйвера i915. В портах обновлена версии библиотеки Cairo 1.12, которая необходима для сборки Pango 1.36.0, GTK+ 3.10 и Firefox 27.0. Ведётся работа над добавлением в порты нового выпуска Mesa с поддержкой архитектуры акселерации GLAMOR. Для установки новых версий компонентов графического стека готовится альтернативный репозиторий pkg с пакетами, собранными с опцией WITH_NEW_XORG. В дальнейшем, приблизительно в начале 2015 года, поддержка WITH_NEW_XORG будет прекращена и новый стек заменит собой старый. Ведётcя работа по переходу на CentOS 6.5 в качестве базовой системы для эмулятора Linux. В настоящее время в качестве базовой системы используется устаревший Fedora 10, который не позволяет использовать Skype 4, Sublime Text 2 и различные современные игры, для которых недостаёт необходимых библиотек. В настоящее время связанные с эмулятором порты уже адаптированы для использования CentOS 6.5. Замена может быть произведена после проведения всестороннего тестирования. Порт с Wine, открытой реализации Win32 API, обновлён до выпуска 1.6.2 (emulators/i386-wine), также доступен порт с экспериментальным выпуском 1.7.15 (emulators/i386-wine-devel). Обновлены порты, связанные с десктоп-окружением Xfce, в том числе добавлены новые версии приложений Midori 0.5.7, xfburn 0.5.0, xfce4-parole 0.5.4, xfce4-taskmanager 1.0.1, xfce4-tumbler 0.1.30, а также плагины xfce4-clipman-plugin 1.2.5, xfce4-equake-plugin 1.3.4, xfce4-wavelan-plugin 0.5.11, xfce4-whiskermenu-plugin 1.3.2. В начале мая начнётся подготовка релиза FreeBSD 9.3, финальный выпуск намечен на 16 июля.
Полный текст статьи читайте на OpenNet