Представлен (https://www.freebsd.org/news/status/report-2015-01-2015-03.html) отчёт о развитии проекта FreeBSD с января по март 2015 года.Основные достижения:
-
Система
- Поставляемые в базовой системе компилятор Clang, компоненты LLVM и отладчик LLDB обновлены до выпуска 3.6 (https://www.opennet.ru/opennews/art.shtml?num=41747). Импортирован новый снапшот compiler-rt, который позволил добавить в поставляемый в базовой системе инструментарий средства для выявления ошибок при работе с памятью (Address Sanitizer) и детектор неопределённого поведения программы (Undefined Behavior Sanitizer);
- На финальный этап разработки вышел проект по созданию загрузчика (https://svnweb.freebsd.org/base/projects/lua-bootloader/) со встроенной поддержкой языка Lua, который должен заменить собой загрузчик на базе языка Forth. Все скрипты уже переписаны на Lua и размещены в директории sys/boot/lua. Новый загрузчик будет интегрирован во FreeBSD HEAD как только будет завершено его тестирование и достигнут паритет в функциональности с загрузчиком Forth;
- Подготовлен (https://www.opennet.ru/opennews/art.shtml?num=42042) релиз пакетного менеджера Pkg 1.5 с возможностью возобновления прерванных загрузок, режимом установки пакета в иную корневую директорию без использования chroot и начальной поддержкой опций provides/requires, позволяющих определить какой установленный пакет предоставляет указанную библиотеку и какие пакеты используют данную библиотеку.
- Добавлены два новых системных вызова futimens() и utimensat(), позволяющие манипулировать временем модификации файла с наносекундной точностью. Утилиты cp, mv и touch уже обновлены для сохранения параметров доступа с повышенной точностью. Ранее, stat() и похожие системные вызовы выводили параметры с наносекундной точностью, но установить эти параметры можно было только с точностью до микросекунд.
- В основное дерево исходных текстов приняты наработки по обеспечению сборки FreeBSD для развёртывания в качестве гостевой ОС в cloud-окружениях Amazon EC2, что дало возможность наладить формирование AMI-сборок FreeBSD в рамках основного процесса формирования релизов. Для сборки следует выполнить "make ec2ami" в директории src/release.
- Во FreeBSD HEAD обеспечена возможность динамической загрузки многопоточной библиотеки libthr.so из однопоточных процессов, собранных без опции "-lpthread". Для обхода ранее присутствовавших ограничений библиотека libthr.so преобразована в плагин к libc.
- Стартовал процесс миграции FreeBSD на инструментарий (http://elftoolchain.sourceforge.net) работы с исполняемыми файлами в формате ELF, эквивалентный набору GNU Binutils, но распространяемый под лицензией BSD. В настоящее время уже подготовлены BSD-версии библиотек libelf и libdwarf, а также утилит addr2line, nm, readelf, size, strings и strip (elfcopy). Пока отсутствуют аналоги утилит as, ld и objdump, но их планируется заимствовать у проекта LLVM.
-
Изолированные окружения, эмуляторы, безопасность и ограничения ресурсов
- Отмечается прогресс в реализации верифицированной загрузки на системах с UEFI Secure Boot (https://wiki.freebsd.org/SecureBoot). В ветку 11-CURRENT добавлена новая утилита uefisign для формирования цифровых подписей для файлов EFI. Остальные утилиты размещены в портах sysutils/pesign, sysutils/sbsigntool и sysutils/shim. Подготовлен прототип патча для использования Secure Boot shim в загрузчике boot1.
- В рамках проекта Nested Kernel (http://nestedkernel.org) для FreeBSD развивается реализация новой системной архитектуры, подразумевающей запуск отдельного небольшого вложенного изолированного ядра помимо основного монолитного ядра. Вложенное ядро берёт на себя все операции с обновлением таблиц трансляции виртуальной памяти, обеспечивая защиту основного ядра от полной компрометации в случае атаки (вложенное ядро инициализирует систему, так что все страниц памяти становятся отражены в режиме только для чтения, все страницы с кодом защищены от записи, а все страницы с данными защищены от запуска). С точки зрения производительности подобный поход приводит к накладным расходам, которые оцениваются для http-сервера apache в 1%, для sshd - в 3.7%, для компиляции ядра - 2.7%.
- Продолжается работа по улучшению реализации гипервизора BHyVe (http://www.bhyve.org), изначально разработанного компанией NetApp и поставляемого в базовом составе FreeBSD 10. Работа сосредоточена на обеспечении поддержки новых типов гостевых систем и доведении функциональности до других гипервизоров. В настоящее время поддерживается создание хост-систем на базе платформы FreeBSD/AMD64 и запуск в гостевых системах FreeBSD, Linux i386/x64, OpenBSD i386/amd64 и NetBSD/amd64. Из последних достижений отмечается поддержка неблокирующего VCPU асинхронного ввода/вывода в драйвере virtio-blk, возможность параллельной обработки запросов в устройствах virtio-blk и ahci-hd, поддержка операции TRIM в ahci-hd.
Из задач на будущее выделяются: развитие инструментария bhyveucl (https://github.com/allanjude/bhyveucl), поддержка virtio-scsi, создание гибких сетевых бэкендов, таких как wanproxy и vhost-net, объединение процессов bhyveload и bhyve, возможность запуска bhyve без прав root, фильтры для образов виртуальных машин VMDK, VHD и QCOW2, абстрактная прослойка для видео, не привязанная к X11 или SDL, поддержка спящего режима, Live-миграция, вложенный запуск виртуальных машин, поддержка архитектур ARM, MIPS и PPC.
- Подготовлен (https://lists.freebsd.org/pipermail/freebsd-current/2015-Feb...) новый патч с улучшенной реализацией технологии ASLR (Address space layout randomization) для защиты от некоторых видов атак, манипулирующих переполнением буфера. Новый патч отличается более высокой надёжностью и уже опробован проектом HardenedBSD в промышленной эксплуатации. В качестве следующего шага намечена компиляция приложений и библиотек базовой системы в формате PIE (Position-Independent Executables), который необходим для эффективной работы ASLR.
-
Сетевая подсистема
- Подготовлена (http://caia.swin.edu.au/urp/newtcp/mptcp/) новая версия патчей с реализацией расширения Multipath TCP (MPTCP), позволяющего организовать доставку пакетов одновременно по нескольким маршрутам через разные сетевые интерфейсы, привязанные к разным IP-адресам. Целью проекта является подготовка MPTCP-патчей для ядра FreeBSD, совместимых с эталонной реализацией MPTCP и дополнительными улучшениями. Новая версия патчей отличается полностью переработанной архитектурой, пригодностью установки соединений по нескольким каналам связи и поддержкой повторной передачи на уровне данных (data-level re-transmission).
- В рамках проекта "opaque ifnet (https://wiki.freebsd.org/projects/ifnet)" совместно с компанией Netflix развивается новый программный интерфейс ядра (KPI) для сетевых драйверов, который позволит развивать сетевой стек без нарушения совместимости с уже существующими драйверами. Основная идея нового интерфейса в скрытии от драйвера структуры ifnet, позволяя не заботиться о составе данной структуры.
- Для iSER Initiator, развиваемого в рамках нового нативного стека iSCSI (https://wiki.freebsd.org/Native%20iSCSI%20target), подготовлена начальная поддержка iSCSI-расширений для RDMA (Remote Direct Memory Access), используемых в продуктах компании Mellanox. Данные расширения предоставляют доступ к средствам аппаратного ускорения перемещения данных, присутствующих в 10, 40, 56 и 100 gigabit IB/Ethernet адаптерах Mellanox.
-
Системы хранения и файловые системы
- Разработка реализации (https://wiki.freebsd.org/Automounter) файловой системы autofs и связанного с ней демона automountd для организации автоматического монтирования ФС при попытке обращения к связанным с ними разделам, после включения в состав FreeBSD 10.1 в основном перешла на стадию оптимизации и устранения ошибок. При этом отмечается и появление новшеств, таких как дополнительн...
URL: https://www.freebsd.org/news/status/report-2015-01-2015-03.html
Новость: https://www.opennet.ru/opennews/art.shtml?num=42163