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

21 января 2010 года

Представлен отчет о развитии проекта FreeBSD с октября по декабрь 2009 года. Основные достижения:

  • Системы хранения
  • Подготовлен тестовый выпуск системы репликации устройств хранения данных (HAST), которая позволяет использовать FreeBSD для создания высоконадежных конфигураций, в которых данные синхронизированы по всем узлам кластера. HAST реализован в виде GEOM-класса, обеспечивающего синхронную репликацию блочных устройств поверх TCP/IP сетей, независимо от типа накопителя и файловой системы. HAST предусматривает возможность быстрого восстановления после сбоя, причем, при выходе из строя первичного master-узла, его функции могут быть делегированы slave-узлу. После проверки и монтирования UFS раздела или импорта ZFS пула на поврежденном узле, система автоматически синхронизирует внесенные за время восстановления изменения и продолжит работу без потери данных. Разработку планируется довести до финального состояния до 31 января 2010 года.
  • В 9.0-CURRENT принят код с поддержкой NFSv4 ACL для файловых систем UFS и ZFS. Изменения затронули утилиты setfacl(1)/getfacl, libc API и ядро. Из нерешенных проблем остается поддержка NFSv4 ACL в BSD tar. Поддержка NFSv4 ACL ожидается и в FreeBSD 8.1-RELEASE;
  • В конце января планируется добавить в ветку 9.0-CURRENT поддержку механизма журналирования Soft Updates (SU+J) для файловой системы UFS. Данное нововведение позволит отказаться от необходимости запуска fsck после "грязного" размонтирования файловой системы. Новая система журналирования позволяет достичь очень высокой скорости восстановления состояния файловой системы при очень малом объеме журнала.
  • Продолжена работа над улучшением, интегрированной во FreeBSD 8.0-RELEASE CAM-реализации подсистемы ATA, позволяющей использовать для взаимодействия с PATA/SATA устройствами более совершенную систему CAM, ранее задействованную для обеспечения работы SCSI устройств. Новая инфраструктура поддерживает такие возможности, как NCQ (Native Command Queuing), MSI (Message Signaled Interrupts) и мультипликатор портов (Port Multiplier). Управление производится через стандартную утилиту camcontrol. Из открытых задач, остается доработка кода восстановления состояния после ошибок передачи данных и таймаутов; улучшение поддержки горячего подключения устройств (hot-plug); написание драйвера для контроллеров Marvell SATA; создание специфичного для SAS транспорта и драйверов для SAS HBA контроллеров;
  • Сетевая инфраструктура
  • Доведена до рабочего состояния поддержка протокола IPcomp (IP Payload Compression Protocol), введению в промышленную эксплуатацию которой мешал ряд давно наблюдаемых ошибок. Патчи с исправлениями добавлены во все поддерживаемые стабильные ветки FreeBSD, включая 6-STABLE;
  • Ведется работа по синхронизации кода пакетного фильтра PF, интегрированного во FreeBSD, с кодовой базой OpenBSD 4.5. Из новшеств отмечена поддержка divert(4), которая позволит использовать совместно с pf утилиты подобные snort_inline. Осталось обеспечить поддержку виртуального сетевого стека VIMAGE в pflow(4)/pflog(4)/pfsync(4) и провести тестирование на предмет обнаружения регрессивных изменений;
  • Система
  • Продолжается адаптация компилятора clang из проекта LLVM для сборки базовой системы FreeBSD. Разработка ведется в рамках специально выделенной ветки ClangBSD. В будущем планируется использовать в качестве системного компилятора Clang, вместо GCC. В настоящий момент успешно собираются и запускаются ядра FreeBSD для архитектур i386 и amd64, хорошие результаты достигнуты в плане поддержки архитектуры PowerPC. Завершено начальное тестирование сборки системы при помощи LLVM/clang для архитектур ARM и MIPS, начата работа над реализацией поддержки архитектуры sparc64.

При сборке базовой системы основные проблемы связаны со сборкой C++ приложений (до сих пор не удалось собрать все C++ библиотеки, включая libstdc++), тем не менее успешно собираются groff, gperf и devd. Из планов отмечена поддержка сборки для архитектур ARM/MIPS/sparc64, начало тестирования сборки портов и обсуждение процесса интеграции LLVM/clang во FreeBSD;

  • Реализация поддержки технологии FDT (Flattened Device Tree), позволяющей описать аппаратные ресурсы компьютерной системы, с учетом всех связей, платформо-независимым и переносимым способом. Технология FDT прежде всего окажется полезной для встраиваемых систем (ARM, AVR32, MIPS, PowerPC), аппаратные ресурсы которых не поддерживают самоидентификацию и не могут быть определены путем проверок. FDT базируется на реализации дерева устройств в стандарте Open Firmware IEEE 1275 и эталонной спецификации ePAPR. Из нерешенных вопросов отмечается завершение реализации поддержки архитектур PowerPC (драйвер PCI) и ARM;
  • Расширен лимит на максимально возможное число групп для одного процесса (NGROUPS_MAX) c 15 до 1023 в FreeBSD 8.0-RELEASE. Так как в Linux ядре 2.6.x этот лимит выставлен в еще большее значение, в 9.0-CURRENT (в ближайшее время будет перенесено в 8-STABLE) для регулирования значением лимита добавлена sysctl-переменная kern.ngroups;
  • Продолжена работа по интеграции библиотеки iconv, распространяемой под лицензией BSD и основанной на наработках из проекта NetBSD. Удалось добиться неплохой совместимость с GNU iconv, осталось провести работу по оптимизации производительности и доделать код, связанный с транслитирацией. Патчи для публичного тестирования будут представлены в феврале;
  • Прогресс в процессе замены стандартных GNU утилит для обработки текстовых данных на аналоги, распространяемые под лицензией BSD:
  • BSD-варианты утилит bc/dc готовы к коммиту в ветку 9.0-CURRENT, осталось провести небольшое тестирование на предмет наличия нежелательных регрессивных изменений.
  • Работа над BSD grep завершена, но пока не может быть интегрирована, из-за нерешенных проблем в библиотеке для работы с регулярными выражениями. Коммит переработанной версии grep будет совершен как только в библиотеке для обработки регулярных выражений будет проведена оптимизация производительности и реализованы недостающие функции.
  • Утилита BSD sort почти готова, не хватает реализации некоторых вторичных возможностей и требуется оптимизация производительности.
  • Доведена до рабочего состояния реализация POSIX utmpx для FreeBSD, которая заменит собой базу utmp. К сожалению, многие программы работают с utmp напрямую, поэтому предстоит большая работа по выявлению и правке работающих с utmp программ из коллекции портов.
  • Поддержка оборудования
  • Для работы с web-камерами во FreeBSD 8/9 представлен демон webcamd, поддерживающий сотни моделей web-камер. webcamd создан на основе портирования Video4Linux-драйверов, для работы в виде работающего на пользовательском уровне процесса. Среди зависимостей webcamd - libc, pthreads, libusb и модуль ядра VIDEO4BSD;
  • В 9.0-CURRENT и 8-STABLE добавлен обновленный драйвер u3g, в котором расширена поддержка беспроводных 3G модемов с интерфейсом USB;
  • Ведется работа по завершению разработки нового драйвера для беспроводных карт Broadcom - bwn, который заменит собой драйвер bwi. Из возможностей, которые еще не доведены до конца, отмечается поддержка LP/N PHY и режимов MESH/IBSS/HOSTAP.

Причины замены:

  • В bwn используется более новая, четвертая, версия прошивки, вместо уже устаревшей третьей версии, в которой нет поддержки N-PHY и не исправлены некоторые ошибки;
  • Поддержка PIO-режима, что важно из-за того, что не для всего оборудования возможно использование DMA-режима;
  • Поддержка 64-разрядных DMA операций;
  • Старый драйвер bwi разделен на два драйвера: siba и bwn, первый чтобы не дублировать лишнюю функциональность созлан для карт на основе Silicon Sonics Backplane, поддерживающий SIBA аппаратно.
  • В официальном SVN репозитории проекта Asterisk создан модуль для поддержки DAHDI (Zaptel) на платформе FreeBSD. В настоящий момент портированы драйверы: базовый DAHDI-драйвер, драйверы для подавления эхо, dahdi_dynamic и dahdi_dynamic_loc. Портированы и протестированы аппаратные драйверы: wct4xxp (Digium TExxx), wcb4xxp (Digium B410, Junghanns.NET HFC, OpenVox Bxxx, BeroNet BNxxx);
  • Ведется работа по созданию фреймворка для устройств с мультиплексированием с разделением времени (TDM - Time Division Multiplexing). За рассматриваемые в отчете месяцы подготовлен полнофункциональный управляющий TDM драйвер для голосовых карт на базе Marvell Kirkwood и Discovery SoC, доработан voiceband драйвер, доведены до рабочего состояния драйверы кодеков для Si3050 и Si3215, подготовлен комплект демонстрационных приложений, создан начальный прототип драйвера для интеграции с инфраструктурой Zaptel/DAHDI;
  • Обновлена поддержка чернового варианта стандарта 802.11s (четвертой версии), регламентирующего работу Mesh-сетей (Архивная копия от 18 февраля 2018 на Wayback Machine) (каждая клиентская точка сети связана через соседние точки). Нереализованной остается поддержка алгоритмов обеспечения безопасности и согласованного канального доступа, разработчик Rui Paulo (rpaulo@FreeBSD.org) ищет финансирование для завершения работы.
  • Аппаратные архитектуры
  • Продолжена работа по портированию FreeBSD на архитектуру ia64. В частности, в ветки 9.0-CURRENT и 8-STABLE добавлено множество коммитов, связанных с повышением стабильности, организован процесс сборки пакетов. Для тестирования и сборки пакетов задействованы три ia64-сервера, еще одна машина в процессе конфигурации. Планы: решить проблемы с зависанием при попытке одновременного запуска нескольких процессов сборки пакетов, выявить проблемы с работой порта GCC для архитектуры ia64.
  • Поддержка платформы MIPS (ветка base/projects/mips) интегрирована в 9.0-CURRENT, рассматривается возможность в будущем добавление поддержки MIPS в ветку 8-STABLE, после окончательной стабилизации кода. Тестирование проведено как на "big endian" системе Ubiquiti RouterStation, так и на "little endian" gxemul. В разной степени готовности поддержка Atheros AR71xx, SiByte BCM1250 SoC, Octeon SoC (CN3xxx и CN5xxx), RMI XLR SoC;
  • Прогресс в развитии FreeBSD/sparc64, решены проблемы с работой шины PCI на серверах Sun Fire V215/V245. Последние наработки добавлены в 9.0-CURRENT и, если повезет, войдут в состав 7.3-RELEASE;
  • Во FreeBSD 9.0-CURRENT принят код с поддержкой технологии hwpmc (Performance Counter, позволяет задействовать для выявления узких мест, отладки и профилирования специальных "PERFMON" регистров CPU) для архитектуры Intel XScale;
  • В драйвер run добавлена поддержка беспроводных карт с USB интерфейсом Ralink RT2700U/2800U/3000U
  • Приложения и система портов
  • Под FreeBSD портирован (Архивная копия от 7 мая 2017 на Wayback Machine) web-браузер Google Chromium, в качестве основы была использована текущая тестовая версия браузера для платформы Linux. До размещения официального порта chromium-devel остается решить несколько проблем, связанных со случайными зависаниями и некорректной работой JavaScript-движка v8 на архитектуре i386. Приглашаются желающие принять участие в тестировании;
  • Продолжены попытки разбора накопившихся сообщений об ошибках (PR). Группа "Bugbusting Team", в которую в настоящее время входит 4 человека, пытается разобрать накопившиеся сообщения, классифицировать их через привязку тегов и передать требующие внимания PR-ы коммиттерам и мантейнерам портов. Общее число PR в процессе подготовки 8.0-RELEASE превысило отметку в 6200 записей, но затем стабилизировалось на отметке в 6100 незакрытых PR;
  • Компания Nvidia выпустила 64-сборку проприетарных драйверов 195.22 для FreeBSD. В драйвере поддерживаются GeForce 6xxx и более новые GPU. Ранее для FreeBSD была доступна только 32-разрядная сборка драйверов Nvidia, реализации 64-разрядной сборки мешало отсутствие некоторых механизмов работы с памятью в ядре FreeBSD, но в версии FreeBSD 8.0 все пожелания разработчиков Nvidia были учтены. Для пользователей ветки FreeBSD 7.x возможность использования 64-битных драйверов Nvidia появится в версии FreeBSD 7.3.
  • Число портов достигло 21000, из них около 4700 (22%!) не имеют мантейнера. Бинарные пакеты в настоящее время собираются для архитектур amd64-6, amd64-7, amd64-8, i386-6, i386-7, i386-8, i386-9, ia64-8, sparc64-7, sparc64-8, ia64-8. Число связанных с портами PR-ов удалось довести до отметки 950 (было более тысячи). Ведется обсуждение возможности прекращения регулярной сборки пакеджей для FreeBSD 6.X;
  • В эмуляторе Linux (Архивная копия от 14 августа 2020 на Wayback Machine) обеспечена поддержка работы базирующихся на интерфейсе Video4Linux приложений, через трансляцию V4L вызовов в стандартные модули FreeBSD. Разработка протестирована во FreeBSD-8.0/amd64 и FreeBSD-7.2/i386 в таких приложениях, как skype и adobe flash;
  • В дерево портов интегрирована новая версия системы виртуализации VirtualBox 3.1.2. Порт переименован в virtualbox-ose, модули ядра вынесены в порт virtualbox-ose-kmod, а дополнения для акселерации работы гостевого режима в порт virtualbox-ose-additions. Реализована корректная поддержка PulseAudio, устранена зависимость от Procfs, значительно улучшена поддержка сетевой подсистемы.

Источники

править
 
 
Creative Commons
Эта статья содержит материалы из статьи «Отчет о состоянии развития FreeBSD за четвертый квартал 2009 г», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.