Представлен отчёт (http://www.freebsd.org/news/status/report-2013-07-2013-09.html) о развитии проекта FreeBSD с июля по сентябрь 2013 года. Основные достижения:
-
Система
- Продолжена разработка проекта Newcons (http://svn.freebsd.org/base/user/ed/newcons/), в рамках которого развивается новый интерфейс для обеспечения вывода через графические устройства, позволяющий организовать доступ простых драйверов к консоли и терминальному режиму, а также доступ к фреймбуферу для X.Org. При этом от драйвера не требуется встраивание шрифтов, цветовых карт и изображений курсоров мыши, все эти компоненты будут предоставлены Newcons-драйвером vt. Проект также включает интеграцию с модулями KMS (Kernel Mode Setting), что позволит добиться поддержки современных релизов X.Org и обеспечить корректный возврат к режиму виртуального терминала после смены видеорежима средствами X.Org. Среди возможностей отмечается поддержка мыши, KMS (i915kms и radeonkms), USB-клавиатур, экрана-заставки, vidcontrol. Уже доступен первый рабочий вариант проекта, включающий поддержку мыши (sysmouse, пока без копирования и вставки), KMS, Unicode-шрифтов (в том числе кириллических), вывода Unicode символов на экран, работы в графическом и текстовом режимах, прокрутки истории вывода на экран.
- Доведена до конца работа по реализации (https://wiki.freebsd.org/AtomicCloseOnExec) атомарной установки флага "close-on-exec" для предотвращения утечки файловых дескрипторов в дочерние процессы при вызове fork() и exec() в нитях и обработчиках сигналов.
Поддержка атомарной установки флага обеспечена для всех POSIX-функций, создающих новые файловые дескрипторы, а также задействована для многих файловых дескрипторов, используемых в libc и libutil;
- Продолжена работа по интеграции в базовую систему отладчика LLDB (https://wiki.freebsd.org/lldb), развиваемого (http://www.opennet.dev/opennews/art.shtml?num=26907) проектом LLVM. Для тестирования в базовую систему импортирван снапшот LLDB (SVN rev 255722), который можно собрать, указав WITH_LLDB= в src.conf. Из пока не решённых задач отмечается поддержка отладки многопоточных программ, core-файлов и ядра, возможность удалённой отладки, поддержка архитектуры MIPS;
- Ведётся работа по устранению дефектов, выявленных в результате проведения статического анализа кода в сервисе Coverity (http://scan.coverity.com/), а также при использовании (http://scan.freebsd.your.org/) развиваемого проектом LLVM статического анализатора (http://clang-analyzer.llvm.org/). Налажено автоматизированное тестирование кода FreeBSD HEAD в clang-analyzer, выполняемое несколько раз в неделю. Планируется обеспечить автоматическую публикацию в списке рассылки информации о новых проблемах.
-
Изолированные окружения, эмуляторы, безопасность и ограничения ресурсов
- Представлены результаты улучшения реализации встроенного в ядро генератора псевдослучайных чисел CSPRNG, доступного через /dev/random. Текущий генератор случайных чисел является достаточно надёжным и пригодным для формирования непредсказуемых последовательностей в том числе и для криптографических нужд. Для формирования качественных непредсказумых входных данных в генераторе случайных чисел реализован предложенный Шнайером алгоритм Yarrow, основанный на дополнительном цикличном применении хэшей над неповторяющимися данными из разных частей ядра. Но в базовой реализации CSPRNG некоторые считающиеся качественными источники энтропии использовались без дополнительной рандомизации при помощи Yarrow.
Недавние разоблачения действий АНБ дали повод для дополнительной проверки качества методов сбора энтропии и применения дополнительных параноидальных методов для гарантирования независимости от отдельных источников энтропии, даже для тех которые считаются надёжными. В обновлённой реализации осуществлён переход к применению Yarrow для всех без исключения источников энтропии. В будущем планируется подготовить реализацию нового алгоритма Fortuna, также разработанного при участии Шнайера. Fortuna сможет быть использован в качестве альтернативной опции и, возможно, заменит по умолчанию Yarrow (решение пока не принято). Также планируется реализовать поддержку FIPS 800-90b и провести глубокий аудит качества энтропии;
- Улучшение (http://svnweb.freebsd.org/changeset/base/255187) поддержки инструкций AES-NI и задействование SSE2 во фреймворке OpenCrypto позволило существенно поднять скорость расшифровки AES-XTS и AES-CBC. Как следствие, производительность дискового шифрования при помощи GEOM-класса GELI при использовании AES-XTS поверх GNOP возросла в три раза.
- Продолжена работа по расширению применения средств для изоляции выполнения приложений при помощи фреймворка Capsicum (http://www.cl.cam.ac.uk/research/security/capsicum/). Capsicum расширяет POSIX API и предоставляет несколько новых системных примитивов, нацеленных на поддержку модели безопасности через управление возможностями объектов ("object-capability") для Unix-систем. Capsicum нацелен на дополнение традиционного централизованного мандатного контроля доступа средствами для защиты отдельных приложений и активируется на стороне самого приложения. Используя Capsicum приложение можно запустить в режиме повышенной изоляции (sandbox), при котором программа сможет выполнять только ранее специфицированные штатные действия.
Из последних изменений отмечено включение в состав FreeBSD 10 переработанного варианта capability cap_rights_t, позволяющего снять лимит в 64 правила над файловыми дескрипторами. Доведена до конца разработка библиотеки libnv, выступающей связующим звеном между потребителями и сервисами Casper (демон, предоставляющий сервисы для доступа к привилегированным операциям из изолированных процессов). Расширено число приложений для которых задействованы механизмы изоляции Capsicum.
- Подготовлены сборки FreeBSD 8.3-RELEASE, 8.4-RELEASE, 9.0-RELEASE, 9.1-RELEASE и 9.2-RELEASE для развёртывания в качестве гостевой ОС в cloud-окружениях Amazon EC2. Во FreeBSD 9.2-RELEASE работа FreeBSD в EC2 возможна без применения дополнительных патчей, но требует сборки ядра с включением опции XENHVM, которая включена по умолчанию начиная с FreeBSD 10.0-ALPHA3 (в EC2 смогут работать штатные сборки FreeBSD 10.0).
- Проведена чистка и расширена функциональность драйвера virtio с поддержкой паравиртуальных устройств ввода/вывода vtnet (Ethernet), virtio_blk (блочное устройство), virtio_scsi (SCSI HBA) и virtio_balloon (для возвращения памяти гипервизору). Добавлена поддержка работы с несколькими очередями (multiqueue);
-
Сетевая подсистема
- Портирован из OpenBSD и интегрирован в HEAD драйвер vmx для виртуальных ethernet-адаптеров VMware. Драйвер может быть использован вместо неподдерживаемого в 10.0-RELEASE и 9-STABLE драйвера vmxnet3 из состава VMware Tools. Из планов отмечается намерение включить драйвер в ветку stable/9.
-
Системы хранения и файловые системы
- Проведена работа по увеличению масштабируемости в GEOM и CAM на многопроцессорных системах, направленная на устранение узких мест в подсистеме работы с блочными устройствами, ограничивающими пиковую производительность на уровне 300-500 тысяч операций ввода/вывода в секунду. В GEOM была обеспечена возможность одновременной обработки запросов ввода/вывода из параллельно выполняемых потоков. В CAM переработан механизм блокировок, крупные блокировки разделены на серию мелких локальных блокировок (отдельные блокировки для шины, LUN, очередей), полностью не останавливающих работу CAM. В итоге, удалось поднять пиковую производительность в два раза, доведя её до миллиона операций ввода/вывода в секунду. Изменения планируется в скором времени включить в состав FreeBSD HEAD и ветку stable/10, после выпуска релиза FreeBSD 10.0.
- Во FreeBSD HEAD добавлен новый нативный iSCSI стек (https://wiki.freebsd.org/Native%20iSCSI%20target), содержащий реализации iSCSI Target и iSCSI Initiator, отличающие...
URL: http://lists.freebsd.org/pipermail/freebsd-announce/2013-Oct...
Новость: http://www.opennet.dev/opennews/art.shtml?num=38225