Ядро Linux
Після двох місяців розробки Лінус Торвальдс оголосив про випуск нового ядра Linux версії 6.1 , в якому серед найпомітніших змін: підтримка розробки драйверів та модулів мовою Rust, модернізація механізму визначення використовуваних сторінок пам'яті, спеціальний менеджер пам'яті для програм BPF, система діагностики проблем з пам'яттю KMSAN, механізм захисту KCFI (Kernel Control-Flow Integrity) та впровадження структурного дерева maple.
Нова версія отримала 15115 виправлень від 2139 розробників ; розмір патча становить 51 МБ, що приблизно вдвічі менше, ніж розміри патчів для ядер 6.0 та 5.19.
Основні нові функції Linux 6.1
У цій новій версії ядра ми знаходимо додаткову можливість використовувати Rust як другу мову для розробки драйверів та модулів ядра. Головна причина підтримки Rust полягає в тому, щоб полегшити написання безпечних, високоякісних драйверів пристроїв, зменшуючи ймовірність помилок пам'яті.
Підтримка Rust за замовчуванням вимкнена і не вимагає включення Rust як залежності компіляції ядра. Поки що ядро використовує мінімальну та спрощену версію патчів, скорочену з 40 000 до 13 000 рядків коду, що забезпечує лише абсолютний мінімум, необхідний для створення простого модуля ядра, написаного на Rust.
У майбутньому планується поступове розширення існуючої функціональності шляхом перенесення інших змін з гілки Rust для Linux. Одночасно тривають проекти з використання запропонованої інфраструктури для розробки контролерів дисків NVMe, мережевого протоколу 9p та графічного процесора Apple M1 на Rust.
Ще одна помітна зміна відбулася в AArch64, RISC-V та LoongArch з EFI, де реалізовано можливість безпосереднього завантаження стиснутих образів ядра , а також додано драйвери для завантаження, запуску та вивантаження образів ядра, які викликаються безпосередньо з EFI zboot.
Також додано драйвери для встановлення та видалення протоколів із бази даних протоколів EFI. Раніше розпакування виконувалося окремим завантажувачем, але тепер це може зробити драйвер у самому ядрі: образ ядра побудований як програма EFI.
Частина виправлення включала реалізацію багаторівневої моделі управління пам'яттю, яка дозволяє розділяти банки пам'яті з різними характеристиками продуктивності . Наприклад, часто використовувані сторінки можуть зберігатися в найшвидшій пам'яті, тоді як рідше використовувані сторінки можуть зберігатися у відносно повільній пам'яті. Ядро 6.1 використовує механізм для визначення того, чи знаходяться часто використовувані сторінки в повільній пам'яті, та переміщення їх до швидкої пам'яті, а також реалізує загальну концепцію рівнів пам'яті та їх відносної продуктивності.
Крім того, підсистема BPF тепер включає можливість створювати "деструктивні" BPF-програми, спеціально розроблені для ініціювання збою, за допомогою функції `crash_kexec()`. Ці BPF-програми можуть бути необхідними для налагодження, щоб ініціювати дамп пам'яті в певний момент часу. Доступ до деструктивних операцій під час завантаження BPF-програми вимагає вказівки прапорця `BPF_F_DESTRUCTIVE`, увімкнення `sysctl kernel.destructive_bpf_enabled` та наявності привілеїв CAP_SYS_BOOT.
У файловій системі Btrfs було внесено значні оптимізації продуктивності . Серед іншого, продуктивність операцій fiemap та lseek була збільшена на порядки (перевірка спільного екстента в 2-3 рази швидша, а зміни позицій файлів - в 1.3-4 рази швидші). Крім того, було прискорено журналювання inode для каталогів (збільшення продуктивності на 25% та зменшення затримки на 21% у dbench), покращено буферизований ввід/вивід та зменшено споживання пам'яті.
Ext4 додає оптимізації продуктивності, пов'язані з журналюванням та роботою лише для читання, видаляє підтримку застарілих атрибутів noacl та nouser_xattr, а також на додаток до EROFS (Enhanced Read-Only File System), розробленої для використання в розділах лише для читання, реалізує можливість спільного зберігання дублікатів даних на різних файлових системах.
Інші помітні зміни включають:
- Додано підтримку аудіопідсистем, реалізованих у процесорах Apple Silicon, Intel SkyLake і Intel KabyLake.
- Аудіоконтролер HDA CS35L41 підтримує сплячий режим.
- Додана підтримка контролерів AHCI SATA, які використовуються в Baikal-T1 SoC.
- Додано підтримку чіпів Bluetooth MediaTek MT7921, Intel Magnetor (CNVi, інтегроване підключення), Realtek RTL8852C, RTW8852AE та RTL8761BUV (Edimax BT-8500).
- Додано драйвери для клавіатури PinePhone, сенсорних панелей InterTouch (ThinkPad P1 G3), адаптивного контролера X-Box, контролера польоту PhoenixRC, автомобільного контролера VRC-2, контролера DualSense Edge, панелей керування IBM, XBOX One Elite, планшетів XP-PEN Deco Pro S та Intuos Pro small (PTH-460).
- Додано драйвер для криптографічних прискорювачів Aspeed HACE (Hash and Crypto Engine).
- Додано підтримку вбудованих контролерів Intel Meteor Lake Thunderbolt/USB4.
- Додана підтримка смартфонів Sony Xperia 1 IV, Samsung Galaxy E5, E7 і Grand Max, Pine64 Pinephone Pro.
- ARM SoC, сумісний з AMD DaytonaX, Mediatek MT8186, Rockchips RK3399 і RK3566, TI AM62A, NXP i.MX8DXL, Renesas R-Car H3Ne-1.7G, Qualcomm IPQ8064-v2.0, IPQ8062, IPQ8062 /BL i.MX8MM OSM-S , MT8195 (Acer Tomato), Radxa ROCK 4C+, NanoPi R4S Enterprise Edition, JetHome JetHub D1p. Інформація про SoC Samsung, Mediatek, Renesas, Tegra, Qualcomm, Broadcom і NXP.
Зрештою, якщо ви зацікавлені дізнатися більше, ви можете знайти деталі за наступним посиланням.