Обзор новшеств в FreeBSD 7.0

Discussion in 'Мировые новости. Обсуждения.' started by zythar, 28 Feb 2008.

  1. zythar

    zythar Elder - Старейшина

    Joined:
    16 Feb 2008
    Messages:
    517
    Likes Received:
    109
    Reputations:
    5
    После двух с половиной лет разработки, анонсирован выход релиза FreeBSD 7.0. Ниже обзор новшеств.
    Ядро

    * В подсистемы ядра ipsec и geli (шифрование диска) добавлена поддержка 128-битного блочного шифра Camellia, который был разработан компанией Mitsubishi Electric Corporation и открыт для свободного использования весной 2007 года.
    * Сборка и конфигурирование ядра
    o Опция сборки ядра COMPAT_43 признана ненужной и удалена из конфигурации.
    o Удалена опция PIM, вместо нее следует использовать MROUTING
    o Удален код драйверов:
    + cvt(4), альтернативной реализации syscons(4)
    + sab(4), который заменен новым драйвером scc(4) (Serial Communications Controllers).
    + zs, функции которого продублированы в uart(4).
    + el(4)
    + lnc(4), поддержка устройств обеспечена драйверами le(4) и pcn(4);
    + bridge(4), вместо него следует использовать if_bridge(4).
    + rr232x(4), следует использовать hptrr(4)
    o В GENERIC ядре по умолчанию включен cpufreq, драйвер dumb консоли, драйвер uart(4) , fwip (IP over FireWire), wlan_wep(4), wlan_ccmp(4) и wlan_tkip(4).
    o В GENERIC добавлена опция TCP_DROP_SYNFIN;
    o Для платформы ia64 в GENERIC по умолчанию включен SMP режим.
    * Библиотека тредов (1:1) libthr оптимизирована и используется по умолчанию.
    * Выделение кода KSE в опцию ядра. При компиляции ядра на основе собственных конфигурационных файлов необходимо включать 'options KSE'. В случае использования libthr вместо libpthread в KSE нет необходимости.
    * Новые sysctl переменные:
    o kern.hostuuid - содержит уникальный идентификатор хоста UUID (Universally Unique Identifier), неизменный между перезагрузками (сохраняется в /etc/hostid);
    o kern.conftxt - позволяет посмотреть содержимое файла конфигурации для текущей сборки ядра;
    o kern.malloc_stats - статистика распределения памяти ядром (kernel malloc);
    o kern.forcesigexit - заставляет завершать работу процесса по sigexit в случае удержания нитью сигнала "trap" или игнорирования текущим процессом. Включено по умолчанию.
    o vm.kmem_size_min (только для loader) - позволяет задавать минимальное значение vm.kmem_size.
    o debug.mpsafevfs (только для loader) - для архитектур ia64 и powerpc MPSAFE режим отладки кода vfs включен по умолчанию.
    o vm.zone_stats - позволяет получить статистику работы uma аллокатора памяти.
    o переменная hw.pci.do_powerstate разделена на две части: hw.pci.do_powerstate_nodriver и hw.pci.do_powerstate_resume.
    o net.inet.icmp.reply_from_interface - включает отправку ICMP ответов на нелокальные запросы, с IP на который пришел данный пакет.
    o net.inet.icmp.quotelen - изменяет размер цитируемой части TCP запроса при генерации ICMP ответа (минимум 8 байт, максимум - размер mbuf).
    * Усовершенствован режим эмуляции Linux (Linuxulator), произведен переход на использование 2.6.16 Linux ядра. Возможность не включена по умолчанию и является экспериментальной, для включения необходимо установить значение sysctl переменной compat.linux.osrelease в "2.6.16".
    * В PCI подсистему ядра добавлена поддержка Message Signaled Interrupts (MSI) и Extended Message Signaled Interrupts (MSI-X);
    * Добавлен новый интерфейс проверки привилегий внутри ядра - priv(9). Это замена существующему интерфейсу suser(9). priv(9) позволяет более гибко ограничивать привилегии пользователю, и является вариантом реализации POSIX capabilities.
    * Поддержка параллельного чтения данных из файла (read(2)/readv(2)) разными процессами.
    * Переработанный планировщик задач ULE (SCHED_SMP), отличающийся повышенной стабильностью и производительностью, как на однопроцессорных машинах, так и на SMP системах. В сочатании с оптимизацией в других подсистемах, разработчики добились увеличения производительности в тестах на 350% по сравнению с FreeBSD 6, при высокой нагрузке прирост производительности отмечен до 1500%.
    * Реализованы очереди сигналов SIGCHLD, настраиваемые через sysctl переменную kern.sigqueue.queue_sigchild.
    * RedZone - улучшение безопасности работы с памятью на уровне ядра, через защиту буфера от повреждения при выделении/освобождении памяти во время вызова malloc(9).
    * Экспериментальная поддержка POSIX Message Queue (P1003_1B_MQUEUE);
    * Переработан механизм блокировок для UNIX domain socket - улучшена скорость выполнения параллельных операций с сокетом и производительность на SMP системах;
    * Изменен API системы Newbus (архитектура для написания драйверов устройств), добавлены средства для фильтрации прерываний;
    * В загрузчике (Boot Loader) появилась поддержка firewire(4) и dcons(4), добавлена новая опция "-s" для задания скорости консоли привязанной к последовательному порту.

    Поддержка оборудования

    * ACPI, управление питанием и температурой:
    o acpi_dock(4) - драйвер для взаимодействия с док-станциями;
    o acpi_thermal(4) драйвер для регулирования температуры посредством ACPI.
    o Драйвер coretemp(4) для опроса температурных датчиков процессора Intel Core;
    o В cpufreq(4) драйвере появилась поддержка процессоров VIA C7-M.
    * Избавление от глобальных блокировок, мешающих оптимальной работе на многопроцессорных системах (приведение к MPSAFE виду): firewire(4), snd_cmi(4), snd_solo(4), bge(4), cm(4), natm(4), ng_h4(4), ng_ppp(4), ahc(4), ahd(4), подсистема CAM, ciss(4), isp(4), mpt(4)
    * Удалена поддержка архитектуры Alpha. Добавлена поддержка архитектуры UltraSPARC-T1, работа FreeBSD/sun4v проверена на серверах Sun Fire T1000 и Sun Fire T2000.
    * Обеспечена работа по умолчанию обоих ядер (core) двуядерных процессоров, таких как Intel Core Duo, в SMP сборках ядра (kernel) FreeBSD;
    * В драйвере uart(4) появилась поддержка доступа к устройствам LOM (Lights Out Management) и RSC (Remote System Control), как к консоли;
    * В драйвер uark(4) добавлена поддержка USB адаптеров последовательного интерфейса, основанных на чипе Arkmicro Technologies ARK3116;
    * Поддержка мультимедиа
    o Новый midi(4) драйвер, основанный на коде из NetBSD. Поддерживается в драйверах snd_cmi(4) и snd_emu10k1(4).
    o Новые драйверы:
    + snd_emu10kx(4) с поддержкой звуковых карт Creative SoundBlaster Live и Audigy;
    + snd_envy24(4) с поддержкой звуковых карт на базе чипов Envy24, а также snd_envy24ht(4) с поддержкой аудиочипов VIA Envy24HT.
    + snd_hda(4) с поддержкой Intel High Definition Audio
    + snd_spicds с поддержкой аудио кодека I2S SPI;
    o В драйвере uaudio(4) реализована поддержка 24/32-битных аудио форматов и их преобразования;
    * Сетевые устройства
    o TCP стек избавлен от глобальных блокировок (Giant Lock), мешающих оптимальной работе на многопроцессорных системах. Ряд оптимизиций (см. ниже) позволил добиться увеличения производительности в разы. Удален отладочный и сопутствующий Giant-локам код, за компанию удалена поддержка IPX поверх IP, временно отключены модули ISDN4BSD и netatm.
    o Поддержка группировки сетевых интерфейсов портирована из OpenBSD. Например, позволяет применить правило пакетного фильтра сразу для нескольких интерфейсов объединенных в группу;
    o Значительно переработан беспроводной стек 802.11. Добавлена возможность фонового обнаружения сетей, роуминга между точками доступа, поддержка 802.11n устройств и 900 MHz карт, половинной (15dBm) и четвертной (12dBm) выходной мощности каналов каналов для 802.11a;
    o Добавлена поддержка altq в драйверы: axe(4), gem(4), vge(4)
    o Новые драйверы:
    + cxgb(4) с поддержкой 10 Gigabit Ethernet адаптеров на базе чипов Chelsio T3 и T3B;
    + ixgbe(4) - Intel 10G PCI-Express adapter (82598);
    + msk(4) - Marvell/SysKonnect Yukon II Gigabit Ethernet;
    + mxge(4) - Myricom Myri10GE 10 Gigabit Ethernet;
    + nfe(4) - открытый драйвер для nForce Ethernet, портированный из OpenBSD;
    + nxge(4) - Neterion Xframe 10 Gigabit Ethernet;
    + rum(4) - беспроводные карты на базе чипов Ralink RT2501USB и RT2601USB;
    + wpi(4) - Intel 3945 Wireless LAN Controller.
    + zyd(4) - беспроводные карты ZyDAS ZD1211/ZD1211B USB IEEE 802.11 b/g;
    o Обновлены драйверы:
    + em(4), добавлена поддержка Intel адаптеров 80003, 82571, 82571EB, 82572, 82575, ICH8. Значительно увеличена производительность, за счет более быстрой обработки прерываний и использования обработчика "taskqueue" вместо "ithread".
    + ipw(4), iwi(4) - firmware для беспроводных карт теперь в комплекте, и не требует установки портов net/ipw-firmware-kmod, net/iwi-firmware-kmod, net/iwi-firmware или net/ipw-firmware;
    + В re(4) появилась поддержка D-Link DGE-528(T) Gigabit Ethernet

    Сетевые протоколы

    * Добавлен JIT (Just-In-Time) компилятор BPF правил отсеивания пакетов в bpf(4) и ng_bpf(4). Для включения нужно пересобрать ядро с опцией BPF_JITTER, временно отключить можно через sysctl net.bpf_jitter.enable;
    * Реализована поддержка IPv6 поверх GRE туннелей;
    * В if_bridge появилась поддержка RSTP (Rapid Spanning Tree Protocol, 802.1w), добавлен атрибут private, который позволяет помечать порты, между которыми запрещено передавать трафик;
    * Снято фиксированное ограничение на размер IPv4 multicast групп;
    * В пакетном фильтре ipfw(4) реализована поддержка фильтрации заголовков "Routing Header Type 0" и "Mobile IPv6 Routing Header Type". Удален код пакетного фильтра ip6fw(8), так как в ipfw(4) реализована полноценная поддержка IPv6;
    * Удалена KAME реализация IPSec, на ее место пришел FAST_IPSEC, в котором добавлена поддержка IPv6 и аппаратной акселерации шифрования;
    * Из OpenBSD/NetBSD портирован драйвер для объединения каналов в виртуальный сетевой интерфейс с возможностью обеспечения бесперебойной работы - lagg(4);
    * Новые Netgraph узлы:
    o ng_car - реализация различных алгоритмов ограничения трафика и rate-лимитов.
    o ng_deflate с поддержкой Deflate сжатия для PPP;
    o ng_pred1 c поддержкой Predictor-1 сжатия для PPP;
    * Новая опция сокетов - IP_MINTTL, позволяющая задать минимальный TTL пакетов, которые будут приниматься, пакеты с меньшим TTL будут отбрасываться. Например, при установке IP_MINTTL в 255 будут обслуживаться только запросы с локальной машины.
    * В ppp(4) драйвере, реализованном на уровне ядра, появилась поддержка IPv6;
    * Реализовано IP сокетов Source-Specific Multicast (SSM, RFC 3678);
    * Добавлена поддержка протокола SCTP (Stream Control Transmission Protocol). Включается через опцию ядра SCTP, по умолчанию активно в GENERIC конфигурации;
    * Поддержка TSO (TCP/IP segmentation offload) - снижение нагрузки системы через вынос некоторых моментов обработки TCP соединений на плечи сетевых карт (поддержка в em(4), mxge(4) и cxgb(4));
    * Динамическое вычисление размера send/receive TCP буферов (размер автоматически варьируется в зависимости от типа сетевой активности). Управление через sysctl переменные net.inet.tcp.sendbuf_* и net.inet.tcp.recvbuf_*.
    * Интеграция libalias в ipfw2, трансляцией адресов теперь можно управлять через набор команд "ipfw nat".

    Диски и системы хранения данных

    * gjournal - GEOM класс для журналирования, работающий на уровне блоков и не зависящий от типа файловой системы. В настоящее время реализована поддержка журналирования UFS;
    * gvirstor - GEOM класс для создания виртуальных дисковых разделов. Например, при помощи gvirstor можно объединить группу дисков в одно большое хранилище и в дальнейшем подключать к нему новые диски;
    * gmultipath(8) - GEOM класс для создания нескольких точек доступа к диску;
    * Новые драйверы
    o hptiop(4) - Highpoint RocketRAID 3xxx и 4xxx серии SAS и SATA RAID контроллеры;
    o hptrr(4) - HighPoint RocketRAID;
    o Новый драйвер scsi_sg, который эмулирует большую часть Linux SCSI SG и позволяет запускать программы, использующее данное API, в Linux эмуляторе посредством /dev/sg*;
    o Реализация iSCSI Initiator, для удаленного доступа к iSCSI устройствам по сети. Управление производится через утилиту iscontrol
    * Обновленные драйверы
    o aac(4) - добавлена поддержка контроллеров Adaptec 2610SA SATA-RAID, используемых в некоторых машинах производства Hewlett-Packard;
    o GEOM класс g_md.ko переименован в geom_md.ko
    o hptmv(4) теперь поддерживает amd64 также хорошо как и PAE.
    o mpt(4) - значительно расширены возможности, добавлены средства управления RAID разделами, возможность просмотра состояния и уровня ресинхронизации. Реализована поддержка SAS HBA, 64-bit PCI, режима пересылки больших блоков данных;
    o twa(4) - синхронизирован с последней версией драйвера с сайта 3ware. Добавлена поддержка AMCC 3ware 9650 серии SATA контроллеров.
    o umass - расширены возможности драйвера для устройств хранения данных с USB интерфейсом

    Файловые системы

    * Избавление серверной и клиентской частей NFS и pseudofs (procfs, linprocfs и linsysfs) от глобальных блокировок, что позволяет добиться значительного увеличения производительности на многопроцессорных системах.
    * Добавлена реализация файловой системы tmpfs, которая была разработана в рамках программы Google "Summer of Code" для проекта NetBSD, от куда и была портирована во FreeBSD.
    * Новая, более стабильная, реализация файловой системы unionfs;
    * Поддержка файловой системы ZFS, портированной из OpenSolaris. ZFS доступна для платформ amd64, i386 и pc98.
    * Реализация файловой системы XFS, работающей пока только в режиме чтения. Код был портирован из реализации XFS для Linux, распространяемой компанией SGI.

    Пользовательский уровень

    * Изменения в библиотеках
    o Библиотечные вызовы addr2ascii() и ascii2addr(), представленные в INRIA реализации IPv6, удалены из libc;
    o Из структуры addrinfo исключено поле ai_addrle, в целях сохранения совместимости ABI с 64-битными сборками;
    o В библиотеке libelf реализована SVR4 elf и gelf API для манипуляции ELF файлами;
    o В библиотеке libarchive добавлена поддержка ar-архивов и расширенных атрибутов файлов в стиле POSIX.1e.
    o Библиотечные вызовы семейства setenv переведены от исторического BSD варианта к POSIX.
    o В libc и libm библиотеки включена поддержка карт экспортируемых имен и версий (symbol maps, symbol version definitions).
    o Код библиотеки libedit обновлен из дерева исходных текстов NetBSD, в состоянии за август 2005 года.
    o Новая реализация malloc - jemalloc, оптимальная для многонитевых приложений;
    o Код DNS-резолвера в библиотеке libc импортирован из BIND 9.4.1;
    o В стандартной библиотеке реализована функция wcsdup().
    * Новые и удаленные утилиты:
    o ipfwpcap - утилита для захвата пакетов через divert сокет и сохранения их в формате pcap;
    o sade - наглядный редактор дисковых разделов, в стиле sysinstall.
    o nscd - новый демон для кэширования nsswitch запросов (обращение к файлам с базой пользователей, групп, /etc/services);
    o wpa_passphrase - новая утилита для генерации 256-битных WPA ключей на основе ASCII пароля.
    o Демон mrouted перемещен из базовой системы в порты (net/mrouted)
    o Удалены сопутствующие mount_* утилиты (mount_devfs, mount_ext2fs, mount_fdescfs, mount_linprocfs, mount_procfs, mount_std, mount_linsysfs, mount_reiserfs, mount_umapfs), тип файловой системы следует задавать через опцию '-t';
    o Удалены утилиты objformat и getobjformat, работающие с файлами в формате a.out;
    o Удалена программа usbd, отныне следует использовать devd;
    o Удалена утилита vnconfig(8), отныне следует использовать mdconfig;
    o Удалена утилита wicontrol, для конфигурации беспроводных интерфейсов нужно использовать ifconfig(8).
    * Измененные утилит:
    o atrun и cron - появилась поддержка PAM;
    o camcontrol - добавлена команда readcap для просмотра размера устройств;
    o dhclient - реализована поддержка RFC 3442 (опция Classless Static Route);
    o dump и restore - научились сохранять и восстанавливать расширенные атрибуты файлов;
    o fdisk - добавлен "-p" флаг для вывода информации о слайсах в формате конфигурации fdisk;
    o find - исправлена ошибка, не позволяющая использовать цифровые идентификаторы в опциях -user и -group;
    o В утилите обновления freebsd-update появилась поддержка команды "upgrade", для бинарного обновления системы до нового релиза;
    o ftpd - добавлена поддержка RFC2389 (FEAT) и RFC2640 (UTF8, включается через опцию -8);
    o gpt - добавлена поддержка установки меток на GPT дисковые разделы
    o gvinum - новая команда resetconfig;
    o hccontrol - появилась поддержка автоопределения HCI узлов;
    o В утилите id отныне EUID выводится перед номером группы;
    o mdconfig - возможность получения списка устройств (list, query) в XML формате. Добавлена опция '-u' для указания списка устройств, перечисленных через запятую;
    o mdmfs - новая опция "-P", позволяющая пропустить выполнение newfs, а также опция "-E" для указания точного пути к утилите mdconfig.
    o mount - исправлена ошибка возникающая при переводе раздела из read-only режима в read-write, посредством вызова "mount -u -o rw".
    o pkill - реализована опция "-F" для ограничения срабатывания при выборке по маске, если для PID процесса существует PID-файл. Кроме того, добавлен флаг "-i", аналогичный интерактивному режиму команды rm, т.е. перед отправкой сигнала спрашивает разрешение.
    o pw(8) новый флаг "-M", для задания прав доступа на создаваемую домашнюю директорию пользователя.
    o В rpcbind появилась возможность привязки к определенному IP (-h), в rpc.lockd и rpc.statd - изменения номера порта (-p);
    o time - отправив сигнал SIGINFO еще не завершенному time процессу, можно получить данные о статистике на текущий момент.
    o В команде top при помощи флага -j теперь можно увидеть идентификатор jail окружения в котором выполняется процесс;
    o В утилите truss реализован режим эмуляции strace (-s). Кроме того, truss больше не привязана к псевдо-ФС procfs и работает через ptrace.
    * Безопасность:
    o В gcc по умолчанию включена защита от атак направленных на переполнение стека - SSP (Stack-Smashing Protector);
    o GSS-API v2, новый уровень, поддерживающий механизм GSS-API плагинов (подобный реализации в Solaris);
    o PAM модуль pam_nologin перестал выполнять аутентификацию и теперь предназначен только для аккаунтинга. В файлах внутри директории /usr/local/etc/pam.d может потребоваться ручная замена строк вида "auth required pam_nologin.so no_warn", на "account required pam_nologin.so no_warn"
     
    1 person likes this.
  2. zythar

    zythar Elder - Старейшина

    Joined:
    16 Feb 2008
    Messages:
    517
    Likes Received:
    109
    Reputations:
    5
    * Обновление сторонних программ, входящих в базовую систему:
    o GCC обновлен до версии 4.2.1 (был 3.4.6).
    o Intel ACPI-CA 20070320.
    o awk релиз от 1 мая 2007 г.
    o BIND обновлен с версии 9.3.3 до 9.4.2.
    o BSNMPD обновлен с 1.11 до 1.12.
    o BZIP2 обновлен с 1.0.3 до 1.0.4
    o GNU Diffutils обновлены с 2.7 до 2.8.7.
    o Утилита file обновлена с 4.12 до 4.23.
    o Библиотека GNU Readline обновлена до версии 5.2 patch 2.
    o GNU версия gzip заменена BSD вариантом из проекта NetBSD.
    o IPFilter обновлен с версии 4.1.13 до 4.1.28.
    o Библиотека libpcap обновлена с 0.9.4 до 0.9.8.
    o Утилита netcat и пакетный фильтр PF обновлены до версий из состава OpenBSD 4.1;
    o Библиотека OpenSSL обновлена до версии 0.9.8e (была 0.9.7e).
    o sendmail обновлен с версии 8.13.8 до 8.14.2.
    o Обновлен пакет TrustedBSD OpenBSM с альфа версии до релиза 1.0.

    Интересные подробности, касающиеся FreeBSD 7, можно почерпнуть из подробного интервью с разработчиками. Например, подробно рассказано, как удалось увеличения производительности TCP стека в 3-5 раз, что дает возможность справляться с нагрузкой на 1 и 10 гигабитных линках. Этого удалось достигнуть благодаря средствами автовычисления размера TCP буферов, реализации параллельного выполнения операций с SYN-кэшем, новой реализации системного вызова sendfile(2), перехода с socopyin() на m_uiotombuf(),добавления дополнительного указателя на следующий блок отправляемых данных в цепочке mbuf, уменьшения накладных расходов и переключений контекста при обработке пакетов приходящих из сетевой карты.

    http://www.opennet.ru/opennews/art.shtml?num=14429
     
  3. $n@ke

    $n@ke Elder - Старейшина

    Joined:
    18 Sep 2006
    Messages:
    697
    Likes Received:
    404
    Reputations:
    134
    whatsnew.txt

    ппц((

    как небыло норм слойта рутового под >4.5. так наверн и не бует(