| Отчёт о состоянии развития FreeBSD за четвёртый квартал 2013 года
Представлен отчёт о развитии проекта FreeBSD с октября по декабрь 2013 года.
Основные достижения:
- Система
- В компилятор GCC, ещё используемый в базовой системе на
некоторых вторичных архитектурах (Clang во FreeBSD 10 задействован
только для ARM, x86 и AMD64), интегрированы патчи, нацеленные на
улучшение совместимости с Clаng. Поддержка в GCC некоторых возможностей
Clang необходима для унификации процесса сборки, в котором пока не могут
быть задействованы некоторые полезные возможности Clang, отсутствующие в
GCC 4.2.1. В частности, добавлена поддержка расширенных предупреждений
и такие улучшения, как "-Wmost" и "-Wnewline-eof". Также доступна
реализация Си-расширения Blocks, которое поможет улучшить поддержку во FreeBSD технологии GCD (Grand Central Dispatch). Патчи в основном портированы из ветки GCC, поддерживаемой компанией Apple.
- В рамках проекта ZFSBoot ведётся работа по
обеспечению поддержки файловой системы ZFS в установщике BSDInstall. В
декабре, перед релизом FreeBSD 10.0, ZFSBoot достиг стабильного
состояния, предоставив возможность установки системы с корневым разделом
на ZFS, опциональной поддержкой загрузочных окружений и шифрования
через geli. Благодаря проекту ZFSBoot, в BSDInstall также появились
расширенные средства отладки, дополнительные возможности по
использованию скриптов, новое меню для выбора раскладки клавиатуры,
упрощена настройки беспроводной сети, внесена серия небольших улучшений в
процесс установки. Из планируемых улучшений отмечается предоставление
возможности по настройке всех параметров в интерактивных меню,
возможность создания дополнительных параметров, поддержка установки на
шифрованные разделы UFS, интеграция конфигуратора BSDConfig с
реализацией функций по настройке и установке пакетов, ранее
присутствующих в sysinstall.
- В рамках проекта FreeBSD Test Suite
ведётся работа по внедрению средств для обеспечения тестирования
качества кода в процессе разработки FreeBSD. Роль базового инструмента
для организации автоматизированного тестирования выполняет фреймворк kyua
(devel/kyua). Сценарии тестирования размещаются в каталоге /usr/tests/.
Для разработчиков формируемый тестовый набор позволяет постоянно
контролировать качество кодовой базы и оперативно выявлять регрессивные
изменения, для пользователей появляется возможность проверки
корректности работы внедрённых программных и аппаратных конфигураций. В
настоящее время тестовые наборы только создаются и проект находится на
стадии формирования инфраструктуры, после проверки которой начнётся
перевод используемого ранее кода для тестирования системы, например,
тестов tools/regression/, на новый инструментарий.
- Завершена работа по портированию для использования в
процессе разработки FreeBSD системы непрерывной интеграции, построенной
на базе сервера Jenkins. Система уже используется
в проектах компании iXsystems при разработке дистрибутива FreeNAS.
Инфраструктура пока не введена в строй и требует дополнительной
настройки, но сервер на базе Jenkins уже установлен в специально
подготовленном виртуальном окружении.
- Продолжена работа по интеграции в базовую систему отладчика LLDB, развиваемого
проектом LLVM. За отчётный период была добавлена поддержка отладки
многопоточных программ в live-режиме с использованием ptrace.
Реализована поддержка архитектуры MIPS. Для тестирования в базовую
систему импортирван снапшот LLDB (SVN rev 196322), который можно
собрать, указав "WITH_LLDB=" в src.conf (по умолчанию не собирается).
После импорта Clang 3.4 сборку отладчика LLDB планируется включить по
умолчанию для архитектуры AMD64. Из дальнейших планов отмечается
поддержка архитектуры ARM и возможность локальной и удалённой отладки
ядра;
- Ведётся работа по улучшению поддержки
загрузки FreeBSD на системах с UEFI. Загрузчик и процесс загрузки ядра
FreeBSD адаптируются для обеспечения совместимости с прошивками UEFI,
применяемыми на выпускаемых ноутбуках, ПК и серверах. В настоящее время
уже подготовлен прототип UEFI-загрузчика FreeBSD, который готовится к
интеграции во FreeBSD HEAD. Поддержку UEFI Secure Boot планируется реализовать в выпуске FreeBSD 10.1.
- Во FreeBSD HEAD приняты наработки проекта Newcons,
в рамках которого развивается новый интерфейс для обеспечения вывода
через графические устройства, позволяющий организовать доступ простых
драйверов к консоли и терминальному режиму, а также доступ к фреймбуферу
для X.Org. При этом от драйвера не требуется встраивание шрифтов,
цветовых карт и изображений курсоров мыши, все эти компоненты
предоставлены Newcons-драйвером vt. Проект также включает интеграцию с
модулями KMS (Kernel Mode Setting), что позволит добиться поддержки
современных релизов X.Org и обеспечить корректный возврат к режиму
виртуального терминала после смены видеорежима средствами X.Org. Среди
возможностей отмечается поддержка мыши, KMS (i915kms и radeonkms),
USB-клавиатур, экрана-заставки, vidcontrol, Unicode, xterm-подобная
эмуляция терминала, использование различных шрифтов в разных окнах
терминала. Код отмечен как готовый для повсеместного тестирования.
- Изолированные окружения, эмуляторы, безопасность и ограничения ресурсов
- Ведётся работа по расширению возможностей демона
auditdistd, используемого для организации безопасной и надёжной
передачи логов системного аудита поверх TCP/IP сети от локального демона
аудита к демону аудита на удалённом сервере, без промежуточного
сохранения лога на локальной системе. В auditdistd будет добавлена
проверка сертификатов на стороне клиента (сейчас поддерживается только
TLS с проверкой сертификатов на стороне сервера) и более полноценная
поддержка инфраструктуры открытых ключей с возможностью проверки всей
цепочки доверия для сертификата и проверкой по спискам отозванных
сертификатов. Демон auditdistd будет поддерживать только режимы TLSv1.2
и PFS. Кроме того в будущем выпуске появится возможность отправки логов
сразу на несколько серверов. Работу планируется завершить уже в начале
февраля.
- Продолжена работа по расширению средств для
изоляции выполнения приложений при помощи фреймворка Capsicum, который
расширяет POSIX API и предоставляет несколько новых системных
примитивов, нацеленных на поддержку модели безопасности через управление
возможностями объектов ("object-capability"). Capsicum дополняет
традиционный централизованный мандатный контроль доступа средствами для
защиты отдельных приложений и активируется на стороне самого приложения.
Используя Capsicum приложение можно запустить в режиме повышенной
изоляции (sandbox), при котором программа сможет выполнять только ранее
специфицированные штатные действия. Для организации доступа
привилегированным операциям и функциональности, недоступным при работе в
режиме повышенной изоляции, развивается демон Casper.
Из последних улучшений отмечается интеграция во FreeBSD HEAD демона
Casper, сервисов Casper (system.dns, system.grp, system.pwd,
system.random и system.sysctl) и библиотек libcasper, libcapsicum и
libnv. Утилита tcpdump адаптирована для выполнения DNS-запросов c
использованием сервиса system.dns. Утилита kdump адаптирована для
использования сервисов system.pwd и system.grp для преобразования
идентификаторов в имена пользователей и групп. Продолжается работа по
обеспечению режима изоляции для различных приложений базовой системы.
- В рамках проекта CBSD
подготовлен инструментарий для управления изолированными
jail-окружениями, комбинирующий в одном инструменте средства для
быстрого развёртывания, клонирования, импорта/экспорта, создания
снапшотов и мониторинга jail-окружениями. CBSD также предоставляет
средства для подготовки и использования готовых преднастроенных образов
Jail с определённым набором приложений и сервисов. Для управления в том
числе может использоваться web-интерфейс.
- Создан проект по добавлению в облачную платформу OpenStack
поддержки использования FreeBSD в качестве хост-системы для
развёртывания гостевых систем с использованием гипервизора Bhyve и
средств виртуализации сети OpenContrail.
Для реализации данной цели разрабатывается драйвер для поддержки
гипервизора bhyve в компоненте OpenStack nova-compute и ведётся
портирование для FreeBSD модуля OpenContrail vRouter. В настоящий момент
разработка уже находится на стадии работающего демонстрационного
прототипа. Проект развивается при поддержке компании Juniper Networks.
- Готовятся к включению во FreeBSD HEAD патчи с реализацией поддержки работы FreeBSD в качестве гостевой системы в режиме PVH DomU
(использование паравиртуализации в полностью виртуализированном
HVM-контейнере без применения эмуляции), поддержка которого появится в
Xen 4.4. Также подготовлен начальный набор патчей для поддержки PVH
Dom0, позволяющий использовать FreeBSD в качестве хост-системы.
- Во FreeBSD HEAD и stable/10 интегрированы наработки
проекта по обеспечению поддержки аппаратных механизмов виртуализации
ввода/вывода Intel IOMMU (VT-d, DMAR), используемых в гипервизорах для
проброса реальных PCI-устройств в виртуальное окружение и дополнительной
изоляции устройств. В частности, интегрирован драйвер VT-d, реализующий
интерфейс busdma с использованием элементов DMA Remap (DMARs),
поддерживаемых текущими чипсетами Intel. Драйвер позволяет увеличить
надёжность и безопасность систем за счёт ограничения доступа к основной
памяти из устройств, а также добиться увеличения производительности за
счёт избежания дополнительной буферизации. По умолчанию драйвер
отключен, но может быть активирован в loader.conf через опцию
hw.dmar.enable;
- Сетевая подсистема
- Проведена большая работа по увеличению стабильности и производительности нового нативного стека iSCSI,
работающего на уровне ядра и содержащего реализации iSCSI Target и
iSCSI Initiator. Продолжается работа по реализации поддержки iSER.
Добавлены оптимизации для распределения нагрузки между несколькими
потоками внутри ядра и проведена переработка механизма блокировок, что в
конечном счёте позволило добиться повышения производительности на
многоядерных системах. Все подготовленные оптимизации планируется
перенести во FreeBSD HEAD в феврале, после чего вернуть их в ветку
stable/10 и включить в состав релиза 10.1;
- Системы хранения и файловые системы
- Завершён проект по увеличению масштабируемости и
производительности работы подсистем CAM (ATA/SCSI) и GEOM (уровень
блочных устройств) на многоядерных системах. В рамках проекта
переработан механизм блокировок, что позволило заметно увеличить
производительность CAM и GEOM на многоядерных системах. Например, в
тестах был достигнут порог в 1 млн операций ввода/вывода в секунду. В
GEOM дополнительно проведена общая полировка кодовой базы и добавлена
новая функциональность прямой отправки (direct dispatch), позволяющей
разделить нагрузку между несколькими потоками и процессорами, сократив
число переключений контекста. Наработки уже перенесены в ветки FreeBSD
HEAD и stable/10, и ожидаются в выпуске FreeBSD 10.1;
- Началась разработка проекта по реализации файловой
системы autofs и связанного с ней демона automountd для организации
автоматического монтирования ФС при попытке обращения к связанным с ними
разделам. Систему автомонтирования планируется реализовать в виде,
близком к подобным подсистемам Linux, OS X и Solaris, обеспечив
совместимость на уровне формата файлов маппинга. Кроме того планируется
обеспечить интеграцию с сервисами директорий, такими как LDAP;
- Во FreeBSD HEAD и stable/10 приняты изменения с
поддержкой использования в ZFS улучшенного кода кэширования в механизме
распределения памяти UMA, который позволяет добиться большей
производительности. В ZFS для ZIO/ARC использование UMA можно
активировать через опцию vfs.zfs.zio.use_uma в loader.conf, которая уже
активирована по умолчанию для архитектуры ARM64. Поддержка кэша UMA для
буферов сжатия LZ4 включена для всех архитектур. При тестировании на
многопроцессорных системах указанные изменения показали удвоение
прозводительности;
- Во FreeBSD HEAD принят ряд оптимизаций работы
сервера NFS (RPC, FHA, DRC), которые позволили в некоторых тестах
значительно увеличить производительность и снизить нагрузку на CPU.
Вкупе с вышеотмеченными улучшениями в ZFS удалось добиться
производительности в 200 тыс операций чтения NFS блоков в секунду
(IOPS) и 55 тыс SPEC NFS IOPS.
- Поддержка оборудования
- Обновлён код KMS-модуля i915kms для видеокарт Intel,
обеспечивающего переключение видеорежимов на уровня ядра. Код драйвера
синхронизирован с текущей кодовой базой драйвера для ядра Linux и
включает все исправления, внесённые за последние полтора года. С точки
зрения функциональности в новом выпуске обновлена поддержка IvyBridge,
добавлена поддержка процессоров серии Haswell и ValleyView,
запланированы для включения новые возможности, необходимые для
использования свежих выпусков X.Org и Mesa;
- Продолжается развитие порта с поддержкой Allwinner
A20 SoC, позволяющего запустить FreeBSD на плате Cubieboard2. Из
периферии поддерживается USB EHCI и GPIO, заершена работа над драйвером
EMAC 10/100 Ethernet.
- Во FreeBSD HEAD и stable/10 добавлена начальная
поддержка процессоров Freescale i.MX6, построенных на архитектуре ARM
(ARM Cortex A9). Уже готовые драйверы для USB (EHCI), Ethernet
(Gigabit), SD Card и UART. В разработке поддержка I2C, SPI, AHCI,
подсистем для звука и видео.
- Во FreeBSD HEAD добавлена поддержка SoC Freescale
Vybrid VF6xx на базе ARM Cortex-A5/M4. Поддерживается NAND Flash
Controller (NFC), USB EHCI, GPIO, UART, GIC, MPCore timer, Ethernet.
Требует доработки поддержка фреймбуфера.
- Ведётся работа по адаптации FreeBSD для работы на
новых ARM-платах, таких как SoC серии Rockchip и Qualcomm Snapdragon S4.
Во FreeBSD HEAD принят код для начальной поддержки SoC Rockchip RK3188
(Quad core Cortex A9).
- Продолжается работа над драйвером iwn для
беспроводных адаптеров
Intel 802.11n. В последнее время добавлена поддержка серий чипов 2xxx,
6xxx и 1xx, устранены недоработки при сканировании сетей, задействованы
средства контроля потока 802.11n из стека net80211.
- Приложения и система портов
- Дерево портов FreeBSD преодолело отметку в 24,500 портов, число незакрытых PR держится на уровне 1900. Введён в строй
pkg.freebsd.org, официальный репозиторий бинарных пакетов для
использования с пакетным менеджером pkg. Пакеты для pkg сформированы для
выпусков 8.3, 8.4, 9.1, 9.2, 10.0 и -CURRENT. Добавлена поддержка
проверки валидности пакетов по цифровой подписи;
- Подготовлен порт sysutils/panicmail с реализацией
механизма отправки отчётов о крахе ядра системы в централизованное
хранилище. Информации о крахах пока присылается очень мало.
Пользователям рекомендуется установить данный порт и активировать
автоматическую отправку информации о крахах, что позволит ускорить
выявление и устранение проблем в ядре FreeBSD.
- Продолжена чистка портов lang/python* для
обеспечения совместимости с используемыми в upstream методами сборки и
разными версиями Python, без применения специфичных для FreeBSD
сборочных патчей. Осуществлён уход от привязки портов к сборке
lang/python, каждый порт теперь связывается зависимостями с конкретной
версией Python или с мета-портом lang/python, что решает проблемы с
привязкой портов к веткам Python 2.x или Python 3.x. Ведётся подготовка к
поддержанию в одном порте возможности использования нескольких версий
Python. Порт lang/python27 обновлён до версии 2.7.6, lang/python33 port
до версии 3.3.3, lang/pypy до версии 2.2.1. Порт devel/py-distribute
заменён на обновлённый порт devel/py-setuptools, в котором добавлена
поддержка новых средств для упрощения установки Python-пакетов.
- Развивается инициатива по формированию сборок
FreeBSD для развёртывания в качестве гостевой ОС в cloud-окружениях
Amazon EC2. Во FreeBSD 10 работа FreeBSD в EC2 возможна без применения
дополнительных патчей со штатным GENERIC-ядром, в котором включена по
умолчанию поддержка XENHVM. В состав сборок FreeBSD/EC2 включена
система "configinit" для автонастройки использования пользовательских
данных окружения EC2. Из открытых задач отмечается перевод формирования
AMI-сборок FreeBSD в рамках основного процесса формирования релизов.
- В коллекцию портов добавлено десктоп-окружение MATE
1.6, в рамках которого продолжена работа по поддержанию классического
рабочего стола в стиле GNOME 2. Пользователям, отдающим предпочтение
GNOME 2, рекомендуется перейти на использования данного порта (x11/mate
или сокращённый вариант x11/mate-base), так как в скором времени в GNOME
2 в портах будет заменён на GNOME 3 (работа над портом GNOME 3.6
близится к завершению).
- Проведена адаптация новых версий десктоп-оболочки
KDE и фреймворка Qt для FreeBSD. В порты помещены релизы KDE 4.11.4
(area51), Qt 4.8.5, Qt 5.2 (area51), PyQt 4.10.3, SIP, 4.15.2,
QScintilla2 2.8,
Qt Creator 2.8.0, KDevelop 4.5.2, Calligra 2.7.5 и CMake 2.8.12.1.
По данным сервиса PortScout
доступно 464 связанных с KDE порта, из которых 88.15% (в прошлом отчёте
было 98.73%) портов содержат свежие версии приложений. Из планов
отмечается исключение HAL из числа зависимостей, переход на интерфейс
Bluedevil для обеспечения работы c Bluetooth, поддержка KDE 4.12 и Qt 5,
проверка корректности сборки компонентов KDE с использованием Clang и
libc++;
- Обновлены порты, связанные с десктоп-окружением
Xfce, в том числе Orage 4.10.0,
Midori 0.5.6,
xfce4-terminal 0.6.3,
xfce4-parole 0.5.3, 0.5.4, xfce4-whiskermenu-plugin (1.2.0, 1.2.1,
1.2.2, 1.3.0), xfce4-mailwatch-plugin 1.2.0, xfce4-wmdock-plugin 0.6.0.
Удалены устаревшие порты x11-themes/lila-xfwm4 (тема Xfwm4),
multimedia/xfce4-media (multimedia player) и
net-im/xfce4-messenger-plugin.
- Порт с Wine, открытой реализации Win32 API,
обновлён до выпуска 1.6.1, также доступен порт с экспериментальным
выпуском 1.7.8. Для сборки Wine по умолчанию задействован Clang.
Обеспечена возможность сборки без поддержки X11.
- Во FreeBSD HEAD осуществлена сборка по умолчанию
нового графического стека на базе X.Org 7.7 (WITH_NEW_XORG). Для FreeBSD
11-CURRENT обеспечена возможность установки графического стека через
репозиторий pkg. Обновлены компоненты графического стека: X.Org server
1.12, Mesa 9.1 и новые версии драйверов Intel и Radeon, работающие с
использованием модулей KMS. KMS-модуль Radeon признан стабильным и скоро
будет перенесён в ветку stable/9.
| |