Отчет о состоянии развития FreeBSD за четвертый квартал 2010 г

Представлен отчет о развитии проекта FreeBSD с октября по декабрь 2010 года.

Основные достижения:

Система

  • Представлен проект по созданию новой программы установки BSDInstall, выступающей в роли замены ранее доступных sysinstall и pc-sysinstall. BSDInstall отличается модульностью, простотой подключения расширений, поддержкой управляющих установкой скриптов и ускорением выполнения процесса инсталляции. В настоящее время BSDInstall уже почти готов и может использоваться для архитектур i386, amd64, sparc64, powerpc, powerpc64 и PC98.

    В настоящий момент реализовано:

    • Возможность установки на GPT-диски;
    • Поддержка установки, охватывающей несколько дисков;
    • Поддержка установки внутрь jail-окружений;
    • Поддержка упрощенного PXE-режима установки;
    • Дружественность к системам виртуализации, например, можно произвести установку в дисковый образ из работающей системы;
    • Поддержка платформы PowerPC;
    • Значительное ускорение процесса установки системы;
    • Гибкое управление установкой через написание скриптов;
    • Возможность простой реализации мелких настроек;
    • Установочный CD выступает в роли LiveCD.

    Еще не реализовано:

    • Режим настройки параметров беспроводной сети;
    • Поддержка установки на ZFS-разделы.
  • В рамках проекта FSC (FreeBSD Services Control) продолжена работа по подготовке похожих на Solaris SMF и daemontools инструментов для управления и мониторинга работой системных сервисов. Для контроля за работой сервисов используется фоновый процесс fscd, сервисы добавляются при помощи утилиты fscadm. В случае аварийного завершения работы сервиса, fscd распознает падение процесса и запускает сервис вновь. По сравнению со сторонними пакетами, такими как daemontools, система FSC имеет несколько преимуществ, например fscd использует push-нотификацию вместо поллинга (отправляет уведомления, не требуя периодического опроса состояния), fscd является внутренней подсистемой, легко интегрируемой в rc.d-инфраструктуру FreeBSD и полностью поддерживаемой разработчиками (daemontools является неподконтрольным портом для которого можно лишь поддерживать набор патчей). В настоящее время базовый код FSC готовиться для интеграции в дерево исходных текстов FreeBSD. Для упрощения тестирования связанные с FSC утилиты будут добавлены в дерево портов;

Сетевая инфраструктура

  • Подготовлен первый выпуск проекта DIFFUSE (DIstributed Firewall and Flow-shaper Using Statistical Evidence), добавляющего в пакетный фильтр IPFW функции классификации IP-трафика на основании статистических данных. Патчи уже доступны для FreeBSD-CURRENT. Система позволяет для отдельных потоков трафика накапливать и учитывать в IPFW такую статистику, как размер пакетов или время между поступлением пакетов, организуя привязку потоков к определенным классам трафика при помощи техник машинного обучения.

    Подобная классификация может оказаться полезной, когда нет возможность прибегнуть к прямому инспектированию пакетов, напирмер, когда приложение работает через нестандартный для используемого протокола сетевой порт. Другой примечательной особенностью DIFFUSE является возможность организации распределенной системы, в которой накопление статистики и классификация трафика производится на одной машине, а приоритезация или блокирование трафика может производиться на других машинах в сети.

  • Представлен Ethernet Switch Framework - фреймворк для управления встроенными Ethernet-коммутаторами, часто встречающимися в различных встраиваемых платформах. В настоящее время для настройки используются расширенные опции ifconfig, реализована поддержка vlan для каждого порта и возможность управления состоянием интерфейсов. Поддерживаются коммутаторы на базе IP175D (платы mikrotik) и AR8316 (Ubiquiti RSPRO);
  • Близка к завершению работа по интеграции в ядро FreeBSD пяти новых модулей с реализацией различных алгоритмов для контроля перегрузки (Congestion Control) в TCP: HTCP, CUBIC, Vegas, HD и CHD. Готовится к интеграции в ядро FreeBSD фреймворк Khelp, представляющий интерфейс для создания модулей ядра, на лету обеспечивающих выполнение определенных сервисных функций. Также включения в ядро ожидает Khelp-модуль ERTT (Enhanced Round Trip Time), позволяющий более точно измерять параметры TCP потока для использования в алгоритмах управления контроля перегрузки TCP. Разработчики планируют полностью завершить проект в конце января;
  • Проведена большая работа по устранению известных ошибок и увеличению качества работы сетевого стека. Исправления в основном связанны с работой IPv6, портированием патча NAT64 и повышением стабильности виртуального сетевого стека (vimage).
  • Близок к завершению проект по увеличению масштабируемости TCP-стека на SMP-системах. В ближайшие несколько месяцев во FreeBSD 9.x будет интегрирован патч с реализацией ряда новшеств: поддержкой группировки TCP-соединений в привязке к CPU, задействованием некоторых аппаратных механизмов снижения нагрузки и возможностью привязки отдельных соединений к заданному CPU;

Поддержка оборудования

  • Ведется работа по созданию патчей для обеспечения поддержки ARM-платформы OMAP3;
  • Отмечается прогресс создании беспроводного 802.11n-стека. Для Net80211 добавлена поддержка режима 2.4ghz HT/20 (HT/40 и 5ghz пока не реализованы). Для AR9160 реализована базовая поддержка 802.11 TX и RX. Написан, но еще не отлажен, код для поддержки RX A-MPDU и A-MSDU. Обеспечена поддержка технологии WPA2;
  • Обеспечена поддержка работы FreeBSD на игровых приставках Sony PlayStation 3. Код подготовлен для порта FreeBSD/powerpc64 и уже достиг должного уровня стабильности. 5 января все созданные в рамках инициативы патчи были добавлены в ветку FreeBSD 9.0-CURRENT. Работа FreeBSD протестирована на приставке Sony Playstation 3 Fat с прошивкой версии ниже 3.21, установка осуществляется в режиме сетевой загрузки с монтированием файловой системы по NFS. Из видеорежимов поддерживаются только 480i/480p (640 × 480). Несмотря на то, что еще отмечается отсутствие поддержки некоторых аппаратных особенностей приставки, работа FreeBSD на Playstation 3 оценена как стабильная. Порт проходит тестирование собственной пересборкой (self-hosting). Из оборудования поддерживается USB и Ethernet. В ближайших планах реализация поддержки SATA, SPU-блоков (Synergistic Processing Unit) процессора Cell и создание интерактивного загрузчика;
  • Значительны расширены возможности порта FreeBSD для платформы SPARC64. Обеспечена поддержка CPUTYPE, что позволяет организовать корректную оптимизацию кода для поддерживаемых CPU "ultrasparc", "ultrasparc3" и "v9". Добавлена поддержка некоторых специфичных для UltraSPARC-III+ возможностей. Ведется работа по обеспечению поддержки серверов Sun Fire 3800;
  • Для Ethernet-драйверов добавлена поддержка автоматического полного дуплексного контроля за потоком, в соответствии со спецификацией IEEE 802.3 Annex 31B;
  • Улучшена работа демона Webcamd, предназначенного для организации работы с web-камерами. Webcamd, работающий на пользовательском уровне, создан на основе портирования Video4Linux-драйверов. В настоящий момент поддерживается около 1500 различных web-камер, DVB и пультов удаленного управления с интерфейсом USB;

Изолированные окружения, безопасность и ограничения ресурсов

  • Подготовлен FreeBSD-драйвер VirtIO, позволяющий оптимизировать производительность операций ввода/вывода при работе FreeBSD в качестве гостевой системы KVM/Qemu или Virtualbox. Доступна бета-версия драйвера для оптимизации работы сетевых устройств, ведется работа по созданию аналогичного паравиртуального драйвера для блочных устройств;
  • Проведена адаптация FreeBSD для функционирования в качестве гостевой ОС для cloud-окружений Amazon EC2. Поддерживается только запуск в окружениях "t1.micro";
  • Для платформ amd64 и PowerPC реализован режим неисполняемого стека, позволяющих защитить приложения от эксплуатации некоторых уязвимостей, вызываемых переполнением буфера. Соответствующие патчи интегрированы в HEAD, но еще не включены по умолчанию;
  • Близка к завершению разработка проекта по реализации контейнеров ресурсов и возможности установки индивидуальных ограничений ресурсов в привязке к конкретным Jail-окружениям. Разработан общий фреймворк для управления ресурсами, обеспечена поддержка лимитирования различных типов ресурсов, таких как память и загрузка CPU;
  • Подготовке патч, обеспечивающий проверку валидности типов аргументов для различных SYSCTL;

Системы хранения и файловые системы

  • Подготовлена реализация geom_raid - основанная на GEOM замена системе управления программными RAID-массивами ataraid. Проект выполнен при поддержке компании Cisco и отличается модульным дизайном, позволившим разделить систему на базовый модуль, модули для обработки преобразования данных (RAID-уровни) и модули для определения формата хранения мета-данных на диске. В настоящее время работа сосредоточена на обеспечении поддержки RAID0/RAID1 и формата мета-данных Intel: уже можно создавать разделы, читать и записывать данные, но еще не готов код для восстановления и перестроения массива;
  • В GEOM-класс gpart, используемый для управления дисковыми разделами, добавлена поддержка команды для изменения размера раздела - "gpart resize". Другим улучшением является поддержки команды "gpart recover", предназначенной для использования функций по восстановлению мета-данных GPT (Guid Partition Table) из автоматически формируемой резервной копии таблицы разделов. Кроме того, добавлены команды "gpart backup" и "gpart restore" для ручного сохранения и восстановления содержимого GPT;
  • Во FreeBSD-HEAD интегрирована поддержка операций TRIM для файловой системы UFS, что позволит увеличить производительность при работе с SSD-накопителями и повысить их срок службы;
  • Ведется тестирование реализации файловой системы ZFS v28 для FreeBSD 9-CURRENT и 8-STABLE. C особенностями новой версии можно познакомиться здесь.

Приложения и система портов

  • Доведен до актуального состояния порт с web-браузером Chromium 9-beta. Развитием порта теперь занимается Рене Ладан (Rene Ladan), который продвигает патчи в upstream и непосредственно с Google работает над вопросом обеспечения поддержки платформы FreeBSD. Новая версия Chromium пока не включена в официальное дерево портов - включение ожидается через несколько недель;
  • Ведется работа по адаптации FreeBSD для использования в качестве платформы для создания домашнего кинотеатра. В частности, производится портирование медиа-центров Enna и me-tv, улучшение поддержки FreeBSD в медиа-центрах MythTV, VDR, XBMC, обеспечение поддержки пультов дистанционного управления и создание сопутствующей документации;
  • Продолжается работа по интеграции во FreeBSD системы mandoc, выступающей в роли упрощенной альтернативы nroff/groff, нацеленной на отображение man-страниц. Из достоинств mandoc отмечается распространение под лицензией BSD, компактный код, очень быстрая работа и высокая устойчивость к ошибкам форматирования;
  • На финальную стадию разработки перешел проект Port-Sandbox, в рамках которого разработана новая система для автоматизации тестирования сборки портов в изолированном окружении, симулирующем установленную с нуля систему. Код Port-Sandbox написан на языке Python и использует СУБД MySQL, управление производится через web-интерфейс;
  • Выпущен и интегрирован в дерево портов релиз утилиты для управления портами portmaster 3.6.1. За последнее время в portmaster существенно расширены возможности по обработке ошибок и поддержанию целостности системы портов, уменьшено потребление памяти;
  • Добавлены рабочие порты для таких программ, как обучающая платформа Bigbluebutton, основанный на технологиях KDE4 браузер сетевых ресурсов smb4k и VoIP-платформа FreeSWITCH;
  • В разработке находится портирование мета-операционной системы ROS (Robot Operating System). Например, сформированы порты devel/ros-tutorials и devel/ros-nxt, позволяющие использовать FreeBSD с роботами LEGO Mindstorms NXT;
  • Число портов достигло 23000. проведена работа по закрытию накопившихся PR, число незакрытых PR сохраняется на уровне тысячи. Бинарные пакеты в настоящее время собираются для архитектур amd64-6, amd64-7, amd64-8, i386-6, i386-7, i386-8, i386-9, ia64-8, sparc64-7, sparc64-8.
  • В pkg_create, pkg_add и bsdtar добавлена поддержка работы с файлами, сжатыми методом xz. Поддержка xz уже интегрирована в ветки 9-CURRENT и 8-STABLE. Протестировать работу с txz-пакетами можно добавив строку "PKG_SUFX=.txz" в файл /etc/make.conf. В ports-mgmt/portupgrade поддержка пакетов txz добавлена начиная с версии 2.4.8, для ports-mgmt/portmaster уже подготовлен, но еще не принят патч. Патч для newsyslog, позволяющий сжимать архивы логов методом XZ, находится на стадии рецензировния.

Разное

  • Продолжается работа по разбору накопившихся сообщений об ошибках (PR). Группа "Bugbusting Team" пытается разобрать накопившиеся сообщения, классифицировать их через привязку тегов и передать требующие внимания PR-ы коммиттерам и мантейнерам портов;
  • Релизы FreeBSD 7.4 и 8.2, изначально запланированные на 24 января, немного запаздывают, но по заявлению разработчиков выйдут до конца месяца.

©  OpenNet