Официально вышел релиз FreeBSD 8.0. Обзор новшеств
http://www.opennet.ru/opennews/art.shtml?num=24420
Спустя почти два года с момента выхода версии 7.0 официально анонсирован выход релиза FreeBSD 8.0. Релиз поддерживает архитектуры amd64, i386, ia64, pc98, powerpc и sparc64. Для установки подготовлены 5 установочных сборок: bootonly, CD, DVD, LiveFS и Memstick для USB Flash.
Ключевые новшества FreeBSD 8.0:
Реализация технологии виртуализации сетевого стека vimage, которая позволяет обеспечить поддержку на одной машине нескольких полностью виртуальных, изолированных сетевых стеков. Система значительно расширяет сетевую функциональность подсистемы jail. Так, например, появится возможность иметь для каждого jail индивидуальные настройки PF, ipfw, dummynet правил, net.inet sysctl переменных ядра, маршрутизации, IPSec и обеспечить возможность их автономного администрирования;
C целью поддержки параллельного многопоточного режима переработан фреймворк NETISR, представляющий собой реализованный в ядре интерфейс для сетевой диспетчеризации, позволяющий драйверам напрямую перенаправлять пакеты обработчикам сетевых протоколов. Новая реализация поддерживает выполнение одного NETISR потока на каждый CPU, что значительно повышает производительность сетевой подсистемы на многопроцессорных конфигурациях;
Поддержка выполнения FreeBSD i386/PAE в гостевом домене Xen (domU);
Завершена четырехлетняя работа по переводу сетевой подсистемы FreeBSD на более эффективную систему блокировок. Все сетевые драйверы переведены на новую MPSAFE (Multi Processor Safe) систему блокировок, эффективную для многопроцессорных и многоядерных систем. На MPSAFE блокировки также переведена подсистема TTY;
Режим эмуляции Linux (Linuxulator) переведен на использование 2.6.16 Linux ядра, в качестве порта, используемого для обеспечения работы Linuxulator, по умолчанию устанавливается emulators/linux_base-f10 (Fedora 10);
По умолчанию GENERIC ядро собирается с поддержкой мандатного контроля доступа (Mandatory Access Control), реализация которого была подготовлена в рамках проекта Trusted BSD. По умолчанию MAC модули с определением политик не загружаются;
Новый USB-стек HPS (USB2), который адаптирован для работы на SMP системах и содержит новые драйверы для современных высокоскоростных хост-контроллеров. Основные новшества:
Новый USB API;
Многие USB драйверы избавлены от глобальных блокировок;
Режим совместимости с USB подсистемой Linux ядра;
Новый UGEN бэкенд и библиотека libusb. Полностью решены проблемы с выгрузкой драйвера. Библиотека libusb20 распространяется под лицензией BSD и польностью совместима с GPL библиотекой libusb-0.1.12 (libusb.sourceforge.net);
Новая утилита "usbconfig", для удобной настройки USB устройств;
Полная поддержка разделенных транзакций (Split transactions), что подразумевает возможность использования скоростных USB аудио устройств на современных USB HUB.
Поддержка HS ISOC транзакций, что, например, открывает двери для создания драйверов для различных высокоскоростных web-камер;
Поддержка USB для встраиваемых платформ, улучшенный алгоритм сброса содержимого кэшей и буферов;
Возможность автоопределения установочных USB дисков;
Расширена поддержка USB устройств, различных режимов работы (например, I/O vectors позволяет увеличить пропускную способность и сократить число прерываний);
Решение проблем с крахом при извелечении USB-устройств без их предварительного отмонтирования;
Поддержка NDIS USB, позволяющая использовать во FreeBSD NDIS-совместимые драйверы USB устройств из Windows.
В подсистему CAM, изначально реализующую унифицированный модульный интерфейс для разработки драйверов для SCSI устройств, добавлена поддержка средств для управления устройствами с шиной ATA/SATA. Усовершенствование не влияет на работу текущей ATA подсистемы FreeBSD, предоставляя пользователю альтернативный драйвер для AHCI совместимых контроллеров, который может быть загружен по желанию. Новая инфраструктура поддерживает такие возможности, как NCQ (Native Command Queuing), MSI (Message Signaled Interrupts) и мультипликатор портов (Port Multiplier). Управление производится через стандартную утилиту camcontrol.
Обновлена поддержка ZFS до версии 13, список улучшений можно найти здесь, а примеры использования здесь. Поддержка файловой системы ZFS во FreeBSD объявлена готовой к промышленной эксплуатации. В настоящий момент ведется работа по портированию ZFS версии v22;
Во FreeBSD реализации подсистемы NFS добавлена поддержка RPCSEC_GSS аутентификации, как на стороне сервера, так и на стороне клиента. Добавлена новая экспериментальная реализация кода для поддержки NFSv2, NFSv3 и NFSv4 (для включения вместо стандартной реализации нужно пересобрать ядро с опциями options NFSCL (клиент) или options NFSD (сервер)). По умолчанию в качестве транспорта для NFS теперь используется протокол TCP;
В подсистеме net80211, обеспечивающей поддержку связанных с беспроводными сетями технологий, появилась возможность одновременного создания нескольких подсистем базовых станций (BSS) на базе одной точки доступа. Для определения беспроводного интерфейса отныне используются псевдоинтерфейсы wlanN, вместо имени привязанного к типу задействованного драйвера;
В состав включены наработки проекта arp-v2 (L2+L3 rewrite project), cуть которого в выносе L2 данных (ARP и ND6) из L3 (IP) таблиц маршрутизации, улучшении параллельной обработки выборок данных за счет исключения лишних блокировок, упрощении логики кода связанного с маршрутизацией. Как итог интеграции arp-v2 стал возможным уход от концепции клонирования маршрутов (RTF_CLONING), сокращение объема кода в модулях IPv4 ARP и IPv6 NDP, а также уменьшение размера структуры данных rtentry;
Реализация поддержки протоколов групповой маршрутизации IGMPv3 (Internet Group Management Protocol) и SSM (Source Specific Multicast). IGMP активно используется для организации доставки широковещательного мультимедийного контента в IPTV системах;
В реализации IPSec появилась поддержка технологии NAT-Traversal (RFC 3948) для работы из подсети, находящейся за транслятором адресов.
При сборке системы в компиляторе GCC отныне по умолчанию включена система защиты от переполнения стека ProPolice SSP (stack-smashing protection). Технология основна на установке и последующей проверке так называемого "канареечного слова" - случайной последовательности устанавливаемой в стек непосредственно перед адресом возврата. Потери производительности при сборке с защитой от переполнения стека составляют 1-2%;
Jail2 - обновленный код реализации изолированных окружений Jail, в которой представлены следующие новшества:
Поддержка установки нескольких IP на каждый jail;
В дополнение к IPv4 реализована поддержка IPv6;
Возможность создания Jail без указания IP-адреса (без поддержки сети), по аналогии с chroot(8);
Обновлена поддержка SCTP внутри Jail, включая работу поверх IPv6;
cpuset(1) способен привязывать набор процессоров к определенному jailid или irq, причем установка возможна и после создания jail окружения;
В дополнение к имени хоста (hostname) добавлена возможность установки альтернативного имени для jail окружений, которое может использоваться для администрирования и не может быть изменено из jail;
В ddb(4) добавлена команда "show jails" для выполнения отладки;
Добавлена совместимость 32-разрядных jail'ов с 64-разрядными системами (32-разрядный бинарные файлы jail могут быть запущены в 64-битном системном окружении). Также обеспечена обратная совместимость с системными вызовами и утилитами предыдущей версии.
Поддержка иерархических (вложенных) jail'ов. Теперь внутри защищенных контейнеров можно в свою очередь создавать другие контейнеры, при необходимости с более (но никогда не менее) жесткими ограничениями.
Настройки, относящиеся к jail и доступные ранее глобально через sysctl, теперь можно изменять для каждого контейнера отдельно (sysctl оставлены для обратной совместимости);
Команда jail также претерпела изменения и теперь позволяет вместо предопределенного набора параметров задавать произвольные пары "имя=значение" для более гибкой настройки и возможности последующего расширения. Также параметры jail теперь можно менять "на лету".
Второстепенные улучшения, на которые стоит обратить внимание:
Переработан код системы gvinum, разработка которого велась на протяжении двух последних лет. Внутренняя логика работы переведена на событийную модель обработки, переписаны некоторые ключевые компоненты, улучшена реализация перестроения и синхронизации разделов. Добавлены недостающие команды, присутствующие в первоначальном vinum, такие как attach/detach, start, stop, concat, mirror, stripe, raid5. Реализована поддержка исправления деградировавших разделов, находящихся в смонтированном состоянии. Возможность добавления дополнительных дисков в RAID 5 разделы, с целью увеличения размера раздела, с поддержкой фонового перестроения без остановки работы. Значительно увеличена стабильность работы;
Большая порция изменений в звуковой подсистеме. Реализованы следующие улучшения:
Поддержка раздельного и независимого управления громкостью для каждого приложения (канала, потока), без изменения основного уровня громкости;
Новый высококачественный конвертер частоты дискретизации (sample-rate-converter), основанный на методе SINC интерполяции;
Параметрический программный эквалайзер (feeder_eq), поддерживающий управление частотными характеристиками воспроизводимого pcm-аудиопотока (басы, низкие частоты). Внесенный код предоставляет средства для управления тональностью, как для удовлетворения акустических предпочтений, так и для частотной компенсации звука под заданные характеристики воспроизводящей аппаратуры (например, для оптимизации воспроизведения через наушники или телефон);
В реализацию виртуальных аудиоканалов добавлена поддержка прозрачного адаптивного/динамического смешивания каналов с аудиоданными разных форматов и частот;
Режим прямой передачи немодифицированных, чистых pcm-потоков на устройства вывода, в обход средств DSP обработки (например, смешивания или преобразования частоты);
Режим эксклюзивного доступа к любым видам PCM-потоков (работает через открытие файла с флагом O_EXCL и напоминает режим 'passthrough' для виртуального звукового канала, при котором приглушаются все остальные каналы);
Мультиканальная матричная обработка для бесшовного преобразования или перенаправления каналов;
Звуковой Loopback/Null драйвер.
В дополнение к поддержке POSIX.1e ACL для файловых систем UFS и ZFS реализована экспериментальная поддержка NFSv4 ACL;
Добавлена поддержка чернового варианта стандарта 802.11s (принятие стандарта ожидается в следующем году), регламентирующего работу Mesh-сетей (каждая клиентская точка сети связана через соседние точки). Для маршрутизации в mesh-сети реализована поддержка протокола HWMP;
Добавлена реализация инфраструктуры для кэширования потоков, позволяющая ускорить выборки на 2 и 3 уровнях сетевого стека и реализовать балансировку нагрузки с учетом состояния соединения. По умолчанию функциональность выключена, для активации нужно использовать "sysctl net.inet.flowtable.enable=1";
Добавлена экспериментальная поддержка ECMP (Equal-Cost Multi-Path, RFC 2992) для IPv4 и IPv6, что позволяет создавать несколько маршрутов с одинаковым или заданным весом;
Добавлена экспериментальная поддержка платформы MIPS. Добавлена поддержка 64-разрядных процессоров PowerPC, включая PowerPC G5, PowerPC 970 (G5), POWER3 и POWER4;
В состав дистрибутива интегрирован пакет OpenBSM 1.1 с открытой реализации Sun Basic Security Module (BSM) Audit API. В новой версии увеличена производительность, BSD API синхронизирован с OpenSolaris, улучшена поддержка IPv6 и аудита событий связанных с сетью. Пакет может быть использован для анализа причин краха приложений или системы, определения факта вторжения злоумышленника, мониторинга состояния системы и т.д.
Добавлена библиотека libprocstat с API для просмотра детальной информации о процессах, включая данные о используемых файловых дескрипторах, нитях, мапинге памяти и т.п. На базе libprocstat создана утилита procstat для мониторинга, отладки и инспектирования процессов;
Добавлен драйвер sdhci для поддержки PCI SD хост контроллеров (кард-ридеров). Также усовершенствованы существующие драйверы mmc и mmcsd, которые теперь поддерживают карты размером более 2Гб, определяют состояние переключателя защиты от записи;
В дерево портов (emulators/virtualbox) добавлена система виртуализации VirtualBox, обеспечивающая возможность использования FreeBSD в качестве хост-системы для запуска гостевых ОС. В настоящий момент реализована поддержка механизма аппаратной виртуализации VT-x, поддержка сетевого бриджинга, ACPI, доступа к DVD/CD, поддержка SMP и т.д.
Улучшение утилит:
GNU-версия cpio заменена на распространяемый под лицензией BSD аналог;
в утилите traceroute появилась опция "-a" при которой для каждого хопа вычисляется и выводится номер автономной системы;
awk теперь может одновременно работать с 64 файлами;
оптимизирована буферизация в утилитах cat и cp;
в утилите find реализовано несколько свойственных GNU-версии опций (-ignore_readdir_race, -noignore_readdir_race, -noleaf, -gid, -uid, -wholename, -iwholename, -mount, -d, -lname, -ilname, -quit, -samefile, -true.);
утилита freebsd-update теперь автоматически производит резервное копирование заменяемой копии ядра;
утилита gpt удалена (нужно использовать gpart);
в ifconfig добавлены опции vnet и -vnet для перемещения интерфейса между jail;
для Dtrace клиентов добавлены библиотеки libdwarf и libproc;
для управления NFSv4 добавлены утилиты nfscbd, nfsuserd, nfsdumpstate и nfsrevoke;
в утилиту route добавлены команды show, weights и sticky;
В качестве поддерживаемых версий доступных в портах десктоп-окружен