Линус Торвальдс представил (https://lkml.org/lkml/2012/10/14/281) первый кандидат в релизы ядра Linux 3.7, который ознаменовал закрытие окна по приёму новшеств в ветку 3.7.
Среди принятых в ветку 3.7 улучшений, можно отметить:
- Унификация (http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6...) кода поддержки архитектуры ARM и обеспечение возможности формирования многоплатформенных ARM-сборок. Если ранее требовалось собирать отдельный вариант ядра для каждого типа SoC, то начиная с выпуска 3.7 появится возможность собрать одно ядро, которое будет содержать поддержку различных ARM-платформ. Унифицированная сборка ядра 3.7 сможет работать на платформах Calxeda Higbank (серверы HP Moonshot), Versatile Express (эталонная плата, поддерживается эмулятором QEMU), Marvell ARMADA (от мини-серверов до телеприставок), Altera SoC FPGA и Picohip picoXcell (мини-базовые станции для офисов). В будущих выпусках ядра число поддерживаемых платформ будет расширено. Указанное нововведение существенно упростит жизнь разработчикам дистрибутивов для ARM-систем, которым теперь не придётся формировать отдельный загрузочный образ для каждой ARM-платформы.
- Поддержка (https://lkml.org/lkml/2012/10/1/313) 64-разрядной архитектуры AArch64 (ARM64), реализованной в процессорах, поддерживающих набор команд ARMv8. 64-рязрядная архитектура AArch64 включает (http://www.opennet.dev/opennews/art.shtml?num=34285) в себя новый набор команд A64, примечательный расширением числа регистров, новыми командами для вычислений с плавающей запятой (FP) и новыми векторными SIMD-инструкциями NEON, такими как инструкции для ускорения работы алгоритмов шифрования AES и SHA-1/SHA-256. Реализация AArch64 для Linux поддерживает расширенную 39-разрядную адресацию памяти для ядра и пользовательского уровня и предоставляет режим совместимости, позволяющий выполнять 32-битные программы, собранные для архитектуры ARMv7 (ARM EABI). В настоящее время устройства на базе ARMv8 пока находятся на стадии тестирования прототипов, поступление в продажу первых ARMv8-систем ожидается в следующем году;
- Поддержка (http://blog.xen.org/index.php/2012/10/08/xen-arm-in-linux/) механизмов виртуализации Xen для систем на базе процессоров ARM Cortex A15. Таким образом Xen стал первым гипервизором, поддерживаемым в Linux на платформе ARM. Представленный для интеграции в ядро код основан на использовании аппаратных расширений для обеспечения виртуализации, поддерживаемых архитектурой ARMv7. Особенностью реализации Xen для ARMv7 является отсутствие разделения в поддержке запуска гостевых систем в режиме паравиртуализации (PV) и аппаратной виртуализации (HVM). Вместо этого используется один комбинированный режим запуска гостевых систем, напоминающий запуск PV поверх HVM без необходимости эмуляции оборудования при помощи Qemu. Гостевые системы при этом всегда запускаются в режиме полной виртуализации, но для доступа к сетевым и блочным устройствам должны использовать специальные паравиртуальные драйверы (т.е. для гостевых окружений не требуется модификация ядра системы, но необходимо наличие нескольких драйверов).
- Добавлена рабочая реализация пространств имён для идентификаторов пользователей (user namespaces). Указанная возможность позволяет сформировать в контейнерах собственные наборы идентификаторов групп и пользователей, а также связанные с ними привилегии (например, в каждом контейнере может быть свой root);
- Продолжение работы по рефакторингу заголовочных файлов с целью разделения по разным иерархиям директорий заголовочных файлов для UAPI (Userspace API) и KAPI (Kernel API). Подобное разделение позволит более явно выделить необходимые для использования в пространстве пользователя заголовочные файлы, которые теперь перемещены в include/uapi и arch/$(ARCH)/include/uapi;
- В реализацию файловой системы JFS добавлена поддержка команды TRIM (discard), которая позволит увеличить производительность при работе с SSD-накопителями и повысить их срок службы;
- Поддержка загрузки модулей ядра с проверкой корректности их цифровой подписи.
- Поддержка (https://github.com/mirrors/linux-2.6/commit/15385dfe7e0fa686...) набора инструкций SMAP (Supervisor Mode Access Prevention), реализованного в процессорах Intel на базе микроархитектуры Haswell. Задействование SMAP в ядре позволяет (http://forums.grsecurity.net/viewtopic.php?f=7&t=3046) блокировать доступ к данным в пространстве пользователя из привилегированного кода, выполняемого в пространстве ядра (по аналогии с тем, как добавленная в ядре 3.0 поддержка SMEP не позволяет переходить из режима ядра к выполнению кода, находящегося в пользовательских областях). При обеспечении оборудованием поддержки инструкций SMAP, представленные средства защиты будут включаться автоматически, что существенно усложнит эксплуатацию уязвимостей в ядре, вызванных такими ошибками, как разыменование NULL-указателя;
- В утилиту perf добавлена (http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6...) команда trace ("perf trace PID") по выполняемым функциям напоминающая утилиту strace, но дополнительно позволяющая отображать события не связанные с системными вызовами;
- Для приложений, работающих на системах на базе архитектуры s/390, добавлена возможность использования аппаратной транзакционной памяти System zEC12;
- В реализации файловой системы CIFS обеспечена поддержка протокола SMB2.1. Статус поддержки SMB2 на уровне ядра переведен из разряда "поломанный" в "экпериментальный";
- В соответствии с пожеланиями разработчиков systemd, расширенные атрибуты для управляющих групп (control groups) могут задаваться через создание иерархии директорий. При использовании неиерархических групп управления во вложенных элементах иерархических групп будет выдаваться ошибка;
- Поддержка протокола туннелирования GRE (Generic Routing Encapsulation) для IPv6;
- Поддержка трансляции адресов (NAT) для IPv6. IPv6 NAT позволяет осуществить подмену адресной информации в пакетах IPv6 в соответствии с заданными правилами трансляции, примерно так как это делается в классическом трансляторе адресов для IPv4. Для реализации поддержки IPv6 NAT, существующий в ядре код netfilter был переработан с целью разделения модуля NAT на два независимых компонента, один из которых включает в себя ядро подсистемы NAT, а второй реализует поддержку того или иного протокола третьего уровня;
- Поддержка режима быстрого открытия TCP-соединений (TFO - TCP Fast Open) на стороне сервера. Режим TFO позволяющет сократить число шагов установки соединения за счёт комбинирования в один запрос первого и второго шагов классического 3-этапного процесса согласования соединения, и давая возможность отправки данных на начальном этапе установки соединения. В ядре 3.6 поддержка TFO была ограничена возможностью управления только на стороне клиента в процессе создания соединения. Теперь TFO может быть активирован и по инициативе серверной стороны;
- Добавление (http://lwn.net/Articles/488906/) модуля IMA (Integrity Measurement Architecture) для обеспечения хранения и проверки базы хэшей для проверки целостности файлов и связанных с ними метаданных. Данные для контроля целостности сохраняются как атрибуты xattr;
- Поддержка протокола
VXLAN (http://tools.ietf.org/html/draft-mahalingam-dutt-dcops-vxlan-02) для туннелированя (http://lwn.net/Articles/518375/) виртуализированных сетей второго уровоня поверх сетей третьего уровня. Указанный протокол позволяет обойти ограничение на 4096 VLAN-ов (в VXLAN используются 24-разрядные идентификаторы);
- Поддержка SoC Broadcom BCM2835, Raspberry Pi и Micrel KS8695;
- Поддержка игровых пультов Sony PS3 BD;
- Поддержка сетевых контроллеров Silicom Bypass, Freescale XGMAC MDIO и Microchip MRF24J40;
- Поддержка USB-контроллеров: Broadcom BCM63xx, Marvell USB 3.0 PHY, ZTE USB-to-serial переходников и плат Cambridge Electronic Design 1401 USB;
URL: https://lkml.org/lkml/2012/10/14/281
Новость: http://www.opennet.dev/opennews/art.shtml?num=35085