Анонсирован релиз FreeBSD 7.1. Обзор новшеств

05.01.2009 07:46

Официально вышел релиз FreeBSD 7.1, в котором представлены следующие ключевые новшества:

  • Планировщик ULE теперь используется по умолчанию на платформах amd64 и i386;
  • Поддержка инфрастуктуры динамической отладки DTrace, портированой из OpenSolaris. Добавление утилиты dtrace(1) для управления;
  • В ядро добавлена реализация клиентской части функциональности rpc.lockd, используемом для организации блокировок в NFS. Реализация поддерживает восстановление состояния блокировок на стороне клиента после рестарта NFS сервера, а также гарантированный сброс кэша перед установкой блокировки, что позволяет нескольким клиентом устанавливать файловые локи при одновременном использовании данных. Возможность включается через опцию NFSLOCKD в конфигурации ядра, если ядро пересобрано с поддержкой NFSLOCKD процесс rpc.lockd автоматически это определяет и начинает использовать;
  • Реализована возможность загрузки FreeBSD с дисков, снабженных GPT (GUID Partition Table) вместо MBR (добавление загрузчика gptboot). BTX-ядро, используемое загрузчиком, теперь поддерживает загрузку с USB устройств, благодаря поддержке обращения к функциям BIOS;
  • Добавлена утилита cpuset(2), служащая для управления привязкой выполнения приложения к определенному CPU и группировки процессорных ресурсов;
  • Поддержка множественных таблиц маршрутизации (Multi-routing-table). Число независимых таблиц маршрутизации задается при сборке ядра, через опцию "options ROUTETABLES=N", где N число таблиц. Управление производится посредством утилиты setfib (fib - Forwarding Information Base), а также две дополнительных конструкции для ipfw: "setfib N ip from anay to any" и "count ip from any to any fib N". Например, для задействования таблицы номер 3 для заданной программы (в примере - ping), можно использовать: "setfib -3 ping target.example.com". Нововведение позволяет организовать "policy based routing", т.е. маршрутизацию отправки пакета не только в зависимости от адреса получателя, путем определения правил в соответствии с которыми к пакету будет применена одна из альтернативных таблиц маршрутизации. В качестве одного из частных случаев применения технологии, также можно упомянуть привязку отдельной таблицы маршрутизации к Jail окружениям.
  • Для сборок amd64 и i386 подготовлен установочный DVD-диск.

Другие изменения относительно версии 7.0:

  • Устранены уязвимости, обнаруженные с момента релиза FreeBSD 7.0 в феврале 2008 года (были исправлены в patch-выпусках):
  • Ядро
    • Добавлен идентификатор CLOCK_THREAD_CPUTIME_ID;
    • В отладчике ddb(4) команда /S заменена командой capture. Добавлена команда show conifhk.
    • В системный вызов fcntl добавлена константа F_DUP2FD ( аналог dup2(fd, arg) ).
    • В модуль реализации Linux ABI linux(4) добавлены системные вызовы cpuset_getaffinity(2) и cpuset_setaffinity(2) для привязки процесса к CPU;
    • Добавлена утилита textdump для получения отладочной информации от ядра в удобочитаемом виде.
    • В функцию wait4(2) добавлены опции WNOWAIT и WSTOPPED.
    • Привязка прерываний к CPU на платформах amd64, i386, sparc64,
    • Добавлены sysctl kern.features.compat_freebsd[456] для включения режима совместимости с предыдущими версиями системы.
  • Поддержка оборудования
    • Добавлен драйвер cmx(4) с поддержкой Omnikey CardMan 4040 PCMCIA smartcard reader;
    • Поддержка драйвера kbdmux(4) на платформе sparc64;
    • Модули nvram(4) и fdescfs(5) модифицированы для корректной работы на многопроцессорных системах (MPSAFE);
    • Из драйвера puc(4) удалена опция PUC_FASTINTR;
    • В драйвере psm(4) изменено обнаружение тачпадов Synaptics;
    • Из OpenBSD портирован драйвер с поддержкой USB serial адаптеров, основанных на чипов Silicon Laboratories CP2101/CP2102.
    • Мультимедиа
      • В драйвер agp(4) добавлена поддержка карт Intel на чипах G33/G45;
      • Добавлен драйвер dpms(4) для обеспечения поддержки засыпания/возобновления работы внешних дисплеев;
      • DRM драйвер теперь поддерживает видеокарты Intel на базе i915 GME;
    • Сетевые платы
      • В драйвер ale(4) добавлена поддержка контроллеров Atheros AR8121/AR8113/AR8114 Gigabit/Fast Ethernet. По умолчанию драйвер не активирован в GENERIC ядре;
      • Драйвер em (Intel PRO/1000 Gigabit Ethernet) разбит на два драйвера: в em(4) оставлена поддержка чипов 82575, а в новом драйвере igb(4) реализована поддержка более новых устройств;
      • Улучшения в драйверах сетевых адаптеров hme(4), sf(4), vr(4), wpi(4);
      • Обновление драйвера ixgbe(4) до версии 1.6.2 от Intel;
      • Исправление проблемы с авто-согласованием в некоторых PHY в модуле miibus(4);
      • Добавление временного решения по проблеме некорректного расчета контрольных сумм для фреймов небольшого размера в драйвере msk(4);
      • Улучшения в драйвере ndis(4);
      • Реализация поддержки Wake On LAN в драйвере stge (Sundance/Tamarack TC9021 Gigabit Ethernet).
      • Добавлен драйвер ae с поддержкой Attansic/Atheros L2 FastEthernet;
      • Добавлен драйвер jme с поддержкой PCI адаптеров, основанных на JMicron JMC250 Gigabit Ethernet и JMC260 Fast Ethernet; age(4) driver has been added to provide support for Attansic/Atheros L1 gigabit Ethernet controller.
      • Добавлен драйвер malo с поддержкой сетевых адаптеров Marvell Libertas 88W8335;
      • Добавлен драйвер bm с поддержкой Apple Big Mac (BMAC) Ethernet;
      • Добавлен драйвер et с поддержкой Agere ET1310 10/100/Gigabit Ethernet.
    • Системы хранения и диски
      • Возможность сборки в виде модулей модулей ядра geom_part () и geom_linux_lvm (GEOM модуль для доступа к LVM2, менеджеру логических томов Linux);
      • Поддержка дисковых массивов объемом более 2TB в драйвере aac(4);
      • В драйвер ata(4) добавлена поддержка sysctl hw.ata.ata_dma_check_80pin, включающая проверку на наличие кабеля с 80 разъемами. Исправлена проблема с чипсетом ServerWorks HT1000;
      • В драйвере ciss(4) устранена проблема ADAPTER HEARTBEAT FAILED;
      • Улучшения стабильности в драйверах iir(4) и twa(4);
      • В драйвер mpt(4) добавлена структура mpt_user типа mpt_user_personality ;
      • Удаление драйвера rr232x(4) в пользу нового hptrr(4).
  • Сетевая подсистема
    • Добавление ключевых слов reject/blackhole в утилиту arp(8);
    • В модуль bpf(4) добавлен ioctl BIOCSETFNR, позволяющий вставить фильтр для отсеивания не интересующих администратора пакетов;
    • В модуль if_bridge(4) добавлен параметр ifmaxaddr, ограничивающий максимальное число MAC;
    • Улучшение стабильности модуля carp(4) (поддержка протокола CARP);
    • Добавление в модуль dummynet(4) поддержки режима быстрого пропуска пакетов в обход dummynet-планировщика, в моменты когда интенсивность контролируемого потока не превышает установленной полосы пропускания. Возможность включается через sysctl переменную net.inet.ip.dummynet.io_fast;
    • Добавление нового sysctl, позволяющего выбрать внутренний/внешний заголовок для файрволла или bpf(4), используя утилиту enc(4);
    • Добавление поддержки ключа GRE для исходящих пакетов в модуль gre(4);
    • Исправление проблем с PMTU в подсистеме ipsec(4);
    • Удаление сетевой подсистемы netatm в виду отсутствия интереса к ней разработчиков;
    • Добавление поддержки перенеправлений (static NAT) в модуль ng_nat(4);
    • Добавление поддержки нескольких хуков в модуль ng_pptpgre(4);
    • В библиотеку resolver(3) добавлена поддержка символа подчеркивания;
    • Добавлена опция TCP_CONGESTION для TCP сокета;
    • В различных частях сетевого стека теперь используется функция блокировки rwlock(9).
  • Файловые системы
    • Добавление поддержки дисковых меток BSD и VTOC8 в утилиту gpart(8);
    • Поддержка параметра volume при создании набора в gvinum(8);
    • Устранена проблема поиска пути UNIX-сокета в unionfs(7);
    • От глобальных блокировок избавлен код fdescfs(5) (file-descriptor file system), помеченный теперь как MPSAFE.
  • Утилиты пользовательского уровня
    • Добавление команды spindown в утилиту atacontrol(8), позволяющей задать таймаут, по истечении которого будет остановлено вращение дисков.
    • Добавление ключей -v, -f, -h в утилиту chflags(1).
    • В команде cp(1) устранена проблема с ACL. Добавлен ключ -a - архивый режим, аналог -RpP.
    • Добавление ключа -m в демон cron(8), позволяющего переопределить адрес электронной почты для отправки уведомлений.
    • В утилиту dhclient(8) добавлены дополнительные функции и исправлена ошибка обработки маршрута по умолчанию. Добавлена функция is_default_interface()
    • Улучшено определение неустановленных переменных в окружении пользователя ( environ(7) ).
    • В утилиту fdisk(8) добавлен ключ -q, подавляющий отладочные сообщения.
    • Утилита fetch(1) обрабатывет значение переменной окружения NO_PROXY, позволяющей отключить использование прокси-сервера.
    • В стандартную библиотеку добавлены функции ffsll(3) и flsll(3) для поиска первого и последнего битов в строке.
    • В утилите fortune(6) устранена ошибка, возникавшая при использовании ключа -e. Добавлена переменная окружения FORTUNE_PATH для поиска fortune-файлов.
    • В файл freebsd-update.conf(5) добавлен параметр IDSIgnorePaths, позволяющий задавать пути, которые freebsd-update IDS следует игнорировать.
    • Добавление ключа -f node в утилиту fwcontrol(8) - позволяет задать узел, который будет корневым при следующем сбросе шины данных.
    • Добавление поддержки ключа -mcpu в gcc(1) на платформе sparc64.
    • Поддержка ZFS в утилите gpt(8).
    • В ifconfig(8) добавлена поддержка WPS IE.
    • Добавление команд add-kld и tid в kgdb(1). Поддержка kld бэкенда shared-lib.
    • Добавлена функция kvm_getcptime(3) - получение глобальной статистики по времени загрузки CPU.
    • В библиотеку libalias добавлена поддержка FTP команд PORT/EPRT в нижнем регистре.
    • Поддержка man-страниц, сжатых bzip2, утилитой man(1).
    • Добавление ключа -v в mdconfig(8) - вывод подробных сообщений.
    • Добавление функции memrchr(3) в стандартную библиотеку - поиск байта в строке.
    • Исправление грамматической ошибки в утилите morse(6).
    • Добавление ключа -h в mountd(8) - указание ip-адреса, на котором запускать демон.
    • Добавление ключа -L в moused(8) - управление скоростью скроллинга указателя мыши.
    • Улучшение соответствия стандарту POSIX в команде mv(1).
    • В систему сценариев periodic(8) добавлен сценарий daily_status_mail_rejects_shorten.
    • В утилите ping6(8) изменен минимальный допустимый интервал, изменен exit-статус, добавлены ключи -o, -r, -R.
    • Добавление ключа -D в демон rfcomm_pppd(8) - регистрация DUN наряду с LAN при работе в режиме сервера.
    • Добавление профилей NAP, GN, PANU в демон sdpd(8).
    • В утилиту setkey(8) добавлена поддержка ключевого слова esp.
    • Исправление работы telnetd(8), запущенного с ключем -a off.
    • Добавление ключа -P в команды top(1) и vmstat(8) - вывод статистики по каждому CPU.
    • Добавление в команду traceroute(8) ключа -a для поиска по номеру AS.
    • Добавление в стандартную библиотеку функций uuid_{enc,dec}_{be,le}(3).
    • Добавление поддержки более чем 10 устройств snp(4) в команду watch(8).
    • Добавление ключа -P для демона ypserv(8), позволяющего указать номер порта для принятия соединений;
  • Скрипты инициализации
    • Добавление в rc.conf параметра dummynet_enable (для подключения модуля dummynet(4) при загрузке);
    • Исправление ошибки в сценарии rc.d/ntpd, проявлявшейся при отсутствии файла конфигурации;
    • RC-скрипт ppp теперь поддерживает конфигурацию нескольких линков, через переменную ppp_profile;
    • В RC-скрипте sysctl реализована загрузка настроек из файла /etc/sysctl.conf.local в дополнение к /etc/sysctl.conf;
    • В rc.conf теперь можно конфигурировать сетевые интерфейсы и подсети с привязкой к группе правил пакетного фильтра, определенных в rc.firewall, когда переменная firewall_type установлена в simple или client. Подробнее см. описание переменных firewall_client_net, firewall_simple_iif, firewall_simple_inet, firewall_simple_oif и firewall_simple_onet.
  • Обновление сторонних программ, входящих в базовую систему:
    • Пакет am-utils обновлен до версии 6.1.5;
    • DNS сервер ISC BIND обновлен до версии 9.4.2-P2;
    • awk обновлен с версии от 1 мая 2007 до релиза от 23 октября 2007 года;
    • bzip2 обновлен с 1.0.4 до 1.0.5;
    • CVS обновлен до версии 1.11.22.1;
    • hostapd обновлен до версии 0.5.10 + добавлена поддержка radius ACL;
    • Библиотека libarchive обновлена до версии 2.5.5;
    • Библиотека ncurses обновлена до версии 5.6-20080503;
    • NTP обновлен до версии 4.2.4p5;
    • Пакет OpenPAM обновлен до релиза "Hydrangea";
    • OpenSSH обновлен с версии 4.5p1 до релиза 5.1p1.
    • sendmail 8.14.2 заменен на версию 8.14.3;
    • wpa_supplicant обновлен до версии 0.5.10 + добавлена поддержка syslog;
    • В портах поддерживаемая версия GNOME (x11/gnome2) обновлена с 2.20.1 до 2.22.3, KDE (x11/kde3) с 3.5.8 до 3.5.10.