Linux Kernel 6.0 Released, This is What’s New
Linux 6.0 kickstarts the 6.x series in fine form, bringing an assortment of performance improvements, new hardware support, security fixes, and the usual grab-bag of file-system tweaks to the fore.
Announcing the release over on the Linux Kernel Mailing List, Linus Torvalds said: “As is hopefully clear to everybody, the major version number change is more about me running out of fingers and toes than it is about any big fundamental changes.”
“But of course there’s a lot of various changes in 6.0 – we’ve got over 15k non-merge commits in there in total, after all, and as such 6.0 is one of the bigger releases at least in numbers of commits in a while.
For a pinch more detail on what’s new in Linux kernel 6.0, read on.
Linux Kernel 6.0 Features
Benchmarking done by Phoronix reveals appreciable performance improvements across Intel Xeon ‘Ice Lake’, AMD Ryzen ‘Threadripper’, and AMD EPYC processors thanks to scheduler changes and other kernel energy tweaks. Seeing Linux squeeze more power while using less power is always a welcome one.
Linux 6.0 also does some mandatory future-proofing by laying groundwork for swathes of upcoming hardware. This include support for Intel’s fourth generation Xeon server chips “Sapphire Rapids”, and their 13th generation “Raptor Lake” core chips.
AMD provides a kernel graphics driver for their RDNA 3 GPU, land a new audio driver for AMD ‘Raphael’ platforms and improve the audio support for AMD ‘Jadeite’ systems. Those noticing keyboard issues on Ryzen 6000 series laptop should, if using Linux 6.0, find things once-again function as expected.
Both the OpenRISC and LoongArch architectures gain support for PCI buses, while RISC-V buffs up its cache block management capabilities using a number of new extensions, including the “Zicbom” extension. RISC-V also ships with a new default configuration capable of running Docker from the get-go.
The (expensive) Lenovo ThinkPad X13s laptop, which runs on the Qualcomm Snapdragon 8cx Gen3, starts to pick up support. The ThinkPad X13s is pre-loaded with Windows 11 for ARM but, with Linux support now in the formative stages, this could be a great reference device for Linux ARM enthusiasts.
Talking of laptops Linux enthusiasts use, some TUXEDO Computers and Clevo laptops had issues with touchpads and keyboard when resuming from suspend in earlier kernel versions. Those are now fixed in Linux 6.0.
New hardware supported includes XP-PEN Deco L drawing tablet, a swathe of sensors on AMD motherboards, including Sensor Fusion Hub support on newer Ryzen laptops, and functional Thunderbolt on Intel Raptor Lake.
Ubuntu’s default file system remains ext4, so I wanted to mention that Linux 6.0 enables two new ioctl() operations: EXT4_IOC_GETFSUUID and EXT4_IC_SETFSUUID. These make it possible to get or set the UUID stored in a filesystem superblock.
Other assorted changes in Linux 6.0 include:
- Kernel support for NVMe in-band authentication
- Runtime verification subsystem
- Raspberry Pi 4 V3D kernel driver
- IO_uring user-space block driver
- Buffered writes on XFS file systems
- Send Protocol V2 support for Btrfs
- H.265/HEVC API promoted to stable
Plus, as you can imagine, a whole lot more. I recommend checking out Phoronix’s feature overview for top-level info, or diving in to the comprehensive LWN merge report 1 and LWN merge report 2 for more detail.
Get Linux 6.0
Linux 6.0 is available to download as source code right now, which you can compile by hand on your distro of choice? Not up for that? Wait for your distro maintainer to package the do the half graft instead. Some distros (like Arch) issue new kernel updates relatively quickly, but others (like Ubuntu) don’t.
You can take a punt on Canonical’s mainline repo to install Linux 6.0 on Ubuntu based distros (though keep in mind these do not come with any warranty or guarantee of support).
Linux kernel 5.14 — что изменится в новом ядре
Линус Торвальдс представит его в конце августа. Поговорим об изменениях — инженеры удалили устаревший IDE-драйвер, сделали шаги для принятия Rust в качестве официального инструмента разработки и обновили сетевые компоненты.
Сброс балласта
Из ядра уберут legacy-драйвер, обеспечивающий работу устройств с интерфейсом IDE/PATA — оптических дисководов, жестких дисков и «флоповодов». Кодовая база сократится на 41 тыс. строк. Команда давно планировала удалить код, связанный с работой IDE. Инженеры считают, что стандарт устарел и его поддержка не имеет смысла — тот же SATA предлагает более высокую скорость обмена данными и возможность «горячей замены» накопителей — поэтому еще два года назад они пометили соответствующий драйвер флагом deprecated и прекратили развитие.
Продолжить работу со старыми устройствами можно будет благодаря библиотеке libATA. Она остается частью ядра и реализует API драйверов ATA. По словам Кристофа Хеллвига, который занимается развитием kernel 5.14, libATA использует большинство дистрибутивов, и у остальных не должно возникнуть сложностей с переходом. Однако стоит отметить, что в библиотеке нет драйверов для семейства микропроцессоров m68k, хотя эту ситуацию планируют исправить силами комьюнити.
Старые драйвера не единственное, что могут «вырезать» из ядра. Идут разговоры о прекращении поддержки процессоров, давно не получавших обновления. В список на удаление попали десятки чипов, в том числе ARM Footbridge и MIPS Cobalt.
Время «ржавчины»
Еще одно нововведение — признание Rust официальным инструментом разработки ядра (наравне с C). В kernel 5.14 появятся необходимые обновления. Инициативу продвигает Google — по словам его представителей, язык сократит число ошибок памяти, которые составляют 70% баг-фиксов в открытых проектах.
Также стоит отметить, что в Linux будет поддержка ARM и RISC-V благодаря компоненту rustc_codgen_gcc. Это — генератор кода GCC для компилятора rustc. Последний выполняет компиляцию Rust-кода, а GCC — backend-компиляцию, что дает возможность работать с новыми архитектурами. Участники сообщества уже предлагают внедрить аналогичную функциональность на уровне языка, однако такой подход может привести к конфликту лицензий. Дело в том, что Rust использует MIT License и Apache v2, а GCC — GPLv3. Хотя представитель The Rust Foundation в треде на GitHub сообщил, что лицензии совместимы, поэтому можно предположить, что разработчики языка предпримут шаги в этом направлении.
Сетевые улучшения
По словам Линуса Торвальдса, в kernel 5.14 упор был сделан на работу с драйверами, поэтому будет добавлена поддержка новых сетевых компонентов. Среди них — модем M.2 для мобильных компьютеров от Intel, адаптер MikroTik 10G/25G, а также модули Qualcomm QCN9074 и WCN6855.
Еще разработчики модифицировали сетевой код ядра: расширили возможности генератора трафика pktgen — на 23% для одного потока и на 44% для двух потоков — и оптимизировали работу с Wi-Fi на частоте 6 ГГц. В прошлом году Федеральная комиссия по связи США открыла этот диапазон для беспроводных сетей.
Kernel 5.14 должен повысить производительность гостевых Linux-систем на гипервизоре Hyper-V и реализовать NVMe/TCP. По оценке сайта Phoronix, который освещает темы, связанные с развитием дистрибутивов Linux, последнее обновление может сократить нагрузку на CPU примерно на 15%. Также разработчики выпустили некоторое количество баг-фиксов. Среди них — исправление ошибок, связанных с общими папками в VirtualBox. В целом до релиза новой версии ядра остается месяц, за это время разработчики реализуют другие изменения, которые подготовят фундамент для дальнейшей оптимизации и развития ядра.
Материалы о работе провайдеров у нас на сайте:
У нас в блоге на Хабре:
Вышел Linux 6.3
23 апреля 2023 года Линус Торвальдс представил первый стабильный релиз ядра Linux 6.3. Выпуск новой версии ядра Linux вышел в соответствии с графиком, спустя два месяца после выхода предыдущей стабильной версии Linux 6.2 в середине февраля.
Исходный код Linux 6.3 уже доступен для загрузки на портале kernel.org. Коммит релиза ядра Linux 6.3 на GitHub и на Makefile от Линуса Торвальдса.
Согласно данным OpenNET, в Linux 6.3 принято 15 637 исправления от 2 055 разработчиков. Размер патча составляет 76 МБ. Изменения затронули 14 296 файлов, там добавлено 1 023 183 строк кода и удалено 883 103 строк кода. Около 39% всех представленных в ядре Linux 6.3 изменений связаны с драйверами устройств, примерно 15% изменений имеют отношение к обновлению кода, специфичного для аппаратных архитектур, 10% связано с сетевым стеком, 5% изменений связаны с файловыми системами, а 3% — с внутренними подсистемами ядра.
Новая версия ядра Linux содержит большое количество изменений, обновлений и доработок, включая чистку устаревших ARM-платформ (размер исходных текстов ядра сокращён на 150 тыс., там удалено более 40 старых ARM-платформ) и графических драйверов, продолжение интеграции поддержки языка Rust, добавление утилиты hwnoise (для отслеживания задержек, вызванных особенностями работы аппаратного обеспечения), поддержку древовидных структур red-black в BPF, режим BIG TCP для IPv4, встроенный тест производительности Dhrystone, возможность запрета исполнения в memfd, поддержку создания HID-драйверов, используя BPF, в User-mode Linux (запуск ядра как пользовательского процесса) на системах x86-64 реализована поддержка кода, написанного на языке Rust, добавлена поддержка сборки User-mode Linux при помощи clang с включением оптимизаций на этапе связывания (LTO). Также в Linux 6.3 прекращена поддержка сборки ядра компилятором Intel ICC, которая уже длительное время находилась в нерабочем виде без нужных исправлений.
В Linux 6.3 продолжен перенос из ветки Rust-for-Linux дополнительной функциональности, связанной с использованием языка Rust в качестве второго языка для разработки драйверов и модулей ядра. Поддержка Rust не активна по умолчанию, и не приводит ко включению Rust в число обязательных сборочных зависимостей к ядру. Предложенная в прошлых выпусках функциональность расширена поддержкой типов Arc (реализация указателей со счётчиком ссылок), ScopeGuard (выполняется чистку при выходе за область видимости) и ForeignOwnable (обеспечивает перемещение указателей между кодом на Си и Rust). Из пакета ‘alloc’ удалён модуль ‘borrow’ (тип ‘Cow’ и типаж ‘ToOwned’). Отмечается, что состояние поддержки Rust в ядре уже близко к тому, чтобы начать принимать в ядро первые модули, написанные на Rust.