Linux (/ˈlɪnʊks/) — UNIX-совместимое ядро операционной системы, разработка которого была начата финским студентом Линусом Торвальдсом в 1991 году.
В большинстве своём код написан на Си с некоторыми расширениями GNU C и на ассемблере (с использованием синтаксиса GNU Assembler AT&T).
Распространяется в основном свободно на условиях GNU General Public License.
Торговая марка Linux зарегистрирована на Линуса Торвальдса.
Ядро Linux поддерживает многозадачность, виртуальную память, динамические библиотеки, отложенную загрузку, производительную систему управления памятью и многие сетевые протоколы.
На сегодняшний день Linux — монолитное ядро с поддержкой загружаемых модулей. Драйверы устройств и расширения ядра обычно запускаются на «кольце 0», с полным доступом к оборудованию. В отличие от обычных монолитных ядер, драйверы устройств легко собираются в виде модулей и загружаются или выгружаются во время работы системы.
То, что архитектура Linux не является микроядерной, вызвало обширнейшие прения между Линусом Торвальдсом и Эндрю Таненбаумом в конференции comp.os.minix(англ.) в 1992 г.
Linux распространяется на условиях лицензии GNU General Public License, то есть свободно. Эту лицензию выбрал Линус Торвальдс практически сразу после того, как стало понятно, что его хобби начало получать распространение по всему миру. Обладателем торговой марки Linux™ является Линус, а помогает следить за соблюдением его прав и условий GPL Фонд свободного программного обеспечения. Материал из Википедии — свободной энциклопедии
Линус Торвальдс объявил в списке рассылки Linux ядра о выходе релиза 2.6.29. В новое ядро принято около 12.5 тысяч исправлений от 1376 разработчиков, размер патча - 69Мб (добавлено 1 358 216 строк кода, удалено - 542 981).
Основные изменения:
Поддержка переключения видеорежимов на уровне ядра (kernel mode-setting), например, позволит добиться загрузки системы без дополнительного моргания экрана. Также более не требуется запуск X сервера под правами супер-пользователя. На данный момент поддерживаются только видеоадаптеры от Intel;
Добавлена реализация экспериментальной файловой системы Btrfs - прямой конкурент FS ZFS от компании Sun. Btrfs в будущем может выступить в роли замены ext3/4;
Файловая система Squashfs 4.0, работает только в режиме чтения, поддерживает 64-битные индексы. Может использоваться для формирования образов LiveCD дистрибутивов. В будущем планируется добавить поддержку LZMA сжатия;
Поддержка беспроводных сетей стандарта WiMAX (IEEE 802.16). Драйверы доступны для USB/SDIO карт Intel Wireless WiMAX/Wi-Fi Link 5x50;
Шифрование имён файлов в файловой системе eCryptfs;
Замораживание файловой системы посредством IOCTL вызова, что позволяет делать "снимки" файловой системы со временной блокировкой операций записи. Может применяться для организации бэкапов, упрощения перехода в спящий режим, остановки виртуальных окружений для последующей миграции;
Улучшено управление памятью и разделом подкачки (SWAP): теперь поддерживается точное выделение памяти для процессов, объединенных в одной cgroup (для виртуализации и контейнеров);
Файловую систему ext4 теперь можно использовать без журнала, что значительно повышает её скорость (в таком режиме она почти всегда быстрее ext2);
Добавлено большое количество переходных (экспериментальных и плохо оттестированных) драйверов, которые размещены отдельно, их можно найти в директории Staging;
На время только этого релиза Линус поменял привычный всем Tux (пингвин) на заставке, на вымирающее животное под названием Тасманский Дьявол.
Поддержка 32-битного PIO режима, который позволяет в два раза увеличить скорость обмена данными;
Полностью убрана IDE-SCSI эмуляция;
Добавлена поддержка SATA контроллера VIA VT8261, IDE контроллера IT8172, сетевых карт SMSC LAN911x/LAN921/LAN9420, KS8695, беспроводных карт Atheros AR9285, Broadcom BCM50610.
Добавлено много новых драйверов для звуковых и V4L/DVB карт;
Асинхронные функции для отложенной инициализации и опроса устройств. Использование данного API позволит значительно ускорить загрузку ядра;
Асинхронное автовыключение и включение (неиспользуемых) USB устройств;
Для кластерной файловой системы OCFS2 (Oracle Cluster File System) добавлена возможность учета контрольных сумм и ЕСС для обеспечения целостности мета-данных;
В беспроводном стеке mac80211 появилась поддержка работы в режиме точки доступа. При этом координирование производится через демон hostapd, а настройка через утилиту cfg80211.
Линус Торвальдс представил новый релиз Linux ядра - 2.6.30. В новое ядро принято более 13 тысяч исправлений от 1334 разработчиков, размер патча - 63Мб (добавлено 1 096 994 строк кода, удалено - 470 555).
В код ядра 2.6.30 добавлено несколько существенных улучшений, связанных с файловыми системами и хранилищами данных:
Файловая система NILFS2, разработанная в недрах японской телефонной компании NTT, как система особо устойчивая к сбоям. Для хранения всех данных в NILFS2 используются подобные логам структуры, в которых только добавляются новые записи и никогда не переписываются активные. Таким образом оборванная крахом операция записи, никак не отразится на целостности хранимых данных. В NILFS используются B-tree деревья и 64-битные структуры данных, поддерживается возможность фиксации снапшотов (контрольных точек в логе) для просмотра состояния данных на определенный момент времени. Более того с данными в снапшотах можно продолжать работать как с альтернативной веткой ФС, существующей параллельно.
Файловая система Exofs (старое название osdfs), разработанная Avishay Traeger из IBM и представляющая собой вариант файловой системы ext2, адаптированный для работы с новым типом хранилищ объектов OSD (Object-based Storage Device). OSD представляет новый уровень абстракции при размещении информации, вместо линейной последовательности секторов в блочном устройстве (массив), представлена идея хранения объекта как единого целого. Exofs поддерживает протокол T10 OSD (расширение к SCSI), который позволяет передавать данные не блоками, а объектами (целыми файлами), при раздельной передаче данных и метаданных. Для экспериментов можно использовать тестовый OSD Initiator, хранящий данные в БД SQLite или симулятор OSD накопителя.
fscache/cachefiles - разработанная в Red Hat универсальная инфраструктура для организации кэширования в локальной файловой системе данных, передаваемых через сетевые файловые системы, подобные NFS и AFS.
В экспериментальном режиме ("staging") в состав ядра включен код высокопроизводительной распределенной сетевой файловой системы POHMELFS и устройства DST, представляющего собой драйвер сетевого устройства транспортного уровня для организации распределенных хранилищ данных, функционирующего в ядре на уровне блочного устройства, работающего поверх нескольких машин в сети (ближайшие аналоги - DRBD, iSCSI и NBD). Системы разработаны Евгением Поляковым.
Добавлены патчи улучшающие работу файловых систем btrfs, reiserfs, ext3, ext4. В состав включен патч к файловой системе ext4 с решением проблемы с потерей данных в файлах, перезаписываемых незадолго до момента краха системы. В патче представлен новый режим монтирования "auto_da_alloc", меняющий поведение отложенной записи данных при выполнении функций close и rename;
Начальная поддержка NFS 4.1, уже реализована поддержка сессий, но интеграция кода Parallel NFS ожидается только в будущих версиях.
В MD реализации программного RAID добавлена поддержка дополнительного контроля целостности данных, добавлены средства для преобразования raid6 в raid5 и реализована поддержка создания RAID6 поверх RAID5, RAID4 поверх RAID5 и RAID5 поверх RAID1. В DM (device mapper) появилась поддержка механизма "барьеров", который позволяет обеспечить неизменность некоторых запросов в очереди ввода/вывода для корректной фиксации транзакций ФС;
Другие заметные улучшения:
Существенно переработана поддержка спящего и ждущего режима (suspend/resume), особенно в плане поддержки временной остановки во многих драйверах устройств;
Поддержка протокола RDS (Reliable Datagram Sockets), предназначенного для высокоскоростного обмена сообщениями между узлами в кластере, с минимальной задержкой и гарантированной доставкой. Код предоставлен компанией Oracle;
Реализована поддержка модулей безопасности TOMOYO Linux, по сути очень похожих на AppArmor, также привязывающих политику безопасности процесса к файловому пути, но реализованные концептуально более правильно (патч с AppArmor ранее был отвергнут для включения в Linux ядро);
IMA (Integrity Management Architecture) - инфраструктура контроля целостности исполняемых файлов, созданная разработчиками IBM как дополнение средств SELinux и Slim возможностью защиты в офлайн режиме (например, когда злоумышленник получает доступ загрузившись со своего LiveCD). Новая система позволяет исполнять только файлы, имеющие корректную цифровую подпись, при изменении или замене файла его выполнение будет блокировано;
Реализована поддержка чернового варианта будущего стандарта IEEE 802.11w, определяющего некоторые новые технологии для повышения безопасности передачи управляющей информации в беспроводных сетях;
Добавлены системные вызовы preadv() и pwritev(), имеющиеся в BSD-системах;
Расширена поддержка нового оборудования, в комплект включено много новых драйверов устройств (особенно WiFi), код звуковой системы ALSA обновлен до версии 1.0.19. В беспроводном стеке улучшена поддержка режимов энергосбережения, представленных в современных Wifi картах;
Обработчики прерываний переведены на многопоточную систему работы, что позволит существенно повысить отзывчивость системы за счет ухода от блокировок;
Добавлены дополнительные патчи, позволяющие уменьшить время загрузки ядра за счет асинхронной инициализации некоторых подсистем и аппаратных устройств, разработанные в рамках проекта Moblin.
Добавлен DRM (Direct Rendering Manager) модуль для видеокарт ATI R600/700;
Поддержка сжатия собранного образа ядра методами LZMA и BZIP2;
В сетевую подсистему принят патч, позволяющий организовать обработку более 64 тысяч одновременных соединений через один bind() с указанием нулевого порта (номер порта будет выбран из группы доступных локальных адресов);
Добавлена поддержка архитектуры MicroBlaze (софт-процессоры на базе Xilinx FPGA), обновлена input-прослойка, улучшен код загрузки прошивок (firmware), добавлен драйвер intel для организации виртуальных сетей.
Среди многочисленных исправлений ошибок, устранено как минимум три уязвимости. Для защиты от недавно появившегося в сети эксплоита, позволяющего локальному пользователю повысить свои привилегии в системе, при сборке теперь задействован флаг '-fno-delete-null-pointer-checks', запрещающий оптимизатору GCC удалять некоторые явно заданные проверки NULL указателей. ChangeLog_http://www.kernel.org...geLog-2.6.30.2 Patch (~50 Kb)_http://www.kernel.org...h-2.6.30.2.bz2 Downloads (~56,7 Mb)_http://www.kernel.org...6.30.2.tar.bz2
Линус Торвальдс объявил в списке рассылки Linux ядра о выходе релиза 2.6.31. В новое ядро принято около 12 тысяч исправлений от 1356 разработчиков, размер патча - 57Мб (добавлено 923 тыс. строк кода, удалено - 513 тыс.). 70% всех изменений связано с инфраструктурой драйверов и еще 6% связано c прошивками (firmware) и звуковой подсистемой, что значительно больше неформального баланса "50% изменений в драйверах и 50% во всем остальном". Примерно 11% изменений имеют отношение к поддержке различных аппаратных архитектур (ARM, mips, powerpc, sh, x86) и примерно столько же приходится на код, обеспечивающий работу файловых систем.
Основные новшества:
Поддержка USB 3.0 и хост-контроллеров, соответствующих спецификации xHCI 0.95 (eXtensible Host Controller Interface). Стандарт USB 3.0 определяет в качестве максимальной скорости передачи данных через USB интерфейс - 4.8 гигабит в сек., что в 10 раз быстрее USB 2.0;
CUSE - расширяет возможности FUSE поддержкой создания драйверов символьных устройств (например, драйверов для звуковых карт), работающих на пользовательском уровне. Одним из первых проектов использующих CUSE является OSS Proxy, универсальный эмулятор звуковых устройств, позволяющий пробрасывать звук поверх сети на звуковую карту другой машины или организовать более полный уровень совместимости OSS-приложений с звуковой подсистемой ALSA, позволяющий в один и тот же момент использовать интерфейсы OSS (/dev/dsp, /dev/adsp и /dev/mixer) и ALSA;
Проведена работа по улучшению отзывчивости системы при выполнении типовых десктоп операций в условиях нехватки оперативной памяти. Удалось добиться уменьшения на 50% числа запросов, попадающих на вытесненные в раздел подкачки страницы памяти, и на 1/3 уменьшить число обращений к свопу (pswpin), что продемонстрировало в тестах увеличение интерактивности при работе с десктопом примерно в два раза;
Включение в состав KMS (Kernel Mode Setting) модуля для манипулирование видеорежимами на уровне ядра для карт ATI Radeon. В настоящий момент поддерживаются карты R1XX,R2XX,R3XX,R4XX,R5XX, в скором времени ожидается поддержка карт R6XX, R7XX (HD2XXX - HD4XXX) и более новых;
Добавлена подсистема Performance Counter, позволяющая задействовать для выявления узких мест, отладки и профилирования специальных "PERFMON" регистров, доступных в современных CPU (например, Intel Core 2). Регистры PERFMON могут отразить такие статистически данные, как число выполненных инструкций, распределение попаданий данных во внутренний кеш, качество работы предсказательной логики CPU. Достоинство задействования аппаратных счетчиков производительности в возможности проведения операции профилирования без использования ptrace и без замедления работы на выполнение сопутствующих вычислений. Для управления представлена специальная утилита perf, поддерживающая в числе прочего и top-подобный формат вывода текущей статистики;
Поддержка стандарта IEEE Std 802.15.4, определяющего низкоскоростной (до 250 Кб в сек), но энергоэффективный метод беспроводной передачи данных на небольшие расстояния (около 10 метров). Основное назначение - беспроводное соединение различных датчиков, переключателей и устройств автоматизации;
Предварительная поддержка работы в режиме NFS 4.1 клиента;
Улучшение средств по выявлению ошибок в ядре:
Kmemcheck - механизм для выявления фактов некорректной работы Linux ядра с памятью, позволяющий выявить неинициализированные области выделенной через kmalloc памяти. Kmemcheck осуществляет мониторинг всех операций записи и чтения, сохраняя в логе все факты чтения блоков памяти, в которые до этого не производилась запись;
Kmemleak - механизм для определения утечек памяти в Linux ядре. Используется метод похожий на применяемый в системе Valgrind;
Поддержка использования утилиты gcov из состава GCC для кода Linux ядра. Gcov позволяет проанализировать частоту выполнения различных участков кода и выявить блоки которые можно подвергнуть оптимизации;
Новый Firewire стек переведен в разряд базового стека. Ранее Firewire стек имел экспериментальный статус и разрабатывался в качестве замены для стека ieee1394. Кроме того, в ядре 2.6.31 добавлена поддержка проброса IPv4 поверх Firewire;
Значительное расширение поддерживаемого оборудования, например, добавлен новый беспроводной драйвер iwmc3200wifi для карт Intel Wireless Multicomm 802.11;
fsnotify - новая реализация механизма для слежения за событиями в файловой системе, представляющая собой переработанный вариант inotify и dnotify, основанный на использовании новой инфраструктуры нотификации в VFS;
Внесен ряд cущественных улучшений в код файловых систем Btrfs и Ext4.
Этот выпуск получился большим. В действительности большим. Значительное число вещей пришлось частично переделывать просто для того, чтобы они снова заработали. Например прослойку виртуальных терминалов (tty layer). Надеюсь, любой теперь сможет вновь использовать USB для последовательных устройств без опасности получить oops. Xen и KVM получили ряд значительных исправлений, равно как и драйвера ath5k и iwlwif. Кое-кто может сказать, что список исправлений для драйверов iwlwifi слегка длинноват для "стабильного" кода, но ответственный за wifi пожелал их внести и сможет с ними справиться. Кроме того, значительные улучшения сделаны в драйвере XHCI (контроллер USB 3.0) для приведения его в рабочую форму, согласованною с инструментарием разработчика USB 3.0. Если бы эти изменения не были сделаны, он не был бы реально полезен. Ну и помимо всего этого сделана еще куча изменений, не буду уточнять каких. А новостью для любителей тестов производительности будет большое число изменений, значительно ускоряющих работу системы на "больших" компах. ChangeLog_http://www.kernel.org...geLog-2.6.31.2 Patch (~79 Kb)_http://www.kernel.org...h-2.6.31.2.bz2 Downloads (~58,7 Mb)_http://www.kernel.org...6.31.2.tar.bz2
Исправлено 39 ошибок, которые затронули подсистемы: ax25, sky2, tcp, TUN, ACPI, sis5513, KVM (5 исправлений), ASoC, libata, ALSA, tty и т.д. Кроме того, исправлена DoS уязвимость в подсистеме AppleTalk, отправив большое количество специально оформленных AppleTalk-IP дейтаграмм злоумышленник может исчерпать всю доступную системе память. Changelog_http://www.kernel.org...geLog-2.6.31.4 Patch (~89 Kb)_http://www.kernel.org...h-2.6.31.4.bz2 Downloads (~58,7 Mb)_http://www.kernel.org...6.31.4.tar.bz2
В новое ядро принято 11838 исправлений от 1435 разработчиков, размер патча - 63Мб (добавлено 1.1 млн. строк кода, удалено - 541 тыс.). В анонсе новой версии с иронией отмечается, что основным отличием от версии 2.6.31 является отсутствие добавления в комплект новой файловой системы. Тем не менее в код файловой системы btrfs и в код подсистемы работы с блочными устройствами внесено много существенных изменений.
Около 70% всех представленных в 2.6.32 изменений связаны с драйверами устройств, примерно 10% изменений имеют отношение к обновлению firmware, еще 10% связаны с обновлением кода специфичного для аппаратных архитектур (ARM, MIPS, POWER, SH, x86, SCore), 5% изменений связано с документацией, а остальное с сетевым стеком, файловыми системами (ocfs2, btrfs, nfs, nilfs, xfs, gfs2, ext4) и другими подсистемами.
Основные новшества:
Дисковая подсистема, ввод/вывод и файловые системы:
Переписана система writeback-кэширования (отложенная запись), которая теперь работает с привязкой к отдельным блочным устройствам, а не в виде единого для всех устройств кэша. Нововведение особо заметно при записи больших файлов в системах с несколькими дисками, например, при записи файла размером 32 Гб на системе с 5 SATA дисками прирост производительности файловой системы XFS составил 40%, а Btrfs - 26%. При обычной нагрузке многопользовательской системы средний прирост производительности составляет 8%;
В состав ядра включен новый оптимизированный вариант планировщика ввода/вывода CFQ (Completely Fair Queuing), увеличивающего отзывчивость системы при большой дисковой нагрузке;
Для оптимизации работы в условиях обработки большого числа прерываний, для блочных устройств представлен NAPI-подобный (device polling, когда драйвер периодически забирает накопившиеся запросы, без генерации прерываний) режим работы, позволяющий снизить нагрузку на CPU (тесты продемонстрировали снижение нагрузки на 40%);
В файловой системе 9p (Plan9) появилась поддержка кэширования;
В реализации RAID6 появилась поддержка асинхронного режима восстановления;
Оптимизирована операция поиска свободных inode в XFS. Для больших файловых систем выполнение операций выделения дискового пространства теперь происходит в 3-4 раза быстрее;
Добавлена реализация файловой системы devtmpfs (создает иерархию /dev в памяти через tmpfs, что позволяет начать работать с /dev еще до монтирования корня), известной также под именем Devfs 2.0;
Улучшена реализация файловой системы Btrfs: добавлены средства для корректной обработки ситуации переполнения дисковых разделов, устранены проблемы при удалении снапшотов и подразделов (subvolume), проведена оптимизация производительности (например, скорость потоковой передачи на мощных системах возросла с 400MB/s до 1GB/s);
Память
Существенные улучшения отмечены в организации работы виртуальной памяти;
Интегрирован менеджер памяти KSM ("Kernel Samepage Merging"), осуществляющий сканирование на предмет использования разными процессами идентичных по содержанию областей памяти и их объединение в один блок;
Добавлен новый механизм для задания мягких ограничений ("soft limits") размера выделяемой для программ памяти. Пока в системе достаточно свободной памяти - ограничение не срабатывает, но как только стала ощущаться нехватка - процесс будет жестко ограничен;
Оборудование и аппаратные архитектуры
Добавлен DRM-модуль Radeon с поддержкой 3D, tv-out и переключения видеорежимов на уровне ядра (KMS) для видеокарт ATI R600/700. Расширены функции экономии энергии в DRM модуле для карт Intel, возобновлена сломанная ранее поддержка GPU серии 8xx, добавлена поддержка чипсета B43;
Поддержка управления питанием устройств на лету, позволяет в процессе работы автоматически переводить устройства ввода/вывода в энергосберегающий режим, после определенного периода неактивности;
Поддержка аппаратной архитектуры S-core, поддерживающей 16, 32- и 64-разрядные наборы инструкций. Как правило S-core используется в игровых приставках и LCD TV;
Компания Intel представила код с реализацией поддержки нескольких своих технологий: Intel Moorestown (LPIA - Low Power Intel Architecture), SFI (Simple Firmware Interface) и ACPI 4.0.
Виртуализация
В экспериментальном режиме (Staging) добавлен паравиртуальный драйвер для работы под управлением системы виртуализации Microsoft Hyper-V;
Расширение возможностей системы виртуализации KVM: новый высокопроизводительный менеджер ввода/вывода ioeventfd, поддержка технологии подстановки виртуальных прерываний (irqfd), режим эмуляции syscall/sysenter для упрощения миграции с других систем виртуализации, поддержка x2apic (увеличивает производительность на SMP системах);
Разное
В состав ядра включен код для поддержки технологии Intel Trusted Execution, использующей аппаратные возможности современных CPU для создания дополнительного уровня изоляции при выполнении программ;
Подсистема "Performance Counters" переименована в "Performance Events". Добавлено много новых возможностей, таких как точки трассировки (perf tracepoints), возможность анализа работы планировщика задач, поддержка в пользовательской утилите генерации наглядных диаграмм;
Вышли обновленные версии Linux ядра: 2.6.32.1 и 2.6.31.8, в которых внесено большое количество исправлений в работе файловой системы ext4, в том числе устранены серьёзные ошибки безопасности:
Ошибка проверки прав доступа при обработке IOCTL "EXT4_IOC_MOVE_EXT" может быть использована для перезаписи файлов с root привилегиями через отправку специально оформленного IOCTL запроса.
Ошибка в функции "ext4_fill_flex_info()" может привести к делению на ноль при монтировании специально оформленного образа файловой системы;
Ошибка в функции "ext4_decode_error()" может привести при монтирования специально скомпонованной ФС к разыменованию NULL указателя и организации выполнения кода злоумышленника с повышенными привилегиями.
В новой версии внесено около 150 исправлений, затронувших такие подсистемы, как ipw2100, drm/i915, ath9k, dm crypt, tcp, Xen, NFS, USB, KVM, ALSA. Downloads (~38 Kb)_http://www.kernel.org...3-rc1-git1.bz2
В ядре 2.6.32.4 исправлено более 50 ошибок - изменения затронули: Intel DRM, драйверов WiFi карт ath5k и iwl-4965, сетевой подсистемы mac80211, ALSA, исправлены ошибки в менеджере памяти и коде поддержки аппаратных архитектур.
исправлено 92 ошибки. Из подсистем, которых затронули исправление можно отметить: DeviceMapper, iwlwifi, mac80211, ath9k, eCryptfs, NFSv3, NFSv4, drm/radeon, ACPI, USB, ALSA, SCSI, crypto, drm/i915, netfilter, KVM, V4L/DVB, md, cifs.
Кроме того, сообщается об обнаружении в Linux ядре нескольких уязвимостей:
Уязвимость в подсистеме USB позволяет локальному злоумышленнику при работе с USB-устройствами на уровне пользователя инициировать крах ядра или получить доступ к содержимому системной области памяти;
Уязвимость в поставляемом в составе ALSA драйвере hda-intel дает возможность вызвать крах ядра, если в системе используется данный драйвер;
Ошибка в коде вычисления таймаутов повторной отправки TCP-пакетов (TCP RTO) позволяет удаленному злоумышленнику создать большую паразитную нагрузку на CPU, если в настройках отключен параметр "TCP timestamps" (sysctl net.ipv4.tcp_timestamps).
В новое ядро принято 11708 исправлений от 1354 разработчиков, размер патча - 54 Мб (добавлено 869 тыс. строк кода, удалено - 489 тыс.).
Основные новшества:
Дисковая подсистема, ввод/вывод и файловые системы
Принят код DRBD, реализация распределенного реплицируемого блочного устройства (RAID-1 по сети);
Удалена поддержка планировщика ввода/вывода Anticipatory Scheduler, вместо него рекомендуется использовать CFQ;
Интегрирована система "Block I/O controller", предназначенная для организации ограничения пропускной способности блочных устройств. Одно из наиболее интересных применений разработки - введение ограничений на дисковый ввод/вывод для одного или группы процессов, а также для окружений, работающих через системы виртуализации.
Переработана организация блокировок в файловой системе reiserfs v3: осуществлена замена глобальной блокировки на использование рекурсивного mutex, что не решило всех проблем (полный уход от глобальных блокировок требует переработки архитектуры reiserfs), но позволило частично повысить производительность reiserfs на многоядерных и многопроцессорных системах.
Сетевая подсистема
Поддержка TCPCT (TCP Cookie Transactions), расширения протокола TCP, нацеленного на защиту от DoS-атак, таких как SYN-флуд и массовый преждевременный обрыв соединений. В отличие от классического кода защиты от SYN-флуда, TCPCT не конфликтует с другими расширениями протокола TCP, но требует поддержки в TCP-стеках на стороне клиента и сервера. Основная причина использования TCPCT - активное внедрение протокола DNSSEC.
Память и системные сервисы
Compcache - система для организации хранения содержимого системных кэшей в сжатом виде. Основная идея новой технологии в сжатии неиспользуемых страниц памяти и оставлении их в ОЗУ, без вытеснения в раздел подкачки. По сути Compcache представляет собой размещенный на RAM-диске виртуальный раздел подкачки с хранением данных в сжатом виде.
Добавлен новый системный вызов recvmmsg(), позволяющий организовать получение в рамках одного системного вызова сразу нескольких сообщений, которые ранее потребовали бы отдельных вызовов recvmsg(). Технология значительно повышает эффективность работы приложений передающих большие объемы данных или оперирующих пакетами небольшого размера.
Оборудование и аппаратные архитектуры
В экспериментальном режиме включен DRM-модуль (Direct Rendering Manager) из состава Nouveau, открытого драйвера для видеокарт NVIDIA с поддержкой 2D- и 3D-акселерации. Nouveau уже используется в качестве основного драйвера для видеокарт от NVIDIA в релизе Fedora 12 и будет использован в Ubuntu 10.04. К сожалению, в последнем выпуске драйвера Nouveau был изменен API, что делает код драйвера, работающий на уровне пользователя, несовместимым с принятым в "staging" дерево Linux ядра 2.6.33 модулем DRM. Поддержка нового API появится в ядре 2.6.34;
Обновлены ранее включенные в Linux ядро DRM модули для карт Intel и ATI/AMD. Статус модуля для карт ATI Radeon изменён с экспериментального на стабильный;
Добавлена поддержка оборудования, используемого в игровых приставках Nintendo Wii и Gamecube.
Из состава ядра удален код драйверов для платформы Android, разработанный компанией Google. В качестве причины удаления названо отсутствие должной поддержки со стороны разработчика, не продолжившего устранение недочетов в рамках слияния кода с ядром Linux.
Подверглась доработке инфраструктура трассировки, в инфраструктуру ftrace добавлена поддержка динамической трассировки, расширены возможности утилиты "perf" (tools/perf). Добавлен ряд новых команд: perf probe, perf bench, perf kmem, perf diff. Внесенные в ядро 2.6.33 изменения позволили реализовать в утилите PowerTop возможность отслеживания эффективности использования энергосберегающих технологий в звуковой и SATA подсистемах;
Виртуализация
В состав ядра включены два драйвера для оптимизации работы гостевых окружений в системе виртуализации VMware: VWware Virtual GPU для акселерации графического вывода в гостевых окружениях и драйвер виртуального Ethernet адаптера vmxnet3;
Поддержка Xen PV-on-HVM (ioctl KVM_XEN_HVM_CONFIG), что дает возможность запуска гостевых окружений в пространстве пользовательского процесса.
В обновлении Linux ядра 2.6.33.1 отмечено 124 исправления. Изменения затронули такие подсистемы, как планировщик задач, KVM, Device Mapper, NFS, drm/i915, drm/radeon, USB (около 20 исправлений), ocfs2, netfilter, b43, ath5k, ALSA, oprofile, V4L/DVB, sky2, ipv6, ACPI, iwlwifi.
Отдельно можно отметить устранение DoS уязвимости, проявляющейся в виде краха ядра при попытке чтения данных из /proc/acpi/ibm/video на ноутбуках ThinkPad. Кроме того в drm-модуле для видеокарт ATI Radeon r6xx/r7xx устранена ошибка, которая потенциально могла быть использована для организации доступа непривилегированного пользователя к областям памяти ядра. ChangeLog_http://www.kernel.org...geLog-2.6.33.1 Patch (~46 Kb)_http://www.kernel.org...h-2.6.33.1.bz2 Downloads (~63,2 Mb)_http://www.kernel.org...6.33.1.tar.bz2
Отдельно можно отметить устранение в новых версиях ядра двух уязвимостей:
* Уязвимость в реализации файловой системы ReiserFS, связанная с некорректной установкой прав доступа на директорию ".reiserfs_priv", что может быть использовано для получения повышенных привилегий. * Уязвимость во встроенном отладчике KGDB, позволяющая получить доступ на запись ко всем областям памяти ядра. ChangeLog_http://www.kernel.org...geLog-2.6.33.4 Patch (~159 Kb)_http://www.kernel.org...h-2.6.33.4.bz2 Downloads (~63,1 Mb)_http://www.kernel.org...6.33.4.tar.bz2
Было принято 10167 исправлений от 1305 разработчиков, размер патча - 39 Мб (добавлено 621 тыс. строк кода, удалено - 290 тыс. строк). Около 42% всех представленных в 2.6.34 изменений связаны с драйверами устройств, примерно 27% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 14% связано с сетевым стеком, 7% - файловыми системами и 6% c внутренними подсистемами ядра.
Основные новшества:
Дисковая подсистема, ввод/вывод и файловые системы
Интегрирован код файловой системы Ceph, способной поддерживать работу хранилища объемом в несколько петабайт (1 Пб = 1024 Тб), распределенного по тысячам машин. Встроенные в Ceph механизмы репликации данных (данные разбиваются на блоки и несколько раз дублируются на разных машинах) обеспечивают чрезвычайно высокую живучесть системы. При добавлении или удалении новых узлов, массив данных автоматически ребалансируется с учетом изменения конфигурации. В Ceph имеется поддержка снапшотов, причем снапшот может быть создан не только для ФC, но и для отдельных директорий. В отличии от таких файловых систем, как GFS, OCFS2, и GPFS, в Ceph обработка данных и метаданных разделена на различные группы узлов в кластере. Ceph может работать поверх блочных устройств, внутри одного файла или через размещение данных в существующих ФС (например, XFS).
В состав ядра принят код файловой системы LogFS, специально спроектированной для использования на Flash-накопителях. В LogFS интегрирован механизм минимизации повторной перезаписи блоков, поддерживается журналирование и сжатие данных на лету. Дерево элементов файловой системы в LogFS хранится в Ext2 подобном виде, что позволило избавиться от двух главных проблем файловой системы JFFS2 - повышенного расхода памяти и длительного времени монтирования. В отличие от LogFS, в JFFS2 служебная информация записывается только в форме лога, что приводит к необходимости сканирования данных для воссоздания структуры ФС при каждом монтировании и к хранению всей структуры ФС в оперативной памяти в процессе работы (линейная зависимость от объема данных).
Значительное обновление кода файловой системы Btrfs: Для тонкой настройки ФС добавлена пользовательская утилита "btrfs". Расширены возможности по работе с подразделами и снапшотами, которые теперь можно назначать для монтирования по умолчанию (например, можно установить все обновления дистрибутива или провести эксперимент в отдельном снапшоте, а затем мгновенно переключиться на обновленный образ корневой ФС, а если возникнут проблемы - вернуться обратно). Для более точного соответствия реальной ситуации изменен метод расчета свободного места, которым оперирует утилита df. В defrag-код добавлена поддержка сжатия файлов при необходимости или дефрагментации только диапазонов байт в файле.
В реализацию файловой системы FAT добавлена поддержка больших дисков (более 2 Тб) c размером сектора 4096 байт;
В код файловой системы Squashfs интегрирована поддержка сжатия методами LZMA и LZO;
Сетевая подсистема
Реализована поддержка механизма GTSM (RFC 5082, Generalized TTL Security Mechanism), позволяющая производить легковесные проверки пакетов для выявления DoS-атак на маршрутизаторы, оперирующих наводненим фиктивными BGP-пакетами. Для подтверждения факта отправки пакета близлежащим узлом в сети, напрямую присоединенного BGP-линка, в GTSM используется поле Time to Live (TTL) (IPv4) или Hop Limit (IPv6).
Добавлена поддержка RFC 3069 (private VLAN proxy arp);
Добавлен tap-драйвер macvtap, базирующийся на mac-vlan;
В nf_conntrack_sip добавлена поддержка TCP и протокола передачи факсов T.38;
Память и системные сервисы
Реализована поддержка выполнения в асинхронном режиме операций для перехода в спящий режим и возврата из него, что позволяет значительно ускорить засыпание и просыпание системы за счет параллелизации перевода в спящий режим PCI, USB и SCSI драйверов;
Повышена эффективность работы Kprobes, путем замены где это возможно точек останова на jump-переходы. Kprobes позволяет при разработке модулей ядра динамически выводить отладочную информацию без модификации исходных текстов, пересборки и перезапуска исследуемого объекта;
Продолжено расширение возможностей отладочной подсистемы Performance Events: в утилиту "perf" (tools/perf) добавлена команда perf lock для просмотра статистики блокировок; появилась возможность проведения кроссплатформенного анализа данных, сохраненных на системе с другой архитектурой; добавлена команда "perf buildid-cache" для настройки параметров внутреннего кэша; добавлены средства для написания скриптов на языке Python для обработки трассировочных данных.
Добавлена возможность выполнения lockdep-подобных проверок при использовании механизма синхронизации RCU (Read-copy-update), позволяющего организовать одновременный доступ к данным без использования блокировок. Новая возможность позволяет избавиться от ручных операций при проверке корректности работы RCU;
Во фреймворк TOMOYO, позволяющий привязать политику безопасности процесса к файловому пути, способом похожим с AppArmor, добавлен встроенный сборщик мусора;
Оборудование и аппаратные архитектуры
Добавлена возможность смены на лету активного графического процессора для ноутбуков, снабженных несколькими GPU (мощный, но энергоемкий, и малопроизводительный с низким потреблением энергии). Несмотря на то что ядро теперь поддерживает смену GPU на лету, X-сервер все еще требует перезагрузки.
В DRM-модуль Radeon (Direct Rendering Manager) добавлена начальная поддержка карт "Radeon Evergreen" (Radeon HD 5xxx). Модуль может быть использован совместно с драйвером xf86-video-ati, но пока не поддерживает акселерацию. В модуле Nouveau представлен новый API для взаимодействия с драйвером, работающим на уровне пользователя;
В состав ядра включен улучшенный драйвер udlfb, который дает возможность задействовать в Linux видеокарты с интерфейсом USB и USB2VGA-переходники на базе чипов DisplayLink, позволяющих подключить дополнительный монитор через USB-порт;
Добавлена поддержка PATA-контроллера VIA VX900 и чипов VT6415 PCIE;
Добавлена поддержка сетевых плат: Intel 82599 Virtual Function Ethernet, Chelsio T4 gigabit и 10Gb Ethernet, Qlogic CNA, Aeroflex Gaisler 10/100/1G Ethernet, Micrel KSZ8841/2 PCI Ethernet, SMSC LAN75xx USB gigabit Ethernet, Atheros AR8152/AR8152/AR2427.
Виртуализация
В комплект добавлен balloon-драйвер, разработанный компанией VMWare и позволяющий гипервизору виртуализированной гостевой операционной системы динамически ограничивать объём доступной оперативной памяти. При возникновении нехватки памяти, когда гипервизор обнаруживает, что ему нужно перегруппировать страницы в памяти, он инструктирует драйвер для того, чтобы тот выделил некоторое количество страниц, и физическая память была возвращена гипервизору. Позднее гипервизор, присоединяя кадровые страницы к памяти, может вернуть память гостевой ОС и проинструктировать драйвер, чтобы тот "раздул баллон".
В состав интегрирован код vhost-net, акселератора сетевых функций KVM на уровне ядра, позволяющего оптимизировать производительность сетевых операций в гостевых окружениях за счет выноса на уровень ядра всех операции по преобразованию файловых дексрипторов, снижения операций по переключению контекста и минимизации числа обращений к системным вызовам (при обработка каждого пакета производится на 4 системных вызова меньше). Тестирование показало, что использование vhost-net позволяет без модификации кода гостевых систем увеличить отзывчивость в 5 раз и довести пропускную способность сети до уровня систем не использующих виртуализацию.
Добавлена начальная поддержка эмуляции гипервизора HYPER-V.
В новую версию принято 10514 исправлений от 1355 разработчиков, размер патча - 45 Мб. Около 41% всех представленных в 2.6.35 изменений связаны с драйверами устройств, примерно 23% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 15% связано с сетевым стеком, 7% - файловыми системами и 5% c внутренними подсистемами ядра.
* Сетевая подсистема o Поддержка технологий Receive Packet Steering (RPS) и Receive Flow Steering (RFS) для прозрачного распределения нагрузки по обработке входящего сетевого трафика на имеющиеся в системе CPU. Функция RPS позволяет организовать на разных CPU параллельную обработку операций над IP и TCP пакетами, для чего для каждого сетевого устройства или для каждой очереди пакетов добавлен дополнительный индекс, использующий хэширование по заголовку пакетов для выбора CPU-обработчика. RFS дополняет RPS эвристическими методами выбора CPU, не просто выбирая обработчик случайным образом, а учитывая на каком CPU выполняется вызвавшее системный вызов recvmsg() приложение для наиболее оптимальной утилизации кэша. Изменения разработаны и переданы в состав Linux-ядра компанией Google. Измерение производительности показало, что новая функция позволила увеличить пропускную способность на восьмиядерном сервере для драйвера tg3 с 90 тыс. транзакций в сек. до 285 тыс., а для драйвера e1000 с 90 тыс. до 292 тыс. транзакций в сек. (утилизация CPU при этом возросла с 30 до 60%); o Поддержка нескольких независимых таблиц multicast-маршрутизации. Обычно multicast маршрутизация выполняется на уровне пользователя, процессом принимающим решение о судьбе multicast-пакета на основе адреса IP приемника и назначения. Представленная возможность позволяет в рамках одной системы организовать одновременную работу нескольких независимых процессов multicast-маршрутизации, изоляцию сетевых интерфейсов и пакетов для которых обеспечивает ядро; o Поддержка протокола L2TP третьей версии (Layer 2 Tunneling Protocol, RFC 3931), предоставляющего средства для динамического формирования L2-туннелей поверх IP-сетей. Кроме туннелинга протокола PPP, новая версия L2TP предоставляет средства для проброса других L2-протоколов, таких как ATM, Frame Relay, HDLC и даже Ethernet. o Поддержка протокола CAIF, используемого компанией ST-Ericsson в своих GPRS-модемах для организации связи между хостом и модемом. Хост управляет обработкой виртуальных управляющих AT-каналов, инициализацией GPRS-соединений, работой каналов с передачей видео и сервисных каналов. Модемы ST-Ericsson поддерживают несколько видов транспорта, но в Linux пока поддерживаются только UART и Loopback; * Дисковая подсистема, ввод/вывод и файловые системы o В реализации файловой системы Btrfs добавлена поддержка режима прямого ввода/вывода, позволяющего организовать доступ к данным минуя кэш файловой системы. Функция прямого ввода/вывода активно используется в СУБД, поддерживающих собственные механизмы кэширования. Кроме того в Btrfs завершена работа над кодом "-ENOSPC", обеспечивающим работу в ситуации острой нехватки свободного дискового пространства. o В файловой системе XFS добавлена поддержка отложенной записи в лог в режиме журналирования, позволяющей организовать накопление нескольких асинхронных транзакций в памяти, вместо их многократного сброса в лог. Использование отложенной записи позволяет заметно сократить число операций ввода/вывода, связанных с журналированием, и повысить производительность при интенсивных операциях с мета-данными. Возможность имеет статус экспериментальной и включается через опцию монтирования "-o delaylog"; o В файловой системе OCFS2 добавлена поддержка заблаговременного резервирования (allocation reservation) блоков, что позволяет значительно сократить фрагментацию. Проведена оптимизация производительности. По умолчанию при монтировании отныне используется опция nointr, запрещающая прерывать выполняющиеся файловые операции; * Память и системные сервисы o Интегрирован механизм уплотнения памяти (memory compaction), позволяющий снизить фрагментацию внешней памяти за счет перемещения нескольких использованных страниц памяти в один блок большего размера, состоящий из непрерывно следующих друг за другом занятых страниц. В итоге, после выполнения операции упаковки, вместо перемешанного набора свободных и занятых непрерывных страниц памяти, получается один большой блок с используемыми страницами и один большой блок со свободными страницами, что в дальнейшем упрощает проведения операций выделения больших областей памяти. Инициировать уплотнение всей памяти можно записав любое значение в файл /proc/sys/vm/compact_memory; o В ядро интегрирован код, позволяющий обеспечить работу отладчика KDB поверх другого отладчика Kgdb, что дает возможность их одновременного использования. Отладчик KDB разработан в недрах компании SGI и, в отличие от Kgdb, не требует для отладки второго компьютера, на котором запущен фронтэнд gdb. С помощью KDB можно инспектировать работу ядра на локальной системе, но его слабым звеном является отсутствие поддержки отладки на уровне исходных текстов; o Продолжено расширение возможностей отладочной подсистемы Performance Events: В команде "perf inject" добавлена поддержка live-режима, для одновременного обеспечения записи статистики и ее вывода. Данный режим активируется автоматически, если утилита perf вызывается без явного указания команд record/report (например, "perf trace rwtop 5"). Добавлена утилита perf kvm для мониторинга гостевых окружений из хост-системы. В perf probe добавлена возможность доступа к заданным полям определенных структур данных (например, "perf probe --add 'vfs_read file->f_op->read file->f_path.dentry'"); * Оборудование и аппаратные архитектуры o Расширены возможности DRM-модуля (Direct Rendering Manager) i915 для видеокарт Intel: добавлена поддержка аппаратной акселерации декодирования видеопотоков H.264 и VC1 для графических карт на базе GPU G45+; добавлена поддержка графических чипсетов Intel Cougarpoint; реализована поддержка средств для мониторинга потребления энергии; поддержка чересстрочных дисплеев (interlaced); поддержка самообновления памяти для чипов Ironlake; o Расширены возможности DRM-модуля Radeon для видеокарт ATI/AMD: добавлена начальная поддержка функций управления питанием; упрощен и улучшен код обработки сброса GPU (GPU reset); добавлен код, необходимый для поддержки видеокарт семейства Evergreen; o Добавлена поддержка интерфейса APEI (ACPI Platform Error Interface), определенного в спецификации ACPI 4 и позволяющего улучшить обработку NMI, организовать сохранение MCE (Machine Check Exception) ошибок на Flash, реализовать поддержку APEI Error Record Serialization Table (ERST), APEI Generic Hardware Error Source и APEI Error INJection (EINJ). * Разное o Добавлен новый интерфейс для конфигурирования параметров сборки ядра "make nconfig". Интерфейс основан на menuconfig, но имеет более современный внешний вид, построен на базе ncurses и сопутствующих библиотек для создания меню, форм ввода и панелей; o Образ initramfs (RAM-диск с файловой системой, загружаемой на этапе начальной инициализации, до монтирования корневого раздела) теперь может быть сжат методом LZO; o Размер неименованных каналов (pipe) теперь можно менять при помощи fcntl-операций F_GETPIPE_SZ и F_SETPIPE_SZ. ChangeLog_http://www.kernel.org...angeLog-2.6.35 Patch (~7,3 Mb)_http://www.kernel.org...tch-2.6.35.bz2 Downloads (~66 Mb)_http://www.kernel.org...2.6.35.tar.bz2
Представлено 115 исправлений затронувших такие подсистемы, как USB, drm/radeon, drm/i915, ALSA, iwlwifi, e1000e, device_mapper, Oprofile, isdn, bridge, tcp, sparc64, ath5k, NFS, ocfs2. Кроме того, в ядре устранена уязвимость в функции drm_ioctl(), которая может привести к получению доступа к закрытым областям памяти ядра, через отправку специально оформленного IOCTL от пользователя, добавленного в группу "video". ChangeLog_http://www.kernel.org...geLog-2.6.35.4 Patch (~74 Kb)_http://www.kernel.org...h-2.6.35.4.bz2 Downloads (~66 Mb)_http://www.kernel.org...6.35.4.tar.bz2
Среди наиболее заметных изменений в 2.6.36-rc3 - обновление кода DRM (userspace API, который позволяет напрямую обращаться к видеокартам) для драйверов Radeon и Nouveau.
Также ветка пополнилась следующими изменениями:
* Обновился код в реализации файловых систем cifs, ceph, xfs; * В сетевой подсистеме: исправления в драйвере e1000e; * Исправлено зависание при работе c памятью (точнее: при вызове anon_vma_prepare); * В звуковой архитектуре ALSA: исправления в драйверах семейства intel8x0 и ASIHPI, кодека ALC269; добавлена поддержка кодеков IDT 92HD89XX для драйверов, поддерживающих Intel High Definition Audio контроллеры; * Исправления в поддержке xen, которые позволяют эмулировать отсоединение устройства через командную строку ядра; * Изменения специфичные для архитектур powerpc, sparc64, alpha, arm; * Исправления в новой системе уведомлений файловой системы fanotify; * Исправления в поддержке wifi: в драйверах серии Intel Link5300, Intel PRO/Wireless 21000/3945; * Исправления в драйверах usb-to-serial, firewire. ChangeLog_http://www.kernel.org...Log-2.6.36-rc3 Patch (~7,18 Mb)_http://www.kernel.org...2.6.36-rc3.bz2 Downloads (~67,0 Mb)_http://www.kernel.org...36-rc3.tar.bz2
В коде ядра 2.6.35 было произведено 127 исправлений, которые касаются следующих подсистем: звука (HD кодеки и USB устройства), файловых систем (XFS, ext4, nfs, ocfs2), драйверов датчиков температуры, поддержки видеоадаптеров (Intel и Radeon), драйверов SATA, профилирования, сети (беспроводные адаптеры ath9k), поддержки USB и архитектур (x86, x86-64, arm и powerpc). ChangeLog_http://www.kernel.org...geLog-2.6.35.5 Patch (~112 Kb)_http://www.kernel.org...h-2.6.35.5.bz2 Downloads (~66,0 Mb)_http://www.kernel.org...6.35.5.tar.bz2
Исправлено 80 и 68 ошибок, которые затронули такие подсистемы, как DRM/i915, DRM/nv50, SCTP, ALSA, XFS, GFS2, KVM, virtio, SCSI, inotify, L2TP, UDP, TCP, USB. Отдельно отмечается устранение уязвимости (CVE-2010-2960), связанной с разыменованием NULL-указателя при передаче некорректных значений через аргумент KEYCTL_SESSION_TO_PARENT при вызове keyctl. Устранено внесенное в версии 2.6.35.6 регрессивное изменение, проявляющиеся только при работе системы виртуализации Xen. ChangeLog_http://www.kernel.org...geLog-2.6.35.7 Patch (~138 Kb)_http://www.kernel.org...h-2.6.35.7.bz2 Downloads (~66 Mb)_http://www.kernel.org...6.35.7.tar.bz2
Появилась поддержка новой процессорной архитектуры Tile, интегрирована технология мандатного контроля доступа AppArmor, добавлена поддержка локального кэширования CIFS-разделов, обеспечена возможность управления питанием для CPU Intel Core i3/i5 и включена подсистема LIRC для управления устройствами через инфракрасный канал связи.
В новую версию принято 10195 исправлений от 1326 разработчиков, размер патча - 48 Мб (добавлено 9256 строк кода, удалено - 9204 строк). Около 39% всех представленных в 2.6.36 изменений связаны с драйверами устройств, примерно 27% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 12% связано с сетевым стеком, 6% - файловыми системами и 5% c внутренними подсистемами ядра.
Наиболее интересные новшества ядра 2.6.36:
* Безопасность o В ядро интегрирована поддержка технологии мандатного контроля доступа AppArmor, которая позволяет контролировать полномочия процессов, определяя списки файлов с соответствующими правами (на чтение, запись, отображение в память и запуск, установку блокировки на файл и т.п.) для каждого приложения. Также AppArmor позволяет на самом общем уровне контролировать доступ к сети (например, запретить использование ICMP) и управлять POSIX capabilities. Основное отличие AppArmor от SELinux состоит в том, что SELinux оперирует ассоциированными с объектом метками, а AppArmor определяет полномочия на основании файлового пути, что заметно упрощает процесс настройки; * Оборудование и аппаратные архитектуры o Поддержка процессорной архитектуры Tile, отличающейся возможностью интеграции на одном чипе до нескольких сотен процессорных ядер. Процессорные ядра оформлены в чипе в виде связанной mesh-сети (каждый узел связан через соседние узлы сети), состоящей из независимых ячеек, каждая из которых состоит из вычислительного блока (процессор, поддерживающий основанный на MIPS набор инструкций), кэша и модуля маршрутизации, который обеспечивает связь текущей ячейки с соседями в неблокирющем режиме. o Поддержка новой технологии распределения питания, используемой в платформе Intel Core i3/5, отличающейся интеграцией графического процессора. В таких комбинированных чипах технология Intel Intelligent Power Sharing позволяет распределять питание между CPU и GPU, в зависимости от задач максимизируя производительность графических или вычислительных задач. Новый драйвер работает совместно с драйвером для контроля частоты CPU и DRM-драйвером i915, координирует параметры мощности и температуры с основным термальным драйвером, осуществляя мониторинг мощности и температуры GPU; o В состав ядра интегрирован набор драйверов, разработанных в рамках проекта LIRC и предназначенных для организации управления устройствами и обмена данными через инфракрасный порт; * Дисковая подсистема, ввод/вывод и файловые системы o Для сетевой файловой системы CIFS реализована поддержка локального кэширования данных. Поддержка кэширования реализована через подсистему FS-Cache, которая появилась в ядре 2.6.30 и ранее поддерживала кэширование для файловых систем NFS и AFS; o В файловой системе Ext3 теперь по умолчанию используется режим упорядоченного журналирования (mount -o data=ordered), при котором вначале на диск сбрасываются обновления данных, а потом в журнал помещаются изменения метаданных, что гарантирует отсутствие в файлах устаревших блоков данных в случае краха; o В файловой системе Squashfs, используемой для формирования LiveCD, появилась поддержка алгоритма сжатия LZO; o За неделю до релиза, из-за проблем с обеспечением целостности ABI, из ветки 2.6.35 был исключен ранее добавленный код Fnotify, нового механизма уведомления приложений (напирмер, антивирусных сканеров) об изменениях в файловой системе, идущего на смену системам inotify и dnotify (для данных систем обеспечен режим эмуляции, который работает поверх fanotify). Fanotify поддерживает отслеживание как активных событий (открытие, закрытие, чтение, запись и т.п.), так и выполнение пассивных операций, таких как открытие специального файлового дескриптора к отслеживаемому объекту, доступного только на чтение. В отличие от inotify и dnotify в новой системе устранены проблемы с масштабированием при контроле за большим числом объектов и обеспечена поддержка нотификации на основе блокировки и контроля доступа. * Память и системные сервисы o Интегрирован ряд патчей для подсистемы виртуальной памяти, направленных на увеличение отзывчивости десктоп-систем. Например, патчи минимизируют негативный эффект, проявляющийся в виде подвисаний приложений при копировании большого объема данных с медленных USB-носителей; o Значительно переработан алгоритм OOM Killer (Out of Memory Killer), принимающий решение об принудительном завершении процессов в ситуации катастрофической нехватки памяти (ОЗУ и swap). Выбор процессов для принудительного завершения связан со множеством нюансов, требующих учитывать большое число системных параметров. Новый OOM Killer более не приводит к завершению оболочки KDE при нехватке памяти, учитывает связь потомок-родитель (родитель теперь не завершается пока у него есть потомки), поддерживает эвристический метод блокирования разрастания большого числа процессов за короткий промежуток времени (fork-бомба); o Переработан механизм функционирования рабочих очередей (пулл нитей, позволяющий осуществить отложенное выполнение функций ядра), который теперь реализует динамическое управление числом внутриядерных потоков, в зависимости от нагрузки на систему, и поддержание уровня очередей в допустимых пределах (если очередей больше, чем число CPU, наблюдается падение производительности из-за начала паразитного переключения контекста). Новая система также способна заменить код "slow-work", альтернативного пула потоков для выполнения некоторых операций, для которых традиционные рабочие очереди не подходят; o Активирована возможность использования интегрированного в прошлой версии ядра отладчика KDB при работе в графическом режиме. Нажатие Sysrq-g теперь при работе X-сервера отображает отладочную консоль и выходит из нее при вводе команды "go". Поддержка связки KMS + KDB пока доступна только для чипов Intel. Отладчик KDB разработан в недрах компании SGI и, в отличие от Kgdb, не требует для отладки второго компьютера, на котором запущен фронтенд gdb. С помощью KDB можно инспектировать работу ядра на локальной системе, но его слабым звеном является отсутствие поддержки отладки на уровне исходных текстов; * Сетевая подсистема o Проведена оптимизация кода BPF-интерфейса (Berkeley Packet Filter), используемого для организации перехвата пакетов; o В NetFilter добавлена поддержка цели CHECKSUM для вычисления и заполнения поля с контрольной суммой для пакетов в котором данное поле не заполнено (пример: "iptables -A POSTROUTING -t mangle -p udp --dport bootpc -j CHECKSUM --checksum-fill"); o В NetFilter добавлена возможность привязки правила к CPU (xt_cpu) и IPVS (xt_ipvs). Например, для максимизации использования кэша и осуществления всего цикла обработки в рамках одного CPU, можно привязать несколько серверных обработчиков к определенным CPU и затем организовать перенаправление в зависимости от того на каком CPU был обработан пакет: "iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 0 -j REDIRECT --to-port 8080"; o В реализации технологии "bonding" (превращение нескольких физических сетевых интерфейсов в один виртуальный) добавлена возможность управления со стороны пользователя выбором исходящего slave-интерфейса в режимах round-robin и active-backup; o В беспроводной стек mac80211 добавлена поддержка аппаратных ARP-фильтров и опция для настройки мощности передатчика. ChangeLog_http://www.kernel.org...angeLog-2.6.36 Patch (~7,3 Mb Mb)_http://www.kernel.org...tch-2.6.36.bz2 Downloads (~67 Mb)_http://www.kernel.org...2.6.36.tar.bz2
Отмечено 292 исправления. Изменения в основном касаются исправлений ошибок: разыменования нулевых указателей, утечек памяти, гонок за ресурсами и т.п. В частности, в ядре устранены три уязвимости в драйвере econet (CVE-2010-3848, CVE-2010-3849, CVE-2010-3850), которые были применены в опубликованном на днях эксплоите, а также несколько похожих проблем, которые могли привести к формированию oops-событий. О статусе исправления проблемы CVE-2010-4258 ничего не сообщается. ChangeLog_http://www.kernel.org...geLog-2.6.36.2 Patch (~96,1 Kb)_http://www.kernel.org...h-2.6.36.2.bz2 Downloads (~66,9 Mb)_http://www.kernel.org...6.36.2.tar.bz2
Представлена поддержка механизма синхронизации TINY_PREEMPT_RCU, продолжена работа по избавлению ядра от глобальных блокировок, в состав включены дополнительные элементы для обеспечения поддержки Xen Dom0, активирован механизм нотификации об изменениях в файловой системе fanotify.
* Виртуализация и безопасность o Начальная поддержка хост-режима системы виртуализации Xen (Dom0). Для полноценной поддержки Dom0 в Linux-ядре теперь недостает только бэкенд-драйверов, которые планируется интегрировать в версию 2.6.38; o В состав ядра включены Xen-драйверы privcmd и xen-pcifront. Добавлена поддержка Xen PCI, реализована возможность горячей замены паравиртуализированных PCI-устройств (Xen paravirtualised PCI hotplug); o В KVM обеспечена возможность создания паравиртуализированных гостевых окружений на платформе PowerPC; o В криптоподсистему добавлена поддержка интерфейса AEAD (Authenticated Encryption with Associated Data); * Память и системные сервисы o Поддержка сжатия методом LZO сбрасываемого на диск содержимого памяти при переходе в спящий режим; o Окончательный уход от использования устаревшей глобальной BKL-блокировки (Big Kernel Lock), которая оставалась многие годы узким местом в некоторых подсистемах; o TINY_PREEMPT_RCU - легковесный вариант механизма синхронизации RCU (Read-copy-update), позволяющего организовать одновременный доступ к данным без использования блокировок. TINY_PREEMPT_RCU отличается значительным уменьшением потребления памяти, но поддерживает только однопроцессорные системы; o Объявлена устаревшей и отключена по умолчанию вторая версия иерархии объектов в служебной файловой системе sysfs; o При выполнении "make xconfig" конфигуратор теперь по умолчанию использует библиотеку Qt4; * Дисковая подсистема, ввод/вывод и файловые системы o В libata добавлена поддержка секторов, размером более 512 байт (например, 4 Кб). Реализован класс ATA-транспорта. Добавлена поддержка LPM для разветвителей портов; o Для файловой системы Ext4 добавлена функция "Lazy Inode Table Initialisation", созданная с целью значительного сокращения времени создания Ext4-разделов. Добавлена поддержка контроля за Ext4 через sysfs; o В файловой системе XFS поддержка опции "-o delaylog" переведена в разряд стабильных. Опция предназначена для организации отложенной записи в лог в режиме журналирования, позволяя организовать накопление нескольких асинхронных транзакций в памяти, вместо их многократного сброса в лог. Использование отложенной записи позволяет заметно сократить число операций ввода/вывода, связанных с журналированием, и повысить производительность при интенсивных операциях с мета-данными; o Fnotify, новый механизм уведомления приложений (например, антивирусных сканеров) об изменениях в файловой системе, идущего на смену системам inotify и dnotify (для данных систем обеспечен режим эмуляции, который работает поверх fanotify). Fanotify поддерживает отслеживание как активных событий (открытие, закрытие, чтение, запись и т.п.), так и выполнение пассивных операций, таких как открытие специального файлового дескриптора к отслеживаемому объекту, доступного только на чтение. В отличие от inotify и dnotify в новой системе устранены проблемы с масштабированием при контроле за большим числом объектов и обеспечена поддержка нотификации на основе блокировки и контроля доступа. o Появилась поддержка опции "root=PARTUUID=hex-uuid", нацеленной на корректное определение блочных устройств с которых должно производиться монтирование корневого раздела, через указание UUID дискового раздела; o В файловой системе OCFS2 (Oracle Cluster File System) добавлена поддержка монтирования дисковых разделов, размером более 16 Тб. Добавлена новая опция монтирования "coherency=*" для реализации обеспечения согласованности данных в кластере при режиме записи O_DIRECT. Добавлен ioctl OCFS2_IOC_INFO, позволяющий получить непривилегированному пользователю статистику о работе ФС; o В реализацию файловой системы CIFS добавлена поддержка опций монтирования "mfsymlinks" и multiuser", а также возможность привязки к определенному локальному IP; o В файловой системе NFS добавлена опция '-olocal_lock' для локального хранения локов; * Сетевая подсистема o Добавлена возможность конфигурирования подсетей как локальных адресов, например, для привязки всех адресов подсети 10.1.0.0/16 к интерфейсу eth0 (ответ будет получен при запросе любого адреса из данной подсети), необходимо выполнить "ip rule add from all iif eth0 lookup 200; ip route add local 10.1/16 dev lo proto kernel scope host src 127.0.0.1 table 200"; o Поддержка программной эмуляции аппаратных механизмов акселерации VLAN. Поддержка 802.1q VLAN для Infiniband over Ethernet; o Проведена большая работа по оптимизации работы на SMP-системах кода, связанного с маршрутизацией и работой драйверов; o Приведены в соответствие с RFC 3390 и RFC 5681 параметры формирования начального размера скользящего окна TCP; o В ядро интегрирован код проекта accel-pptp, который представляет собой высокопроизводительную реализацию сервера PPTP/PPPoE/L2TP и клиента PPTP, основанную на коде проектов poptop и pptpclient, но благодаря работе на уровне ядра, отличающуюся от poptop/pptpclient существенным ускорением работы и понижением нагрузки на CPU. В состав ядра включено два модуля: "pptp" (PPP over IPv4, Point-to-Point Tunneling Protocol) и "gre" (демультиплексор GRE-пакетов); * Оборудование и аппаратные архитектуры o В DRM-модуле i915 для видеокарт Intel реализована поддержка вывода звука через DisplayPort и HDMI порты, обеспечена поддержка GPU, встроенного в процессоры SandyBridge. Добавлен драйвер-заглушка для Intel GMA500 (Poulsbo). В Nouveau добавлена поддержка сенсоров, например, для слежения за температурой. В Radeon добавлена поддержка карт семейства Evergreen. В VIAFB добавлена начальная поддержка VX900; o Драйвер uas с поддержкой протокола USB Attached SCSI Protocol (UASP) для устройств хранения с интерфейсом USB 3.0; o В подсистеме ata добавлена поддержка Intel IDE-R, в ata_piix реализован режим LPM; o Интегрирован драйвер для поддержки аппаратного акселератора AES-шифрования на платформах OMAP2/3; o Новые драйверы для беспроводных устройств: Atheros AR9170 802.11n, ath6kl (Atheros AR6003), brcm80211 (Broadcom 802.11n), r8712u (RealTek RTL8712U/RTL8192SU), Beeceem USB Wimax, SBE 2T3E3. В драйвере ath5k добавлена поддержка виртуальных STA и AP; o Драйверы для USB-устройств: Flarion OFDM, кард-ридеры ENE, Intel Langwell USB OTG Transceiver, UAS, Meywa-Denki & Kayac YUREX, Atmel SAM Boot Assistant (SAM-BA); o Поддержка устройств ввода Apple Magic Trackpad; o Драйверы для звуковых плат: Intel SST, Edirol DA-2496, Aztech Sound Galaxy, Traktor Kontrol S4, BOSS ME-25, USB3 SuperSpeed, поддержка звука в большом количестве новых ASoC. ChangeLog_http://www.kernel.org...angeLog-2.6.37 Patch (~12,5 Mb)_http://www.kernel.org...tch-2.6.37.bz2 Downloads (~70,1 Mb)_http://www.kernel.org...2.6.37.tar.bz2
В этот релиз вошли наработки по увеличению интерактивности выполнения десктоп-задач, значительно повышена масштабируемость VFS, в Btrfs обеспечена поддержка LZO-сжатия и создания доступных только на чтение снапшотов, интегрированы HugePage-патчи, добавлена поддержка процессоров AMD Fusion, добавлены новые драйверы и обеспечена поддержка mesh-протокола B.A.T.M.A.N.
В новую версию принято 10413 исправлений от 1349 разработчиков, размер патча - 49 Мб (добавлено 9295 тыс. строк кода, удалено - 9159 тыс. строк). Около 38% всех представленных в 2.6.38 изменений связаны с драйверами устройств, примерно 24% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 12% связано с сетевым стеком, 6% - файловыми системами и 4% c внутренними подсистемами ядра. ChangeLog_http://www.kernel.org...angeLog-2.6.38 Patch (~9,3 Mb)_http://www.kernel.org...tch-2.6.38.bz2 Downloads (~73 Mb)_http://www.kernel.org...2.6.38.tar.bz2
ЭЖД, 17.04.2011 - 13:06
Linux Kernel 2.6.38.3
Исправлено 104 ошибки. В представленном обновлении устранено несколько уязвимостей:
Возможность вызова краха ядра через использование вызова mremap();
Двойная очистка одной и той же области памяти в реализации системного вызова "inotify_init1()" может быть использована для инициирования краха ядра;
Ошибка в реализации рассеянного режима записи (sparse write) в файловой системе OCFS2 может привести к получению доступа локального пользователя к содержимому файлов, записанных на предыдущем этапе;
Потенциальное переполнение буфера в коде драйвера wl12xx;
Переполнение кучи в реализации протокола ROSE;
Переполнение кучи через задание некорректного имени irda-устройства;
Выход за границы буфера при вызове функции midi_synth_load_patch из состава sound/oss.
Из подсистем, в которых отмечены исправления, можно выделить: SCSI, KVM, drm/radeon, mac80211, ath9k, iwlwifi, v4l, USB, UBIFS, ALSA. Как минимум две из исправленных ошибок связаны с устранением уязвимостей: повышение привилегий через переполнение кучи из-за ошибки в реализации интерфейса /dev/mpt2ctl; возможность переполнения кучи через отправку устройству pmcraid специально оформленного ioctl (отправка данного запроса возможна только для пользователей с правами CAP_SYS_ADMIN, что значительно снижает риск, связанный с данной уязвимостью). ChangeLog_http://www.kernel.org...geLog-2.6.38.6 Patch (~125 Kb)_http://www.kernel.org...h-2.6.38.6.bz2 Downloads (~73 Mb)_http://www.kernel.org...6.38.6.tar.bz2
ЭЖД, 21.05.2011 - 11:33
Linux Kernel 2.6.39
В эту версию включен код ipset, добавлен планировщик потока пакетов CHOKe, обеспечена поддержка архитектуры UniCore-32, добавлена новая подсистема "media controller", интегрированы сетевые бэкенды Xen ("netback").
В новую версию принято 11055 исправлений от 1405 разработчиков, размер патча - 56 Мб (добавлено 11014 тыс. строк кода, удалено - 10979 тыс. строк). Около 39% всех представленных в 2.6.39 изменений связаны с драйверами устройств, примерно 26% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 12% связано с сетевым стеком, 5% - файловыми системами и 6% с внутренними подсистемами ядра.
Наиболее интересные новшества ядра 2.6.39:
Сетевая подсистема
Интеграция кода ipset, позволяющего повысить эффективность работы пакетного фильтра с большими списками IP-адресов и подсетей. Подробнее о последней версии ipset можно прочитать здесь;
Интегрирован новый планировщик потока пакетов CHOKe (CHOose and Keep), разработанный с целью избавления сетевых подсистем от излишней буферизации, приводящей к возникновению дополнительных задержек и понижению пропускной способности.
В соответствии c современными реалиями и рекомендациями RFC 3390 до 10 сегментов увеличен начальный размер скользящего окна TCP, что позволит примерно на 10% повысить отзывчивость при выполнении таких операций, как открытие пользователем web-сайтов;
Добавлена новая дисциплина планирования приоритетов, манипулирующая сразу несколькими очередями пакетов и поддерживающая вынос управления QoS на плечи сетевых адаптеров, поддерживающих данный вид акселерации.
Память и системные сервисы
Реализация техники трансцендентного управления памятью ("Transcendent memory"), позволяющей улучшить поведение системы при работе с не представляющими важность данными (например кэш) в условиях дефицита оперативной памяти. По сути Transcendent memory напоминает RAM-диск, имеющий ряд особенностей: размер RAM-диска не известен, запись данных не всегда может быть гарантирована и уже записанные данные могут быть очищены (удалены);
Реализация таймера CLOCK_BOOTTIME, позволяющего организовать автоматический выход системы из спящего режима в определенное время;
Добавление опции, заставляющей обработчики прерываний выполняться в виде нитей (threads);
Реализована новая подсистема "media controller", расширяющая возможности V4L2 в плане работы с устройствами аппаратной акселерации обработки мультимедиа-контента;
Последний компонент ядра избавлен от использования глобальной блокировки (Big Kernel Lock, BKL).
Специальные привилегированные процессы теперь могут записывать данные в /proc/pid/mem других процессов.
Дисковая подсистема, ввод/вывод и файловые системы
Реализация новых системных вызовов name_to_handle и open_by_handle, позволяющих пользовательским приложениям сопоставить имя файла с внутренней структурой file_handle или открыть файл, указав его handle. Нововведение может быть полезным для реализации серверов NFS и 9P на пользовательском уровне. Файловая система XFS уже поддерживает подобные механизмы, которые были реализованы через специализированные ioctl-вызовы FS_IOC_PATH_TO_HANDLE и XFS_IOC_OPEN_BY_HANDLE;
Добавлен новый системный вызов syncfs(int fd), который работает как sync() за исключением того, что сброс буферов на постоянный носитель осуществляется только для файловой системы, отождествленной с указанным файловым дескриптором;
Добавлена специализированная псевдо-файловая система "pstore", предназначенная для организации доступа к присутствующим на некоторых платформах хранилищам, позволяющим сохранить отладочную информацию о причине краха между перезагрузками;
Добавлено специальное блочное устройство "mtdswap", позволяющее осуществлять своппинг напрямую в MTD-устройства (Memory Technology Devices), оперирующие с Flash-памятью;
Проведена работа по повышению масштабируемости и производительности файловой системы Ext4 и подсистемы работы с блочными устройствами. Ext4 теперь по умолчанию монтируется с опцией mblk_io_submit, задействуя механизм Multiple Page-IO Submissions. Код по поддержке Multiple Page-IO Submission был добавлен ещё в 37 ветке, но содержал серьёзную ошибку, приводящую в определённых случаях к потере данных, и поэтому был отключён по умолчанию (сейчас данная ошибка исправлена). Также значительно обновлена документация по Ext4, добавлены разъяснения новых опций и обзор файлов в Procfs и Sysfs, создаваемых ФС;
В файловой системе Btrfs реализована функция Batched Discard, позволяющая информировать SSD-накопители о неиспользуемых областях.
Виртуализация и безопасность
Интегрированы недостающие сетевые бэкенды (xen-netback), необходимые для работы Xen Dom0;
В DRM-драйвер для Xen Dom0 добавлена поддержка менеджера памяти TTM (Translation Table Maps);
В реализацию IPSec добавлена поддержка расширенных номеров последовательностей, определенных в RFC-4304;
Начальная поддержка Linux capabilities в изолированных контейнерах "user namespace", что позволяет делегировать расширенные права (например, root-доступ) группе процессов, отождествленных с контейнером, которые могут быть использованы только внутри этой группы и не могут влиять на другие части системы. User namespace является своеобразной легковесной техникой виртуализации, при которой некоторые процессы могут быть отрезаны от остальной системы, работая в отдельном пространстве имен (необходимые для работы таких процессов ресурсы виртуально пробрасываются в контейнер);
В KVM обеспечена поддержка асинхронной обработки обращения к невыделенным страницам памяти (page faults), что дает возможность выполнения в гостевой системе не связанной с выделением памяти нити во время выделения хост-системой запрошенных страниц памяти.
Оборудование и аппаратные архитектуры
Добавлена поддержка новой архитектуры UniCore-32, разработанной в микропроцессорном центре Пекинского университета. Процессоры на базе архитектуры UniCore-32 активно используются в Китае;
Улучшения DRM/KMS-модулей:
Поддержка метода Page Flipping и Z-сжатия (Z-compression) для видеодрайвера Nouveau.
Реализация в DRM/KMS-драйвере Radeon поддержки карт Radeon HD 6900 "Cayman", а также поддержка тайлинга (tiling, процесс обработки изображения по частям с последующей раздельной обработкой фрагментов) для карт r6xx/r7xx.
Включение в состав ядра прототипа драйвера для карт Intel GMA 500 Poulsbo, который пока не поддерживает функции акселерации.
Добавление DRM-модуля для видеокарт с интерфейсом USB и USB2VGA-переходников на базе чипов DisplayLink, позволяющих подключить дополнительный монитор через USB-порт;
Начало работы по унификации кода поддержки платформ m68k и m68knommu;
Расширение поддержки оборудования, большинство изменений в ядре связаны с драйверами устройств:
Cистемы: VIA/WonderMedia VT8500/WM85xx SoC, платы IMX27 IPCAM и смартбуки MX51 Genesi Efika, платы CompuLab, сенсоры платформы Intel Medfield и WMI-интерфейс ноутбуков Asus;
Контроллеры блочных устройств: ARASAN CompactFlash PATA, Broadcom NetXtreme II FCoE и Freescale MXS Multimedia Card, кард-ридеры RealTek PCI-E;
Отмечено 109 исправлений, в анонсе выхода новых версий подчеркивается обязательность проведения обновления. Из подсистем, в которых исправлены ошибки, можно выделить: USB, xhci, drm/i915, drm/radeon, conntrack, KVM, Xen, vlan, netfilter, ipset, FS-Cache, cfq-iosched, NFSv4, nfsd, ALSA, ath9k, ath5k, IPVS.
Среди исправленных проблем: устранение ошибки в ipv4-стеке, приводившей к потере первого пакета в mulicast-потоке; решение проблемы в драйвере USB Hub, которая мешала переходу в спящий режим; устранение зацикливания в подсистеме md, проявляющегося при определенных обстоятельствах в процессе восстановления программного RAID.
Несколько исправлений связаны с безопасностью:
Отсутствие должной инициализации структур, обеспечивающих работу блокировок в коде, связанном с файловыми системами может привести к утечке информации из области ядра при использовании FUSE-модулей.
Ошибка в реализации функции inet_diag_bc_audit() из состава подсистемы inet_diag может привести к подстановке кода локальным пользователем или инициированию бесконечного цикла.
Внесено 102 исправления. Из подсистем в которые внесены исправления можно отметить: ALSA, GFS2, AppArmor, USB, NFS, CIFS, eCryptfs, Ext3, Ext4, drm/radeon, libsas, ath9k.
Из исправленных в ядре уязвимостей можно отметить:
Возможность совершения DoS-атаки (крах ядра) через отправку из локального сегмента сети специально сгенерированного трафика. Для успешной эксплуатации в ядре должна быть включена поддержка GRO (Generic Receive Offload); Ошибка в реализации функции "ptrace_setxregs()" позволяет локальному пользователю получить доступ к содержимому произвольной области памяти ядра. Проблема проявляется только на архитектуре Xtensa; Возможность осуществления локальной DoS-атаки из-за ошибки в реализации файловой системы GFS2.
Некоторые другие изменения:
USB: OHCI: исправлена регрессия для контроллеров NVIDIA USB: EHCI: вернулись к использованию системных часов для QH dm: исправлена утечка при выгрузке модуля idr drm/radeon/kms: исправлена карта i2c для rv250/280 drm/radeon/kms: добавлены недостающие vddci установки для NI+ powerpc/pseries/hvconsole: исправили падение консоли IB / SRP: исправлено дублирование устройств для сканирования LUN Ethtool: Разрешено регистрировать дампы нулевой длины ALSA: virtuoso: исправлено молчание аналогового выхода на Xonar Essence ST Deluxe memcg: исправлено поведение mem_cgroup_resize_limit () pmcraid: отклонен негативный размер запроса perf tools, x86: исправлена 32-разрядная компиляция на 64-битной системе rt2x00: добавлен идентификатор устройства для RT539F. hvc_console: Улучшена обработки put_chars для tty/консоли Kexec, x86: исправлено сохранение неверного адреса возврата; ARM: pxa/cm-x300: исправлена функциональность V3020 RTC nfsd4: исправлены утечки файловых дескрипторов в open_downgrade ChangeLog_http://www.kernel.org...hangeLog-3.0.1 Patch (~33 Kb)_http://www.kernel.org...atch-3.0.1.bz2 Downloads (~73 Mb)_http://www.kernel.org...-3.0.1.tar.bz2
ЭЖД, 3.11.2011 - 20:35
Linux Kernel 3.1.0
Добавлены поддержка процессорной архитектуры OpenRISC, произведена оптимизация производительности операций сброса страниц памяти из ОЗУ на диск, ускорена работа slab allocator, новая реализация подсистемы iSCSI, поддержка чипов NFC (Near Field Communication), код для контроля за bad-блоками в программном RAID, утилита "cpupowerutils" для управления питанием, активация в Ext3 режима сброса буферов "barrier", поддержка пульта Nintendo Wii Remote, драйверы для нового оборудования.
В новую версию принято 9403 исправления от 1318 разработчиков, размер патча - 49 Мб (добавлено 9240 тыс. строк кода, удалено - 9153 тыс. строк). Около 37% всех представленных в 3.1 изменений связаны с драйверами устройств, примерно 25% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 14% связано с сетевым стеком, 5% - файловыми системами и 5% c внутренними подсистемами ядра.
Наиболее интересные новшества ядра 3.1:
Дисковая подсистема, ввод/вывод и файловые системы
В код с реализацией программного RAID (MD) добавлена поддержка контроля дефектных блоков на диске, что позволило в некоторых уровнях RAID использовать диски с bad-блоками. Для использования данной функции необходима установка новой версии утилиты mdadm;
Новая реализация кода поддержки iSCSI target (RFC-3720), разработанная в рамках проекта Linux-iSCSI.org. Ранее используемая iSCSI-подсистема SCST признана устаревшей;
Для файловой системы Ext3 по умолчанию включена поддержка механизма "барьеров" (barriers), позволяющего обеспечить неизменность группы запросов в очереди ввода/вывода для корректной фиксации транзакций ФС: запросы в очереди могут подвергаться перестановке для оптимизации ввода/вывода, барьер изолирует связанные с транзакцией перестановки, чтобы гарантировать, что транзакция будет записана в журнал только после записи на диск фигурирующих в этой транзакции данных. Следует отметить, что "барьеры" используются по умолчанию в XFS, Btrfs и Ext4, в Red Hat Enterprise Linux поддержка "барьеров" давно активирована и для Ext3;
Многочисленные изменения, направленные на улучшение масштабируемости кода виртуальной файловой системы (VFS).
Ряд исправлений и оптимизаций для btrfs. Заметно увеличена производительность чтения списка элементов директорий. Переработан процесс использования блокировок в btree-дереве метаданных;
Увеличен максимальный размер файла в tmpfs. На 32-разрядных системах при размере страниц памяти в разделе подкачки 4kB, лимит на размер файла в tmpfs теперь составляет 2 Тб;
В NFS 4.1 добавлена поддержка IPv6 для pnfs-сервера;
Продолжена оптимизация производительности XFS;
В Fat16 обеспечена поддержка файлов и разделов, размером до 4 Гб;
В dm-raid добавлена поддержка RAID1, а также парсинга и использования отдельных устройств для хранения меданных;
Сетевая подсистема[list]
Интеграция беспроводного стека NFC (Near Field Communication) и нового типа сетевого сокета NFC. NFC разработан для обмена данными в пределах малого радиуса действия (около 10 см.) и все чаще используется в смартфонах, где находит применение для организации обмена данными, для контроля доступа и идентификации, а также для реализации систем мгновенной оплаты. Например, на смартфон могут быть записаны данные кредитной карты для использования которой достаточно приблизить телефон к специальному датчику в магазине. В музеях произведения могут быть снабжены NFC-метками, которые позволяют посмотреть более подробную информацию или просмотреть поясняющий суть экспоната видеоролик или аудиозапись;
Для генерации порядковых номеров TCP-пакетов (TCP/IP sequence number) и идентификаторов фрагментов пакетов теперь используются не 24-битные значения на основе хэша MD4 в сочетании с 8-разрядным счетчиком, а 32-битные идентификаторы на основе MD5 (lib/md5.c) без дополнительного счетчика. Использование MD4 в настоящее время не оправдано с точки зрения безопасности (высокая предсказуемость), а былой выигрыш в производительности на современных компьютерах ничтожно мал. Поэтому решено использовать более безопасный метод, основанный на хэше MD5;
Память и системные сервисы
Проведена оптимизация производительности работающего на уровне ядра процесса Writeback, выполняющего операции сброса страниц памяти из ОЗУ на диск. Новый код позволяет добиться более линейного ввода/вывода, избегая случайного доступа к диску при одновременном сбросе страниц памяти, привязанных к разным процессам;
Ускорена работа Slab allocator при выполнении интенсивной обработки slab-ов. В используемом по умолчанию slab-аллокаторе "slub" для архитектур, поддерживающих инструкции cmpxchg, в критических к производительности секциях использован более оптимальный код, требующий при работе меньшего числа блокировок;
В состав включен новый набор пользовательских утилит cpupowerutils, предназначенный для управления питанием CPU. Утилиты предоставляют расширенные средства мониторинга энергопотребления и адаптивного управления частотой процессора. Для достижения оптимального баланса между производительностью и энергопотреблением необходимо комбинировать различные методы отслеживания текущего энергопотребления и состояний простоя, включая задействование особенностей архитектур PPC, Itanium, ARM и x86, а также единую координацию управления энергией для CPU и GPU в составе одного APU. Сpupowerutils предоставляет доступ к подобным средствам в рамках одной утилиты;
Добавлена опция UNAME2 для смены идентификации ядра на 2.6.41 вместо 3.1 для решения проблем с совместимостью с некоторыми приложениями, доступными только в бинарном виде (например, управляющее ПО для некоторых принтеров);
В ptrace добавлена поддержка команд PTRACE_INTERRUPT, PTRACE_LISTEN, PTRACE_SEIZE и TRAP_NOTIFY;
В системный вызов lseek() добавлена поддержка флагов SEEK_HOLE и SEEK_DATA для выявления пустых областей и блоков данных внутри файла;
Оборудование и аппаратные архитектуры
Поддержка открытого микропроцессора OpenRISC и связанной с ним процессорной архитектуры. В настоящее время добавлена поддержка 32-разрядного семейства OpenRISC 1000 (or1k). OpenRISC создан сообществом OpenCores, объединяющем людей, занимающихся проектированием полностью открытой микроэлектроники. Наработки проекта уже производятся многими коммерческими компаниями в виде интегральных микросхем ПЛИС и БМК. Полный исходный код процессора на языке описания аппаратуры Verilog, схемы, firmware, а также модифицированный инструментарий GNU открыты всем желающим на условиях лицензий GPL и LGPL. Текущая версия процессора, именуемая OpenRISC 1200, включает в себя процессорное ядро, реализующее набор инструкций ORBIS32, опциональный блок арифметики с плавающей точкой ORFP32X, пятиступенчатый конвейер, блок DSP, раздельные блоки управления памятью для данных и инструкций. По заявлениям создателей производительность процессора близка к ARM10;
Добавлен HID-драйвер для пульта дистанционного управления Nintendo Wii Remote;
Добавлен новый WiFi-драйвер rtl8192de для карт на базе чипов Realtek RTL8192DE и RTL8188DE. В драйвере b43 расширена поддержка 802.11n-совместимых чипов Broadcom, таких как BCM43224 и BCM43225;
В звуковой драйвер snd-ctxfi добавлена поддержка карт Creative Titanium HD. Добавлена поддержка DVB-демодулятора Micronas DRX-K DVB-C/T и тюнера TDA18271C2. В состав ядра включен драйвер Ddbridge, поддерживающий видеооборудование от компании Digital Devices, например, ресиверы Octopus, Octopus mini и Octopus LE, а также тюнеры DuoFlex S2 и DuoFlex CT;
В DRM-модуль драйвера Nouveau добавлена поддержка автоматической генерации микрокода для чипов Fermi (GeForce 400 и 500). Дополнительно обновлены DRM-модули для карт Intel и ATI/AMD. В DRM-модуле Intel по умолчанию включена поддержка режима энергосбережения "RC6";
Виртуализация и безопасность
В KVM обеспечена возможность запуска вложенных виртуальных окружений, т.е. выполнения гостевой системы из другой гостевой системы;
В коде XEN Dom0 обеспечена возможность вывода текста через VGA-консоль, поддержка проброса PCI-устройств в гостевые окружения и возможность использования Memory hotplug в драйвере balloon;
Обеспечено повышение производительности сетевой подсистемы в виртуализированных окружениях, за счет поддержки Zero-copy в драйверах macvtap и vhost-net;
Memory hotplug API расширен для обеспечения горячего подключения памяти в виртуальных машинах;
Для архитектуры PPC64 добавлен JIT-компилятор для правил BPF (Berkeley Packet Filter), ранее поддерживающий работу только на системах x86-64. JIT-компиляция правил BPF позволяет значительно увеличить производительность обработки пакетов при использовании инструментов, подобных libpcap/tcpdump;
Для действия AUDIT в Netfilter добавлена поддержка контекста SELinux;
В ipset добавлена поддержка указания диапазонов IPv4-адресов при добавлении и удалении элементов хэшей "net", например, "ipset new test hash:net; ipset add test 10.2.0.0-10.2.1.12";
Во фреймворк TOMOYO, позволяющий привязать политику безопасности процесса к файловому пути, способом похожим с AppArmor, добавлена поддержка групп ACL, интерфейса для аудита, встроенных правил, раздельных пространств имён (policy namespace);
добавлен специальный ABI x32, позволяющий 32-битным программам, работающим на 64-битном ядре, получать доступ к 64-битным регистрам, оперируя при этом 32-битными указателями, что даёт возможность пользоваться преимуществами современных процессоров без увеличения потребления памяти;
внесены изменения в код Xen, позволяющие посылать гипервизору информацию о частоте ядра и состояниях сна, на основе которой гипервизор может управлять P- и C-состояниями процессора;
продолжена работа по унификации кода для поддержки платформы ARM;
улучшена интеграция ядра и udev, что позволяет подгружать модули, обеспечивающие использование специфических возможностей процессора, например, для подсчёта CRC;
интегрирован модуль безопасности Yama, позволяющий обезопасить процессы от исследования их памяти с помощью ptrace;
добавлена поддержка SMP на NVIDIA Tegra 3;
в файловых системах, подсистеме устройств хранения и драйверах:
повышено быстродействие btrfs, а также проведена работа по улучшению обработки ошибок;
из ext4 убраны опции монтирования journal=update и resize;
улучшена поддержка NFS;
добавлена поддержка qnx6fs в режиме «только для чтения»;
добавлена поддержка discard для dm-thin;
в подсистему SCSI добавлена реализация спецификации Universal Flash Storage;
в драйвер brcmfmac добавлена поддержка чипов bcm43235/6/8 USB;
в драйвер rt2x00 внесён код поддержки RT5372;
в драйвер rtl8187 добавлена поддержка режима «ad hoc»;
расширен спектр поддерживаемых устройств DVB;
добавлена поддержка чипсетов Intel Lynx Point, которые планируется выпустить в 2013 году;
добавлена поддержка тачпада Synaptics, подключенного по шине USB;
улучшена поддержка аудиокодеков Realtek;
драйвер подсистемы хранения Hyper V вынесен из области staging в подсистему SCSI;
в область staging добавлен драйвер android-alarm;
добавлена подсистема RAMster, позволяющая перемещать данные при нехватке памяти на другие устройства в кластере;
в графической подсистеме:
драйвер nouveau вынесен из области staging в подсистему DRM, и в него добавлена начальная поддержка GeForce GTX 680;
в драйвер Radeon DRM/KMS добавлена поддержка семейства графических ядер Southern Islands и Trinity;
режим энергосбережения RC6 включен по умолчанию для Sandy Bridge;
исправлен баг в драйвере i915, который приводил к повреждению памяти при выходе из гибернации (S4);
добавлен драйвер udl, обеспечивающий поддержку протокола DisplayLink для управления USB-мониторами;
внесены изменения, которые в будущем обеспечат поддержку подключения/отключения графических устройств «на лету», т.е., без перезагрузки X-сервера или другого вмешательства со стороны пользователя.
Из основных улучшений можно отметить: поддержка контрольных сумм для обеспечения целостности метаданных в Ext4; система профилирования приложений на пользовательском уровне; механизм создание sandbox-окружений с изоляцией системных вызовов; реализация новых алгоритмов управления очередями пакетов для борьбы с задержками в результате излишней буферизации; возможность сохранения состояния сетевых соединений между перезагрузками; поддержка RFC 5827 (TCP Early Retransmit); реализация по умолчанию активного спящего режима, подобного используемому в платформе Android; учёт статистики о проблемах с вводом/выводом в Btrfs; возможность проброса SCSI поверх Firewire и USB.
В новую версию принято около 11 тысяч исправлений от более чем 1200 разработчиков, размер патча - 42 Мб (изменения затронули 9631 файлов, добавлено 623283 строк кода, удалено 410731 строк). Около 38% всех представленных в 3.5 изменений связаны с драйверами устройств, примерно 26% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 15% связано с сетевым стеком, 5% - файловыми системами и 5% c внутренними подсистемами ядра. ChangeLog_http://www.kernel.org.../ChangeLog-3.5 Patch (~6,3 Mb)_http://www.kernel.org...0/patch-3.5.xz Downloads (~64 Mb)_http://www.kernel.org...nux-3.5.tar.xz
ЭЖД, 4.11.2013 - 10:40
Linux Kernel 3.12.0
В этом выпуске реализован offline-режим дедупликации в Btrfs, многопоточная реализация RAID5, новая цель "SYNPROXY" в netfilter, планировщик пакетов FQ, реализация Render Nodes в подсистеме DRI, новый алгоритм OOM, драйвер для GPU из состава Qualcomm Snapdragon, поддержка APU AMD Berlin. Около 46% всех представленных в 3.12 изменений связаны с драйверами устройств, примерно 20% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 12% связано с сетевым стеком, 5% - файловыми системами и 4% c внутренними подсистемами ядра. Patch (~5,8 Mb)_ftp://ftp.kernel.org.../patch-3.12.xz Downloads (~74 Mb)_ftp://ftp.kernel.org...ux-3.12.tar.xz
Тихо и незаметно вышло в свет ядро Linux 4.4 LTS (Long-Term Support), о чем известил Линус Торвальдс. Новинка включает довольно значительные обновления, включая, например, 3D поддержку виртуальных дравейров GPU. Благодаря этому можно использовать аппаратную поддержку графики в guest VM. Также включена поддержка Open-Channel Solid State Drives (SSDs) посредством LightNVM.
» Нажмите, для открытия спойлера | Press to open the spoiler «
Более того, Linux kernel 4.4 LTS поддерживает RAID5 MD, добавлена возможность непривилегированным пользователям запускать eBPF программы. Также стоит упомянуть поддержку поллинга для улучшения общей производительности high-end устройств хранения данных, mlock2() syscal и многое другое. Улучшена поддержка 64-битных ARM, решена проблема с утечкой памяти в Skylake CPU от Intel. Добавлена возможность работы слушающих TCP-сокетов в неблокирующем режиме, возможность определения потери TCP-пакетов с использованием RACK, добавлен KMS-драйвер для «малинки» (Raspberry Pi), а xconfig переведён на Qt5.
В новой версии принято примерно 13 тысяч исправлений, внесенный 1548 разработчиками. Примерно 44% всех изменений в новой версии ядра связано с драйверами устройств.
Обновлены старые драйвера, добавлено множество новых, исправлены баги и проблемы предыдущих версий ядра. Больше информации можно найти здесь и здесь (на русском языке).
В целом, Linux 4.4 LTS является самой продвинутой long-term веткой среди всех прочих. Вероятно, именно эта версия ядра будет использована в Ubuntu 16.04 LTS (Xenial Xerus) и многих других дистрибутивах. Также можно надеяться на интеграцию 4.4 LTS в Arch Linux.
Все нужное для сборки нового ядра можно найти на kernel_org
»» Нажмите, для закрытия спойлера | Press to close the spoiler ««
HugoBo-SS, 16.05.2016 - 15:14
Linux kernel 4.6
Среди наиболее заметных изменений: новая файловая система OrangeFS, поддержка USB 3.1 SuperSpeedPlus (10Gbps), возможность использования интерфейса датаграмм для отправки/приёма отдельных сообщений по TCP, поддержка шифрования на уровне кадров Ethernet, реализация mesh-протокола B.A.T.M.A.N V, поддержка cgroup namespaces, слой pNFS SCSI для NFSv4.1, поддержка 3D-ускорения для GPU NVIDIA GeForce GTX 900 "Maxwell", режим монтирования "nologreplay" в Btrfs, более агрессивное забирание памяти в OOM killer.
В новую версию принято более 12 тысяч исправлений от примерно 1500 разработчиков, размер патча - 37 Мб (изменения затронули 9990 файлов, добавлено 517234 строк кода, удалено 249061 строк). Около 46% всех представленных в 4.6 изменений связаны с драйверами устройств, примерно 20% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 12% связано с сетевым стеком, 5% - файловыми системами и 4% c внутренними подсистемами ядра.
Из наиболее интересных новшеств ядра Linux 4.6 можно отметить: Дисковая подсистема, ввод/вывод и файловые системы
» Нажмите, для открытия спойлера | Press to open the spoiler «
В состав добавлена распределённая файловая система OrangeFS, рассчитанная на применение в высокотехнологичных high-end-серверах и кластерах для достижения максимальной производительности доступа к данным из распараллеленных приложений. OrangeFS позиционируется как продолжение разработки проекта PVFS, развивая его в таких областях как отказоустойчивость и расширенные механизмы контроля доступа. Из типичных областей применения OrangeFS называются высокопроизводительные вычисления (HPC), обработка больших объёмов данных (BigData), потоковое вещание видео, решение задач геномики и биоинформатики; Для файловой системы OCFS2 (Oracle Cluster File System) реализована система проверки целостности файлов, которая позволяет без отмонтирования ФС восстановить работу в случае возникновения некоторых видов сбоев. Если ранее при выявлении ошибок с числом inode для файла вся ФС переводилась в режим только для чтения, то теперь реализован специальный простой механизм проверки, который в случае проблем с числом inode, выполняет проверку и корректировку inode; В сервер NFSv4.1 добавлена раскладка pNFS SCSI с реализацией варианта раскладки блочного устройства, использующего команды SCSI для улучшенной изоляции и идентификации устройства. При использовании pNFS SCSI сервер NFS выступает в роли сервера метаданных для pNFS, который кроме обработки всех запросов к метаданным предоставляет клиентам прямой доступ к хранилищу через логические устройства SCSI (SCSI LUN), которые могут быть совместно использованы всеми клиентами. Для работы раскладок pNFS SCSI требуется их поддержка на стороне экспортируемой файловой системы, которая пока доступна только в XFS; В Btrfs уменьшено с 4 до 2 Кб значение по умолчанию параметра max_inline, т.е. теперь только файлы меньше 2 Кб будут упаковываться вместе с метаданными внутри inode. Представлена новая опция монтирования "nologreplay", отключающая ведение replay-лога, что полностью блокирует возможность изменения данных в ФС. В сочетании с опцией "ro" позволяет получить действительно доступные только для чтения разделы, аналогичные ФС ext и xfs в рижме "norecovery" (невозможно перемонтировать в режим записи через "remount,rw" без полного отмонтирования ФС). Добавлена новая опция монтирования "usebackuproot", которая заменила собой опцию "recovery", вводящую в заблуждение своим не совсем точным названием; В XFS добавлен новый ioctl для управления квотами (Q_XGETNEXTQUOTA), позволяющий утилите quotactl быстро найти все активные квоты, путём перебора только inode с параметрами квот, пропуская незадействованные inode; В Ext4 переписана реализация кэша mbcache, что положительно повлияло на масштабируемость xattr; В F2FS, развиваемой компанией Samsung высокопроизводительной файловой системе для Flash-накопителей, ускорена обработка пустот в карте распределения блоков и экспортирована статистика записанных во время работы ФС данных (/sys/fs/f2fs/disk/lifetime_write_kbytes); Для файловой системы FAT в настройки сборки ядра добавлена опция CONFIG_FAT_DEFAULT_UTF8 для включения UTF-8 по умолчанию при монтировании разделов с FAT
»» Нажмите, для закрытия спойлера | Press to close the spoiler ««
Сетевая подсистема
» Нажмите, для открытия спойлера | Press to open the spoiler «
Добавлена подсистема Kernel Connection Multiplexor (KCM), предоставляющая средства для эффективного приёма и отправки сообщений по TCP, используя при этом программный интерфейс датаграмм. Т.е. предлагаются средства для построения протоколов уровня приложения, манипулирующих отправкой отдельных сообщений, при том, что для передачи сообщений используется TCP для гарантии доставки, но API похож на UDP и не требует возни с установкой соединения (операции установки и завершения соединения выполняются автоматически); Поддержка пятой версии mesh-протокола B.A.T.M.A.N. ("Better Approach To Mobile Adhoc Networking), позволяющего создавать децентрализованные сети, каждый узел в которых связан через соседние узлы. Новая редакция примечательная разделением протокола OGM на два отдельных компонента - ELP (Echo Location Protocol) и OGMv2. ELP отвечает за обнаружение соседей и оценку качества линка, а OGMv2 реализует алгоритм распространения метрик по сети и определяет оптимальные маршруты. Кроме того, протокол больше не полагается на потерю пакетов, а отталкивается от определённой пропускной способности; Добавлен новый API "devlink", предоставляющий возможность изменять различные сетевые параметры, специфичные для определённого класса устройств. Например, можно узнать или установить тип порта (Ethernet/InfiniBand), настраивать параметры коммутации и управлять разбиением порта для подключения разветвителя; В ядро интегрирован механизм LCO (Local Checksum Offload), позволяющий ускорить выполнение операций расчёта контрольных сумм пакетов для тунелированных протоколов; В сокеты, открытые в режиме TCP_INFO, добавлена поддержка RFC-4898 (tcpEStatsPerfDataSegsOut/In с результатами подсчёта принятых/отправленных сегментов с данными с учётом повторной передачи потерянных сегментов) и новые опции tcpi_min_rtt и tcpi_notsent_bytes, выдающие минимальный RTT для потока и размер очереди ещё не отправленных данных
»» Нажмите, для закрытия спойлера | Press to close the spoiler ««
Память и системные сервисы
» Нажмите, для открытия спойлера | Press to open the spoiler «
В USB-стеке обеспечена поддержка протокола SuperSpeedPlus, определённого в спецификации USB 3.1 и позволяющего добиться скорости передачи данных до 10Gbps, например, при подключении внешних накопителей класса USB 3.1 Gen2; Проведена работа по увеличению надёжности кода, отвечающего за принудительное завершение задач в условиях нехватки памяти в системе (OOM killer). В частности, решена проблема с задержками высвобождения памяти в случае принудительного завершения процессов, завершение которых задерживается из-за нахождения в непрерываемом состоянии ожидания события от другого процесса, который оказывается заблокирован системой распределения страниц памяти. Для решения этой проблемы добавлен специализированный поток ядра oom_reaper, который пытается сразу вернуть системе анонимную или вытесненную в раздел подкачки память убиваемого OOM killer процесса, полагая, что процессу эта память уже не нужна так как он всё равно будет завершён; Поддержка управления питанием хост-контроллера AHCI во время работы, что позволяет перейти к более глубоким режимам энергосбережения, инициировав прекращение подачи энергии на контроллер в случае перевода всех SATA-портов в режим сна; В API DMA-BUF, позволяющем организовать совместное использования буферов драйверами и различными подсистемами (V4L2, DRI и т.п.), добавлен новый ioctl DMA_BUF_IOCTL_SYNC для управления согласованностью кэша между CPU и GPU. Новый ioctl позволяет решить проблемы с согласованностью кэша при одновременном доступе к ресурсам CPU и GPU через dma-buf; Новые системные вызовы preadv2() и pwritev2(), которые отличаются от preadv() и pwritev() наличием ещё одного аргумента для передачи ядру дополнительных флагов. Первым поддерживаемым флагом стал RWF_HIPRI для полинга высокоприоритетных запросов; Выполнена достаточно большая переработка и реструктуризация подсистемы perf. Расширены возможности утилиты perf, например, в командах 'perf top' и 'perf report' появился режим отображения многоуровневых гистограмм ("perf top --hierarchy -s comm,dso"); Добавлена новая опция загрузки ядра "irqaffinity=", которая позволяет ограничить число ядер CPU, на которые будет направляться обработка прерываний (например, пользователь может выделить процессор для каких-то задач, будучи уверенным, что он не будет прерываться на обработку прерываний); В состав интегрирована первая часть изменений, подготовленных в рамках проекта по переработке механизма горячего подключения CPU; В отладочном инструменте KASan (Kernel address sanitizer) появилась поддержка выявления ошибок работы с памятью в Slab memory allocator; Добавлена поддержка механизма проверки корректности обращений к стеку, работающего во время компиляции ядра
»» Нажмите, для закрытия спойлера | Press to close the spoiler ««
Виртуализация и безопасность
» Нажмите, для открытия спойлера | Press to open the spoiler «
Представлен "cgroup namespaces", механизм виртуализации точек монтирования cgrops и представления /proc/$PID/cgroup, что позволяет использовать в разных контейнерах отдельные иерархии cgroup, не позволяющие получить доступ к информации из системной иерархии. Например, без cgroup namespaces из изолированного процесса через /proc/$PID/cgroup можно получить такую информацию как полный путь cgroup процесса. Для создание пространства имён cgroup в вызовы clone(2) и unshare(2) добавлен новый флаг CLONE_NEWCGROUP; Добавлена поддержка механизма ключей защиты памяти Intel MPK (Memory Protection Keys), реализованного в готовящемся к выпуску новом поколении процессоров Intel. MPK даёт возможность приложениям пользовательского уровня разбить используемую память на зоны, применив к каждой зоне дополнительные ограничения, например, можно установить права при которых код может быть запущен, но не может быть прочитан.
MPK позволяет закодировать управляемые пользователем маски прав доступа в элементах таблицы страниц памяти (PTE): вместо одной фиксированной маски доступа в PTE, которая требует системного вызова для изменения и работает в привязке к странице памяти, MPK позволяет пользователю определить несколько вариантов масок через специальный регистр (PKRU). В PKRU для каждой маски можно задать раздельные флаги запрета доступа и запрета записи. Подобный подход позволяет динамически переключать флаги доступа для очень больших областей памяти, манипулируя лишь регистром CPU, без внесения изменений для каждой страницы памяти. Кроме того появляется возможность более точного управления флагами прав доступа MMU, например, отделить обработку флагов исполнения и чтения; Возможность шифрования в Ethernet на уровне MAC (MACsec), определённая в стандарте IEEE 802.1AE. Позволяет шифровать и аутентифицировать весь трафик в локальной сети, используя алгоритм GCM-AES-128, что позволяет защитить от перехвата трафик DHCP и VLAN, а также помешать модификации заголовков кадров Ethernet; Интегрирована разработанная проектом grsecurity технология защиты (__ro_after_init), позволяющая создавать доступные на чтение и запись области памяти, используемые только во время инициализации и переводимые в режим только для чтения после инициализации; На архитектурах i386 и X86_32 (в том числе для 32-разрядных программ, запускаемых в 64-разрядном окружении) включена полная рандомизация адресного пространства: ранее применялась только рандомизация стека и исполняемых областей, теперь ASLR применяется для любых областей, выделенных через mmap(), области системных вызовов vDSO и размещения библиотек
»» Нажмите, для закрытия спойлера | Press to close the spoiler ««
Оборудование
» Нажмите, для открытия спойлера | Press to open the spoiler «
В DRM-драйвер для видеокарт NVIDIA (Nouveau) добавлена поддержка чипсета GM200 и возможность загрузки прошивок для карт GM20x (GeForce GTX 900 "Maxwell"), верифицируемых по цифровой подписи, что позволило задействовать механизмы аппаратного 3D-ускорения для GPU Maxwell (для прошивок без цифровой подписи закрыт доступ к средствам ускорения 3D-операций); Расширены возможности DRM-драйвера для видеокарт Intel: Для процессоров Haswell, Broadwell, Valleyview и Cherryview включена по умолчанию поддержка PSR (Panel Self Refresh). Для процессоров Haswell и Broadwell включена по умолчанию поддержка технологии FBC (Frame-Buffer Compression), которая позволяет добиться существенного снижения энергопотребления в условиях отображения необновляемой картинки на экране. Продолжена работа над поддержкой атомарного подключения дисплеев. Улучшены средства адаптивного управления питанием; В драйвере AMDGPU появилась поддержка звука i2s, возможность сброса состояния GPU и представлен новый интерфейс sysfs для ручного изменения параметров powerplay, влияющих на производительность и энергопотребление; Для архитектуры ARM64 реализована поддержка ASLR (рандомизация адресного пространства) и добавлена доступная в ARMv8.2 возможность "user access override" для дополнительной защиты от непредусмотренного функциональностью обращения из ядра к памяти пользовательских процессов; Значительно переработана реализация устройства GPIO; Поддержка гигабитных Ethernet-контроллеров MediaTek MT7623 и карт Intel Ethernet X722 iWARP; Поддержка новых ARM SoC Axis Artpec-6, TI Keystone k2g, Mediatek MT7623, Allwinner A83T, NXP i.MX6QP, ST Microelectronics stm32f469, Annapurna Labs Alpine v2, Marvell Armada 3700, Marvell Armada 7000/8000, Amlogic S905, Qualcomm Snapdragon 820, Socionext UniPhier, ARM Juno, Allwinner A64 и Broadcom Vulcan. Начальная поддержка CPU POWER9
»» Нажмите, для закрытия спойлера | Press to close the spoiler ««
Очередная стабильная версия ядра включает в себя ряд крупных изменений: • Подключение планировщиков ввода-вывода к подсистеме многоуровневых очередей для блочных устройств (blk-mq). Пока доступен deadline, но к 4.12 будут и CFQ с BFQ. • Алгоритм использования файлов/разделов подкачки переработан с прицелом на SSD. • В режимах RAID 4/5/6 подсистемы MD появилась поддержка журналирования на отдельный NVRAM или SSD. • Новый системный вызов statx() — более современная и мощная версия stat(). • Утилита perf ftrace — фронтенд для системы отладки ftrace. • Поддержка спецификации OPAL для шифрования данных на NVMe-накопителях — мера безопасности для утерянных носителей. • Ряд правок и модификаций в cgroup, RCU, inotify, пространствах имён, таймерах и прочих системах.
Изменения в файловых системах: • Шифрование общих разделов CIFS и SMB2.1/3 для DFS. • Опция монтирования debug_want_extra_isize для Ext4. • Вызов ioctl EXT4_IOC_SHUTDOWN — проверка остановки раздела Ext4 и ненужности сброса кэшей. • F2FS по умолчанию хранит xattr в инодах, для отключения этого доступна опция монтирования noinline_xattr. Команда discard выполняется асинхронно в отдельном потоке. • В OverlayFS устранено «бутылочное горлышко» — файлы копируются параллельно, а не один за другим. • Поправки в работе контрольных сумм Btrfs.
Изменения в подсистеме памяти: • Поддержка интерфейса vmstats для kcompactd. • Затраты на выделение и освобождение памяти снижены на 30%. • Опция defer+madvise для дефрагментации Transparent Huge Pages. • Улучшена дедупликация в KSM. • Из ZRam удалены устаревшие атрибуты sysfs.
Виртуализация и безопасность: • Драйвер PTP для доступа к хост-часам реального времени из гостей KVM и Hyper-V. • Вызов IOCTL_PRIVCMD_DM_OP — ограничение количества операций гипервизора Xen и аудит таких операций для гостевых доменов. Также реализован вызов IOCTL_PRIVCMD_RESTRICT для изоляции и безопасности гостевого домена на уровне HVM при сохранении режима PV для работы с оборудованием. • Модуль virtio_blk теперь конфигурируется для проброса SCSI. • Полноценная поддержка шифрования в подсистеме virtio. • Siphash — очень быстрый и безопасный алгоритм хэширования. • Операции шифрования AES теперь могут выполняться за фиксированное время. • По адресу /sys/kernel/security/lsm можно увидеть список загруженных LSM-модулей. • Алгоритм chacha20 для генерации случайных int и long чисел. • В Apparmor теперь доступны политики для неймспейсов, принудительный флаг complain для режима обучения, интроспекция нймспейсов политик. Удалён параноидный уровень безопасности.
Изменения в сетевой подсистеме: • Начальная поддержка протокола SMC-R для организации TCP-каналов поверх RDMA. • Алгоритм SipHash теперь используется для генерации последовательностей номеров и для SYN cookies. • В протоколе TCP доступен RACK — детектор потери пакетов на основе времени их отправки. • Опция TCP_FASTOPEN_CONNECT для быстрого открытия TCP-сокетов на стороне клиента. • Ряд улучшений в работе ipv4/6, мостов, беспроводных сетей, подсистеме netfilter, и т.д.
Поддержка архитектур: • Процессоры THUNDER2 архитектуры ARM64. • Стек IRQ и cacheinfo для MIPS. • Оптимизация операций на OpenRISC. • Для PowerPC доступны плагины gcc, доработки в KVM и драйверах устройств. • Страницы памяти размером 64 Кб и 2 Гб для SPARC. • В нашей унылой х86 появились AVX512_VPOPCNTDQ и EFI_MEMORY_ATTRIBUTES_TABLE, работа Turbo Boost Max 3.0 для систем без P-State, поддержка perf для Kaby Lake, и др.
Драйверы оборудования: • Модуль tinydrm для создания примитивных экранов с бэкендом CMA-фреймбуфера. • Ряд доработок в драйвере i915, в том числе поддержка новой SoC Gemini Lake. •В AMDGPU добавлен PCI-идентификатор Polaris, начальная поддержка виртуализации SR-IOV, и расширены возможности профилирования. • Начата работа по интеграции системы управления питанием в драйвер Nouveau. • В ZTE доступны передача звука HDMI через SPDIF и драйвер tvenc. • Новые контроллеры и устройства Bluetooth, Infiniband, HDA-кодеки, тачскрины, ТВ-тюнеры, видеокамеры, HID, USB, и др.
»» Нажмите, для закрытия спойлера | Press to close the spoiler ««
Среди наиболее заметных изменений: поддержка журналирования в программном RAID 4/5/6, новый тип сокетов SMC-R, встроенная реализация SipHash, системный вызов statx(), поддержка протокола Opal для работы самошифруемыми накопителями, раздельные буферы с историей прокрутки для консолей.
В новую версию принято около 12 тысяч исправлений от 1500 разработчиков, размер патча - 39 Мб (изменения затронули 12479 файлов, добавлено 530154 строк кода, удалено 232358 строк). Около 48% всех представленных в 4.11 изменений связаны с драйверами устройств, примерно 20% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 14% связано с сетевым стеком, 4% - файловыми системами и 5% c внутренними подсистемами ядра.
Основные новшества:
» Нажмите, для открытия спойлера | Press to open the spoiler «
Дисковая подсистема, ввод/вывод и файловые системы В реализации RAID 4/5/6 на базе подсистемы MD появилась поддержка журналирования, защищающая от потери данных в случае пропадании питания или краха. Реализация подготовлена компанией Facebook. Журнал ведётся на отдельном носителе (SSD или NVRAM). Все данные вначале отражаются в журнале, после чего разносятся по дискам, входящим в RAID-массив. В ситуации неожиданного отключения питания, даже если RAID находился в деградированном состоянии или данные были записаны лишь на часть дисков, повреждений удастся избежать, так как вся информация о транзакции отражена в журнале; Для файловой системы ext4 реализована новая ioctl-команда EXT4_IOC_SHUTDOWN, которая позволяет убедиться, что раздел остановлен и нет необходимости в сбросе данных, остающихся в оперативной памяти. Возможность подготовлена по аналогии с командой XFS_IOC_GOINGDOWN; В файловой системе CIFS реализована поддержка шифрованного доступа к разделам с использованием протокола SMB3; В многоуровневой системе очередей (multiqueue), рассчитанной на организацию многопоточного доступа к данным на многоядерных системах, появилась поддержка подключения планировщиков ввода/вывода. В настоящее время для multiqueue пока портирован только планировщик deadline, ведётся портирование планировщика ввода/вывода BFQ, который ожидается в ядре 4.12; Добавлена возможность работы с накопителями, соответствующими спецификации Opal, которая определяет механизм шифрования хранимых данных, позволяющий не допустить утечку информации в случае попадания носителя информации не в те руки. Поддержка Opal добавлена только для поддерживающих данную технологию NVME-контроллеров. Пользователям предоставлены команды для настройки, блокирования при переходе в спящий режим и разблокирования SED-накопителей (Self-Encrypting Drives); В F2FS, развиваемой компанией Samsung высокопроизводительной файловой системе для Flash-накопителей, включена по умолчанию опция inline_xattr, обеспечивающеая inline-хранение в inode атрибутов xattr. Для отключения предложена опция монтирования "noinline_xattr". Добавлен отдельный поток для асинхронного выполнения команд "discard"; В OverlayFS обеспечена поддержка многопоточного копирования содержимого обычных файлов (ранее операции копирования выполнялись последовательно, что было узким местом в производительности); Отключена поддержка NFSv4 по UDP, которая была в неработоспособном виде и расходилась со спецификацией. Также по умолчанию отключены метки безопасности для NFS (для активации при экспорте следует явно указывать security_label), так как данная возможность имеет смысл только при установке на сервере и клиенте похожих правил SELinux; Виртуализация и безопасность Для использования с ядром портирован GCC-плагин structleak, разработанный проектом Grsecurity и выполняющим принудительную инициализацию структур, передаваемых в пространство пользователя для блокирования возможных утечек информации; В ядро встроена реализация алгоритма SipHash, предоставляющего более безопасный и быстрый метод хэширования; В Xen добавлена поддержка загрузки гостевых систем в режиме PVH, комбинирующем элементы режимов паравиртуализации (PV) для ввода/вывода, обработки прерываний, организации загрузки и взаимодействия с оборудованием, с применением полной виртуализации (HVM) для ограничения привилегированных инструкций, изоляции системных вызовов и виртуализации таблиц страниц памяти; Для KVM реализован драйвер PTP, позволяющий получить доступ из гостевой системы к часам реального времени хост-системы, что даёт возможность использовать Chrony для высокоточной синхронизации часов хоста и гостевой системы; Добавлен интерфейс /sys/kernel/security/lsm, через который можно узнать список активных LSM-модулей; Добавлена реализация алгоритма шифрования AES, обеспечивающая фиксированное время выполнения для защиты от атак, пытающихся определить характер данных на основе изменения времени обработки операции; Реализация генератора псевдослучайных чисел переведена с хэширования MD5 на использование безопасного и быстрого алгоритма поточного шифра ChaCha20 при формировании энтропии для целочисленного вывода get_random_int и get_random_long; Добавлен sysctl для загрузки правил AppArmor непривилегированным пользователем для нового namespace; Сетевая подсистема Реализован новый тип сокетов "SMC-R" (Shared Memory Communications over RDMA, RFC-7609), предназначенный для организации похожих на TCP каналов связи поверх транспорта RDMA (Remote Direct Memory Access). Протокол разработан компанией IBM и позволяет без внесения изменений (загрузив библиотеку через LD_PRELOAD) адаптировать уже написанные для TCP приложения для работы в сетях RoCE (RDMA over Converged Ethernet); Добавлен модуль "psample" для выборки сетевых пакетов, проходящих через сетевой интерфейс, для дальнейшего отсеивания фильтром-классификатором; В сетевой подсистеме теперь применяется SipHash вместо MD5 для генерации номеров последовательности и вместо SHA1 для syncookies; В TCP-стеке включён по умолчанию механизм определения потери пакетов RACK, который в отличие от штатного метода определения факта потери пакета, отталкивается от времени передачи, а не последовательности прихода пакетов. Суть работы RACK в том, что при получении ACK-подтверждения для пакета, любые неподтверждённые пакеты, отправленные как минимум на RTT (round-trip time) раньше подтверждённого пакета, считаются потерянными и потребуют повторной отправки. Новый алгоритм уже протестирован в инфраструктуре Google и предложен для утверждения в качестве стандарта IETF (draft-ietf-tcpm-rack-01); Для TCP-сокетов добавлена новая опция TCP_FASTOPEN_CONNECT, которую можно использовать в качестве альтернативного метода включения режима Fast Open на стороне клиента; Параметры tcp_max_syn_backlog, tcp_tw_recycle и tcp_max_tw_buckets теперь могут раздельно выставляться для разных пространств имён; Добавлен драйвер "ipvtap" для создания сетевых интерфейсов Ipvlan, для управления которыми можно применять инструменты, рассчитанные на работу с устройствами TAP; Память и системные сервисы Добавлен системный вызов statx() с реализацией более эффективного и функционального варианта stat(), возвращающего расширенную информацию о файле, включая время создания файла и специфичные для файловых систем флаги; Реализованы раздельные буферы прокрутки для VGA-консолей. Ранее для всех консолей применялся один общий буфер прокрутки, что приводило к очистке всей не вмещающейся на экран истории после переключения на другую консоль. После внесения изменения просмотр истории прокрутки стал похож на работу с историей в tmux и screen. По умолчанию возможность отключена, так как наблюдаются проблемы с совместимостью с утилитами (например, clear_console), завязанными на очистку буфера после каждой смены консоли. Для включения следует передать при загрузке параметр "vgacon.scrollback_persistent=1" или собрать ядро с опцией "VGACON_SOFT_SCROLLBACK_PERSISTENT_ENABLE_BY_DEFAULT=y"; Проведена существенная оптимизация системы подкачки (swap), изначально рассчитанная на работу с дисковыми накопителями. Подкачка теперь адаптирована для работы с носителями SSD, отличающимися очень низким постоянным временем доступа; Инструментарий perf теперь может быть собран с использованием компилятора Clang; Добавлена реализация команды "perf ftrace", предоставляющая основанный на perf интерфейс для фреймворка отслеживания вызова функций (ftrace); Добавлена возможность использования технологии разгона процессоров Turbo Boost Max 3.0 на системах без поддержки HWP (Hardware P-States). Turbo Boost Max позволяюет увеличить производительность однопоточных приложений за счёт завышения тактовой частоты, при удержании допустимых границ мощности и температуры; Модуль для обеспечения сжатия LZ4 заменён на новую реализацию, демонстрирующую более высокую производительность; Из-за проблем с безопасностью удалена поддержка механизма /proc/timer_stats, предоставляющего статистику о работе таймера, которая приводит к утечке информации о процессе; Для устройств PCI Express добавлена поддержка дополнительных режимов энергосбережения ASPM L1, определённых в спецификции PCIe 3.1, что позволяет добиться перехода на более глубокие уровни сна; Реализована поддержка средств управления энергопотреблением APST (Autonomous Power State Transitions), которые позволяют на 20-30% снизить потребление энергии SSD-накопителями на базе технологии NVME. Поддержка APST пока не включена по умолчанию, так как для некоторых накопителей наблюдаются проблемы со стабильностью; Оборудование В DRM-драйвер (Direct Rendering Manager) Nouveau интегрирована начальная реализация системы регулирования энергопотребления (power budget). Переработана поддержка режима, обеспечивающего загрузку заверенных цифровой подписью блобов с прошивками NVIDIA, которые требуются для активации средств 3D-ускорения в Maxwell (GeForce-1000) и более новых GPU. Необходимые прошивки уже добавлены в набор linux-firmware, но работа пока не доведена до конца, поэтому поддержка использования подобных прошивок появится только в ядре 4.12; В драйвере AMDGPU появилась предварительная поддержка технологии виртуализации ввода-вывода SR-IOV (Single Root Input/Output Virtualization), поддерживаемой в профессиональных картах FirePro. Добавлены PCI-идентификаторы для чипов POLARIS12; В драйвер для GPU Intel добавлены PCI-идентификаторы видеоподсистемы ещё не поступившей в продажу SoC Gemini Lake (GLK), идущей на смену Apollo Lake. Включено сжатие фреймбуфера для чипов gen9 и новее. Реализована возможность загрузки HuC-прошивок, содержащих компоненты для обеспечения кодирования видео. Добавлена поддержка вывода звука через DP MST (DisplayPort Multi-Stream Transport). Добавлен интерфейс на базе подсистемы perf для сбора метрик о производительности драйвера i915. Представлены новые sysctl dev.i915.oa_max_sample_rate и dev.i915.perf_stream_paranoid. Для систем на базе Baytrail и Cherrytrail включена поддержка режима вывода звука HDMI LPE, если не определён контроллер HDaudio; Добавлена подсистема TinyDRM, предоставляющая компоненты для упрощения разработки драйверов для простых LCD-дисплеев, которые подключаются через медленные шины, такие как SPI и MIPI-DBI; Добавлена поддержка графической подсистемы и контроллера управления памятью SoC Aspeed AST2500; Добавлена поддержка звукового кодека Realtek ALC1220, применяемого на многих материнских платах AMD Ryzen и Intel Kaby Lake (Core-i 7xxx), а также кодеков Nuvoton NAU85L40, Allwinner SUN8I и интерфейса Intel HDMI LPE; Добавлена поддержка новых ARM-плат, включая Banana Pi M64, HiSilicon Kirin960/Hi3660/HiKey960, SolidRun MACCHIATOBin, Broadcom BCM958712DxXMC NorthStar2, NXP LS1012a, а также систем на баз Allwinner H2+ и V3; Добавлен новый звуковой драйвер и V4L2-драйвер камеры для SoC BCM2835 (используется в Raspberry Pi).
»» Нажмите, для закрытия спойлера | Press to close the spoiler ««
Дополнение: Латиноамериканский Фонд свободного ПО оперативно сформировал вариант полностью свободного ядра 4.11 - Linux-libre 4.11-gnu, очищенного от элементов прошивок и драйверов, содержащих несвободные компоненты или участки кода, область применения которых ограничена производителем. В новом выпуске очищен от блобов код для поддержки криптоакселераторов Cavium, а также драйверы для GPU Rockchip, Ethernet-контроллеров Netronome NFP 4000/6000 и сенсорных экранов Silead. В список расширений, в которых могут поставляться блобы, добавлены ".out" и ".nffw". Обновлён код чистки блобов в драйверах для GPU AMD и Intel, в загрузчике прошивок Qualcomm, кодеках Chips&Media, беспроводных драйверах Atheros ath10k, wil6210 и Intel iwlwifi, в звуковых драйверах для Intel Skylake.