Отчёт о состоянии развития FreeBSD за второй квартал 2013 года

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

Изолированные окружения, эмуляторы, безопасность и ограничения ресурсов Представлены результаты работы по улучшению средств для организации изолированного выполнения приложений и ограничения использования приложениями определённых функций при помощи фреймворка Capsicum. Capsicum расширяет POSIX API и предоставляет несколько новых системных примитивов, нацеленных на поддержку модели безопасности через управление возможностями объектов («object-capability») для Unix-систем. Capsicum нацелен на дополнение традиционного централизованного мандатного контроля доступа средствами для защиты отдельных приложений и активируется на стороне самого приложения. Используя Capsicum приложение можно запустить в режиме повышенной изоляции (sandbox), при котором программа сможет выполнять только ранее специфицированные штатные действия. За отчётный период на использование Capsicum переведены приложения и библиотеки из состава FreeBSD, требующие повышенной безопасности, например обеспечена изоляция выполнения hastd, auditdistd, kdump, dhclient, tcpdump, libmagic, rwho и rwhod. Переработан демон Casper Capsicum. Представлена библиотека libcapsicum с программным интерфейсом, упрощающим задействование Capsicum разработчиками конечных приложений. В состав FreeBSD HEAD включена улучшенная реализация Capsicum, расширяющая области в которых можно использовать средства контроля Capsicum, упрощающая выполняемый на уровне ядра код и реализующая возможность задания ограничений на системные вызовы ioctl и fcntl. Добавлены новые Capsicum-сервисы system.dns, system.pwd, system.grp, system.random, system.filesystem, system.socket, system.sysctl;

Поддержка аппаратных механизмов виртуализации ввода/вывода Intel IOMMU (VT-d, DMAR), используемых в гипервизорах для проброса реальных PCI-устройств в виртуальное окружение и дополнительной изоляции устройств. Для FreeBSD подготовлен драйвер VT-d, реализующий интерфейс busdma с использованием элементов DMA Remap (DMARs), поддерживаемых ткущими чипсетами Intel. Драйвер позволяет увеличить надёжность и безопасность систем, за счёт ограничения доступа к основной памяти из устройств, а также добиться увеличения производительности за счёт избежания дополнительной буферизации. С практической точки зрения, создание надлежащего VMM-интерфейса для драйвера VT-d позволит реализовать такие возможности, как проброс PCI-устройств в виртуальные окружения. Аналогичный драйвер планируется создать для реализации IOMMU от компании AMD; Представлена реализация VPS (Virtual Private Systems), изолированных контейнеров, выполняемых средствами виртуализации на уровне ОС. Обеспечена поддержка таких расширенных возможностей, как Live-миграция контейнеров с одной машины на другую без остановки работы процессов и без разрыва установленных сетевых соединений. Также поддерживаются такие операции, как создание снапшотов и замораживание работы окружения. Все ресурсы виртуального окружения виртуализированы и не пересекаются с ресурсами соседних окружений. Со стороны работающих внутри VPS приложений, сформированное окружение выглядит как отдельный физический хост. Для синхронизации данных между двумя виртуальными окружениями на разных машинах подготовлена специально модифицированная версия утилиты rsync. Виртуализация выполнена через технику создания изолированных контейнеров на уровне ОС, без создания отдельного гипервизора, т.е. отличается низкими накладными расходами, чем-то напоминая Jail, Solaris Zone, Linux vserver или OpenVZ. При создании окружения задаются параметры сетевого соединения, точка монтирования, ограничения ресурсов и программа инициализации. В отличие от Jail представленная VPS-технология не работает на уровне изоляции единого набора процессов и ресурсов, а обеспечивает полное дублирование ресурсов в каждом изолированном окружении: отдельная таблица процессов, отдельный init-процесс, сетевой стек (используется ряд надстроек над подсистемой виртуализации сетевого стека VNET/VIMAGE), структуры devfs, псевдо-tty, VFS, отдельная реализация специфичных системных вызовов, таких как reboot (). Разработка находится на стадии альфа-тестирования

Внесены улучшения в реализацию поддержки Xen во FreeBSD. Расширено число паравиртуальных интерфейсов, доступных для гостевых систем, запущенных в режиме полной виртуализации (HVM). Реализована поддержка работы FreeBSD в режиме PVHVM, при котором обеспечивается возможность использования специальных дисковых и сетевых драйверов (PVHVM или PV-on-HVM) в гостевой системе, работающей в режиме HVM. До этого в режиме HVM допускалось использование PV-драйверов, но было невозможным задействование PVHVM-вариантов данных драйверов, специально оптимизированных для работы в режиме HVM. Наиболее существенным отличием PVHVM-драйверов является обход стадии эмуляции при трансляции дискового и сетевого ввода/вывода, что позволяет значительно повысить производительность HVM-окружений, приблизив их к производительности паравиртуализированных систем; Сетевая подсистема В ветки FreeBSD HEAD/stable8/stable9 принят модуль интеграции в hastd поддержки BSNMP, легковесного SNMP-сервера (bsnmpd), распространяемого в рамках лицензии BSD. Указанный модуль позволяет использовать SNMP для удалённого мониторинга и управления работой hastd; Подготовлен патч, устраняющий некоторые ограничения реализации поддержки TCP SYN Cookies, связанные с современными особенностями использования окна перегрузки и выборочного подтверждения (SACK). Представленные улучшения позволяют при генерации начального номера последовательности кодировать такие параметры, как MSS, WSCALE и SACK без использования времени, а также задействовать более криптостойкий алгоритм хэширования SipHash-2–4 для защиты SYN cookie от подмены; Системы хранения и файловые системы Готовится к интеграции во FreeBSD HEAD новый нативный iSCSI стек, содержащий реализации iSCSI Target и iSCSI Initiator, отличающиеся более высокой надёжностью и производительностью, в сочетании с предоставлением значительно упрощённых средств администрирования. Для упрощения миграции со старого iSCSI Initiator в новом обеспечена совместимость на уровне файлов конфигурации. За последние месяцы в стеке реализована поддержка iSER (iSCSI over RDMA) для Target и Initiator, добавлены новые утилиты для администрирования (iscsictl), улучшена система ведения логов. Реализация отмечена как стабильная, но требующая дополнительной оптимизации. Интеграция во FreeBSD HEAD запланирована на август. Из планов на будущее отмечается создание программного стека iWARP и поддержка проброса SCSI; Проект PC-BSD работает над созданием загрузочных окружений на основе ZFS для серверов и десктоп-систем, отличающихся применением клонирвоания разделов при установке обновлений или для проведения экспериментов. При загрузке будет предоставлена возможность выбора произвольного клона ФС, что упростит тестирование обновлений перед их внедрением; В реализацию файловой системы ZFS, используемую в ветках head, stable/9 и stable/8, добавлена поддержка операции TRIM, что позволяет обеспечить поддержание высокой производительности работы накопителей на основе Flash-памяти в условиях высокой нагрузки. При создании ZFS пула или добавлении нового устройства в пул, TRIM выполняется для всего накопителя, что обеспечивает оптимальную начальную производительность. Для отмены данного поведения предусмотрена sysctl-переменная vfs.zfs.vdev.trim_on_init, которая может быть использована для новых или уже безопасно очищенных накопителей. Для слежения за состоянием выполнения TRIM представлена sysctl-переменная kstat.zfs.misc.zio_trim и команда «gstat -d»; Система В базовую систему интегрированы утилиты bsdconfig и sysrc. Утилита bsdconfig реализует интерфейс для настройки различных параметров системы, который планируется интегрировать в новый инсталлятор bsdinstall для обеспечения функциональности похожей на меню «Configure» из sysinstall. Утилита sysrc предназначена для управления настройками rc.conf из командной строки, без ручного редактирования данного файла в текстовом редакторе; Представлены первые наработки проекта по увеличению масштабируемости системы виртуальной памяти FreeBSD за счёт создания многопоточной реализации Pagedaemon, способной обеспечить параллельную обработку рабочих очередей для разных NUMA-доменов; В рамках проекта Newcons планируется предоставить новый интерфейс для обеспечения консольного и видеовывода через графические устройства, что позволит организовать доступ простых драйверов к консоли и терминальному режиму, а также доступ к фреймбуферу для X.Org. При этом от драйвера не требуется встраивание шрифтов, цветовых карт и изображений курсоров мыши, все эти компоненты будут предоставлены Newcons-драйвером vt. Проект также включает интеграцию с модулями KMS (Kernel Mode Setting), что позволит добиться поддержки современных релизов X.Org и обеспечить корректный возврат к режиму виртуального терминала после смены видеорежима средствами X.Org. Среди возможностей отмечается поддержка мыши, KMS, USB-клавиатур, экрана-заставки, vidcontrol. Первый рабочий вариант проекта, включая поддержку moused, ukbd и KMS, планируется представить в середине августа, полная готовность Newcons ожидается в ноябре; Поддержка оборудования Продолжается разработка проекта по добавлению во FreeBSD поддержки переключения видео-режимов на уровне ядра (Kernel Mode Setting) для видеокарт AMD. За последние несколько месяцев решены проблемы с задействованием механизма управления видеопамятью TTM (Translation Table Maps), проявляющиеся в виде краха при попытке изменения размера окна таких приложений, как видеоредакторы и VirtualBox. Для включения в Mesa 9.2 переданы патчи, решающие некоторые проблемы с работой KMS-модулей на платформе FreeBSD. Рассматриваются варианты решения проблем с блокировками OpenGL, которые не сказываются на работе glxgears, но приводят к зависаниям демонстраций WebGL и некоторых современных десктоп-окружений. В ближайшее время планируется подготовить инструкцию по настройке окружения для тестирования драйвера; Из OpenBSD портирован драйвер urtwn с поддержкой беспроводных адаптеров с интерфейсом USB на базе чипов Realtek RTL8188CU/RTL8192CU. Для работы драйвера требуется установить прошивку из портов (net/urtwn-firmware-kmod). Несмотря на то, что указанные чипы поддерживают 802.11n, драйвером режим 802.11n пока не поддерживается; Подготовлен драйвер для устройств с интерфейсом SDIO (Secure Digital I/O), позволяющий подключать периферийные устройства через стандартный контроллер для SD-карт. Среди устройств с интерфейсом SDIO на рынке присутствуют адаптеры Bluetooth и WiFi, камеры, устройства чтения отпечатков пальцев, сканеры штрихкодов и т.п. Драйвер выполнен в виде дополнения для существующей шины MMC, расширенной поддержкой специфичных для SDIO возможностей. Поддерживаются операции получения информации об устройстве, простая байтовая передача данных и чтение в мультибайтовом режиме. Дополнительно подготовлен прототип драйвера для модуля Marvell SDIO WLAN/BT, созданный на основе аналогичного драйвера для Linux; Во FreeBSD HEAD обновлена поддержка V4L2 в linuxulator, что позволило добиться отображения видео в Skype 4. Тем не менее, пока наблюдаются проблемы с прекращение работы звука после совершения некоторых звонков в Skype 4; Для порта FreeBSD/ARM разработаны средства для манипуляции страницами памяти большого размера (Transparent SuperPages), поддерживаемыми процессорами ARMv7. Поддержка SuperPages позволит увеличить эффективность и производительность работы FreeBSD на ARM-системах, благодаря обеспечению средств трансляции TLB для динамического покрытия больших областей памяти, что особенно актуально с появлением серверных ARM-систем. Работа в основной части уже выполнена, осталось протестировать новый код и интегрировать его во FreeBSD HEAD; Обновлена реализация стека для беспроводных устройств. Улучшена реализация блокировок в модуле net80211, добавлены функции спектрального сканирования (FFT) для чипов AR9280, AR9285 и AR9287, добавлена поддержка чипов AR93xx, AR94xx, AR95xx, обеспечена обработка ps-poll в режиме hostap, добавлена поддержка AR933x SoC, включая интегрированные периферийные устройства; Приложения и система портов Большинство портов, с компонентами десктоп-окружения GNOME, обновлены до состояния GNOME 3.6. Порт webkit-gtk3 на пути к обновлению до версии 2.0.3, чему мешает нерешённая проблема, приводящая по непонятным причинам к краху программ на базе webkit-gtk3. Из дальнейших планов отмечается доведение до готовности порта с десктоп-окружением MATE, обновление Glib 2.36 и GTK+ 3.8; Проведена адаптация новых версий десктоп-оболочки KDE и фреймворка Qt для FreeBSD. В порты помещены релизы KDE SC 4.10.4, Qt 5.0.2 (в area51), PyQt 4.10.2, QScintilla 2.7.2, SIP 4.14.7, KDevelop 4.5.1, Calligra 2.6.2, CMake 2.8.11.1, Digikam 3.2.0, KDE Telepathy 0.6.1. По данным сервиса PortScout доступно 473 связанных с KDE порта, из которых 98.73% портов содержат свежие версии приложений. Проведена большая работа по адаптации компонентов KDE и Qt для сборки с использованием Clang и libc++. Из планов отмечается исключение HAL из числа зависимостей и переход на интерфейс Bluedevil для обеспечения работы c Bluetooth; Обновлены порты, связанные с десктоп-окружением Xfce, в том числе deskutils/xfce4-tumbler (0.1.29), x11-wm/xfce4-panel (4.10.1), sysutils/xfce4-settings (4.10.1), x11-wm/xfce4-wm (4.10.1), www/midori (0.5.2), misc/xfce4-appfinder (4.10.1), x11/xfce4-terminal (0.6.2), x11-fm/thunar (1.6.3); Добавлен порт с графическим стеком на базе X.Org 7.7. Ведётся работа по обновлению драйверов и X-библиотек, а также переходу на новые выпуски MESA и xorg-server. Среди планов также отмечается обеспечение поддержки Wayland и разработка замены HAL для горячего подключения устройств; Началась разработка графических интерфейсов на основе Qt и GTK+ для управления пакетами в системе pkgng. Суть проекта в создании pkg-бэкенда для PackageKit и адаптации для работы с ним разработанных для PackageKit интерфейсов на базе Qt и GTK. Разработку планируется завершить до конца сентября; Проект PC-BSD ввёл в строй репозиторий для использования с пакетным менеджером pkgng, отличающийся поставкой постоянно обновляемых бинарных пакетов со свежими версиями всех приложений, доступных через дерево портов FreeBSD. Указанный репозиторий будет использован для постоянно обновляемой rolling-ветки PC-BSD, но может быть задействован и в обычных выпусках PC-BSD и FreeBSD, а также пригоден для установки обновлений в изолированных окружениях Jail и TrueOS; Ведётся работа по интеграции в базовую систему отладчика LLDB, развиваемого проектом LLVM. Из-за отсутствия мэйнтейнера поддержка LLDB для FreeBSD находилась в плачевном состоянии. Теперь нашёлся разработчик, заинтересованный в развитии LLDB для FreeBSD и организации, готовые его поддержать (DARPA/AFRL, SRI International и Кэмбриджский университет), что позволило устранить накопившиеся проблемы, обеспечить сборку отладчика и предоставить возможность отлаживать однопоточные приложения. Из задач на будущее отмечается поддержка отладки многопоточных программ, core-файлов и ядра, возможность удалённой отладки, поддержка архитектуры MIPS; Обновлены порты, связанные с языком программирования Haskell. В частности, осуществлён переход на Haskell Platform 2013.2.0.0 и GHC 7.6.3. Число связанных с Haskell портов достигло 402. Обеспечена экспериментальная поддержка сборки портов Haskell с использованием Clang/LLVM; Разное 6 июля началась подготовка релиза FreeBSD 9.2, который планируется выпустить в конце августа или начале сентября; Ведётся работа по переходу с DocBook 4.5 на DocBook 5.0 при подготовке документации, что позволит избавиться от использования устаревшей системы стилей DSSSL в процессе рендеринга документов, а также исключить Java из числа зависимостей, необходимых для сборки документации. Для сборки документации планируется преобразовывать исходный код документов в формате DocBook в представление TeX и использовать TeX в качестве бэкенда рендеринга.

Полный текст статьи читайте на OpenNet