+38/050/370-3627
+38/093/220-0872
+38/044/257-2444
Новини

Лінус Торвальдс представив реліз ядра Linux 5.4

Лінус Торвальдс представив реліз ядра Linux 5.4

Лінус Торвальдс представив реліз ядра Linux 5.4. Серед найбільш помітних змін: експериментальний драйвер exFAT, режим "lockdown" для обмеження доступу користувача root до ядра, механізм fs-verity для контролю цілісності файлів, можливість використання CIFS для кореневого розділу, контролер вводу/виводу iocost, ФС EROFS, модуль dm-clone для реплікації зовнішніх пристроїв, нова ФС virtiofs для експорту каталогів у гостьові системи, підтримка GPU AMD Navi 12/14, AMD Arcturus, AMD Renoir та Intel Tiger Lake.

Основні нововведення:

  • Дискова підсистема, введення/виведення та файлові системи
    • В експериментальний розділ "staging" ("drivers/staging/"), куди поміщаються компоненти, що вимагають доопрацювання, доданий розроблений компанією Samsung відкритий драйвера exFAT. Раніше, додавання підтримки exFAT в ядро ​​було неможливим через патенти, але ситуація змінилася після того, як компанія Microsoft опублікувала загальнодоступні специфікації і надала можливість безоплатного використання патентів на exFAT в Linux. Доданий в ядро ​​драйвер заснований на застарілому коді Samsung (версія 1.2.9), що вимагає доопрацювання та адаптації до вимог щодо оформлення коду для ядра.

      Вже після додавання застарілого драйвера ентузіастами був портований новий драйвер Samsung (sdFAT 2.x), що використовується в Android-прошивках Samsung. Пізніше компанія Samsung самостійно вирішила зайнятися просуванням нового драйвера sdfat в основне ядро ​​Linux. Крім того, компанією Paragon Software був відкритий альтернативний драйвер, який раніше поставлявся в пропритетарному наборі драйверів. Вищезгадані три драйвери (sdFAT від ентузіастів, sdFAT від Samsung і драйвер Paragon) поки що не включені в основне ядро;

    • Додано механізм виявлення модифікації або підміни файлів fs-verity, схожий на dm-verity, але працює на рівні файлової системи, а не блокового пристрою. Fs-verity додає можливість вибіркового використання контролю цілісності та автентифікації окремих файлів, що використовуються в режимі тільки для читання. Цілісність перевіряється за асоційованими з файлами криптографічних хеш, що зберігаються в області метаданих. При спробі звернення до зміненого файлу, при розбіжності хеша, файлова операція читання повертає помилку (включаючи доступ через mmap). Опціонально можлива верифікація з використанням криптографічних ключів. Загалом fs-verity розрахований на використання з файловими системами, що допускають запис, в той час як dm-verity рекомендований для розділів, змонтованих у режимі лише для читання; В даний час fs-verity поки що можна використовувати тільки для ФС ext4 і f2fs.
    • Додано новий Device-Mapper обробник dm-clone, дозволяє на базі доступного в режимі тільки для читання блокового пристрою створити локальну копію, яка допускає запис у процесі клонування. Клонований пристрій можна примонтувати та розпочати використання відразу після його створення, не чекаючи завершення процесу перенесення даних. Наприклад, модуль може застосовуватися для клонування по мережі віддалених архівних пристроїв, що обробляють введення/виведення з великими затримками, локальний швидкий пристрій, що підтримує запис і обробляє запити з мінімальними затримками;
    • До складу ядра додано контролер введення/виводу iocost (I/O cgroup controller), що застосовує модель витрат для пропорційного розподілу ресурсів (як метрика розглядається прогнозована вартість потоку операцій введення/виведення, а не пропускна здатність або затримки, до кожної cgroup прив'язується своя вага). Подібний підхід дозволяє досягти підвищення продуктивності введення/виводу для деяких типів навантаження, наприклад, операцій введення/виводу із ізольованих контейнерів, в яких введення/виведення слід розмежовувати з урахуванням угруповання процесів у контейнери;
    • В основне дерево вихідних текстів ядра перенесено файлову систему EROFS (Extendable Read-Only File System), яка раніше знаходилася у гілці "staging". ФС EROFS розроблена компанією Huawei для використання на розділах, доступних у режимі тільки для читання. Структура EROFS істотно спрощена рахунок відкидання при реалізації деяких областей метаданих, як-от бітова карта вільних блоків. EROFS підтримує зберігання даних у стислому вигляді, але використовує інший підхід для зберігання стислих блоків, оптимізований для досягнення високої продуктивності при випадковому доступі до даних. Наприклад, нова ФС в рази обганяє Ext4 при випадковому доступі, завдяки застосуванню блоків фіксованого розміру та inline-упаковці в inоde невеликих даних та розширених атрибутів;
    • У підсистему fscrypt, яка використовується для прозорого шифрування файлів і каталогів у ФС ext4, f2fs та ubifs, додано кілька нових викликів ioctl() для додавання та видалення master-ключів, а також застосування нової політики шифрування, що вирішує проблеми з верифікацією ключів , компрометацією master-ключа у разі компрометації файлового ключа та неможливістю видалення ключів непривілейованими користувачами;
    • Під час монтування файлових систем забезпечено виведення попередження, якщо ФС не може обробляти дати щонайменше на 30 років вперед;
    • Додано можливість завантаження з файлової системи CIFS. Можливість використання CIFS для кореневого розділу включається за допомогою прапора CONFIG_CIFS_ROOT, а для монтування на ранній стадії завантаження запропонована опція "cifsroot=". Серед інших змін у CIFS: можливість відправлення команд smb2 set-info з простору користувача, підтримка розпаралелювання операцій розшифровки під час читання, нові опції монтування "cache=singleclient" та "cache=ro" для оптимізації кешування конфігурацій тільки з одним клієнтом або при активності тільки на читання;
    • У модуль dm-verity (device-mapper verity), призначений для перевірки цілісності блоків даних, що зберігаються за криптографічними хешами, додана можливість верифікації кореневого хеша, що визначає цілісність всього розділу. Перевірка виконується за допомогою криптографічного ключа, завантаженого в keyring ядра;
    • У файлову систему F2FS доданий режим роботи з іменами файлів без урахування регістру символів. Режим включається у прив'язці до окремих каталогів за допомогою нового атрибута "+F" (F2FS_CASEFOLD_FL), при встановленні якого всі операції з файлами та підкаталогами всередині зазначеного каталогу будуть здійснюватися без урахування регістру символів, у тому числі регістр ігноруватиметься під час операцій пошуку та відкриття файлів (наприклад, файли Test.txt, test.txt і test.TXT у подібних каталогах вважатимуться однаковими);
    • У файловій системі XFS прискорено операції зміни великих каталогів;
    • У ФС EXT4 додано нові ioctl-виклики: EXT4_IOC_CLEAR_ES_CACHE для примусового скидання кешу стану екстентів, EXT4_IOC_GETSTATE для отримання відомостей про стан inode та EXT4_IOC_GET_ES_CACHE для повернення вміст екстенту;
    • У CEPH додана підтримка довільних xattr-прапорів security.* та можливість автоматичного відновлення сеансів (прапор монтування "recover_session=clean");
    • В BTRFS додано новий режим перевірки цілонності "tree-checker" для екстентів та кореневих елементів (EXTENT_ITEM та METADATA_ITEM);
  • Віртуалізація та безпека
    • До складу ядра прийнято модуль "lockdown", який увібрав у себе патчі, що поставляються в дистрибутивах, використовуються для обмеження доступу користувача root до ядра і блокування обходу UEFI Secure Boot. У режимі lockdown обмежується доступ до /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, налагоджувального режиму kprobes, mmiotrace, tracefs, BPF, PCMCIA CIS (Card Information Structure), деяких інтерфейсів ACPI та MSR-регістрам CPU, блокуються виклики kexec_file та kexec_load, забороняється перехід у сплячий режим, лімітується використання DMA для PCI-пристроїв, забороняється імпорт коду ACPI із змінних EFI, не допускаються маніпуляції з портами вводу/виводу, у тому числі зміна номера переривання та порту вводу/виводу для послідовного порту.

      Без застосування lockdown зловмисник, який досяг виконання коду з правами root, може виконати свій код і на рівні ядра, наприклад, через заміну ядра за допомогою kexec або читання/запису пам'яті через /dev/kmem. За замовчуванням модуль lockdown не активний, збирається при вказівці в kconfig опції SECURITY_LOCKDOWN_LSM і активується через параметр ядра "lockdown=", файл керування "/sys/kernel/security/lockdown" або складальні опції LOCK_DOWN_KERNEL_FORCE_*, які можуть приймати значення " "confidentiality". У першому випадку блокуються можливості, що дозволяють вносити зміни до працюючого ядро з простору користувача, а в другому випадку також відключається функціональність, яку можна використовувати для вилучення конфіденційної інформації з ядра;

    • Додано нову файлову систему virtiofs, що дозволяє ефективно експортувати частини файлової системи хост-оточення гостьовим системам. Гостьова система може примонтувати каталог, помічений для експорту на стороні хост-системи, що значно спрощує організацію спільного доступу до каталогів у системах віртуалізації. У реалізації використовується протокол FUSE - гостьова система виступає у ролі клієнта FUSE, а хост-система - як сервер FUSE. На відміну від застосування мережевих ФС, таких як NFS та virtio-9P, virtiofs дозволяє досягти продуктивності близької до локальної файлової системи;
    • Забезпечено виведення попередження про швидкому припиненні підтримки 32-розрядних гостьових систем, що працюють в режимі паравіртуалізації під управлінням гіпервізора Xen. Користувачам таких систем рекомендується перейти на використання 64-розрядних ядер у гостьових оточеннях або використовувати для запуску оточень замість паравіртуалізації (PV) режими повної (HVM) або комбінованої (PVH) віртуалізації;
    • Додано захист, що забороняє запис в активні файли підкачування з простору користувача;
    • Додана підтримка режиму "PrivacyGuard", що використовується в ноутбуках Lenovo ThinkPad (T480s, T490, T490s) і дозволяє програмно обмежити кути огляду екрана при введенні конфіденційної інформації;
    • Додано механізм формування ентропії для генератора псевдовипадкових чисел, заснований на застосуванні джиттера (jitter), що враховує відхилення часу повторного виконання певного набору інструкцій на CPU, що залежить від багатьох внутрішніх факторів і непередбачувано без фізичного контролю над CPU. Механізм вирішує проблему з підвисаннями під час завантаження через брак ентропії для getrandom(), виниклих після внесення оптимізації в Ext4, що скорочують кількість звернень до накопичувача;
  • Пам'ять та системні сервіси
    • У системний виклик madvise(), що надає засоби для оптимізації управління пам'яттю процесу, додані прапори MADV_COLD та MADV_PAGEOUT з реалізацією недеструктивних методів вивільнення додаткової вільної пам'яті, що дозволяють оптимізувати споживання пам'яті в деяких системах, таких як Android. MADV_COLD інформує ядро ​​про те, що перелічені сторінки пам'яті можуть бути вилучені в ситуації нестачі пам'яті в системі, але дані, що знаходяться в них, повинні бути збережені для подальшого використання (витіснені у розділ підкачування). MADV_PAGEOUT може застосовуватися для позначення областей пам'яті, які процес не планує використовувати тривалий час і при необхідності їх можна в першу чергу витіснити в розділ підкачування;
    • Додано новий обробник простою CPU - "haltpoll" (cpuidle, вирішує коли можна перевести CPU в глибокі режими економії енергії, чим глибший режим - тим більша економія, але й більше часу потрібно для виходу з режиму), який доповнив три раніше доступні оброблювача cpuidle - "menu", "ladder" та "teo". Новий обробник розрахований на використання в системах віртуалізації і дозволяє віртуальному CPU (VCPU), що використовується в гостьовій системі, запросити додатковий час до переведення CPU в стан idle. Подібний підхід дозволяє підвищити продуктивність віртуалізованих додатків за рахунок запобігання повернення управління гіпервізору;
    • У системному виклику waitid() з'явився новий прапор P_PIDFD, при вказівці якого здійснюється очікування зміни стану дескриптора pidfd замість звичайного ідентифікатора процесу;
    • В інтерфейс для асинхронного введення/виводу io_uring доданий прапор IORING_OP_TIMEOUT для встановлення таймууту очікування подій, після закінчення якого процес буде збуджений;
    • Додано підтримку просторів імен символів модулів ядра, що дозволяє мейнтейнерам підсистем експортувати свої набори символів в окремих просторах імен, відокремлених від інших частин ядра. Наприклад, символ "usb_stor_suspend" можна експортувати лише у просторі імен USB_STORAGE, і він не буде бачити для інших підсистем;
  • Апаратні архітектури
    • Для архітектури ARM64 реалізовано можливість використання 52-розрядних адрес, а також передачі тагованих покажчиків (вказівники, що включають порцію даних користувача) у вигляді аргументів системних викликів;
    • Видалено підтримку архітектури SGI SN2, заснованої на IA64;
    • Видалена підтримка розширень MPX, що надаються в процесорах Intel (як причина згадується відсутність підтримки MPX у компіляторах);
    • Для архітектури PA-RISC реалізовано підтримку системного виклику kexec_file_load() та механізму kprobes;
    • Для архітектури PowerPC додано підтримку кільця захисту "ultravisor", на якому можуть працювати гіпервізори;
  • Мережева підсистема
    • Значення за замовчуванням SOMAXCONN (/proc/sys/net/core/somaxconn, максимальний розмір черги мережевих з'єднань, що очікують обробки викликом accept), збільшено з 128 до 4096. Аналогічно, до 4096 збільшено параметр tcp_max_syn_backlog, що обмежує розмір напіввідкритих з'єднань, для яких ще не надіслано відповідь ACK;
    • Додано підтримка протоколу SAE J1939, що використовується в автомобільних мережах для комунікації та передачі діагностичних повідомлень між різними компонентами автомобіля;
    • У підсистему eBPF додані функції для генерації SYN cookies з BPF-програм;
    • Включено напрацювання з уніфікації програм BPF (зібрана один раз, BPF-програма запускається на будь-яких платформах);
    • У NFS (knfsd) замість старого кеша попереджуючого читання (readahead) реалізовано новий кеш файлових дескрипторів, що дозволяє обійтися без виконання системних викликів open і close кожної операції читання і записи. На сторону knfsd також винесено обробку помилок введення/виводу NFSv3;
    • У стек IPv6 додана підтримка RFC 7710 (RA Captive Portal Identifie);
    • У TCP-стік для спрощення діагностики проблем з продуктивністю додані лічильники TCP_INFO rcv_ooopack і snd_wnd, що дозволяють судити про кількість пакетів, отриманих не відповідно до порядку їх відправлення, та зміну розміру вікна, що приймає, на іншій стороні;
    • IPv4 та IPv6 стеки додана можливість встановлення прапора SO_MARK для сокетів UDP та RAW за допомогою виклику ip_cmsg_send;
    • У Netfilter додано механізм для оновлення об'єктів, що відображають стан з'єднань та квот. У модуль nft_synproxy додано підтримка об'єктів відстеження стану synproxy. Реалізовано засоби для задіяння механізмів апаратного прискорення обробки операцій з VLAN та тунелями, а також операцій перенаправлення (nft_fwd_netdev) та дзеркалювання пакетів (nft_dup_netdev). У nft_meta додана підтримка зіставлення з урахуванням часу (UNIX timestamp), дня тижня та години;
    • Додано інтерфейс для відстеження відкидання пакетів у ланцюжках обробки, що задіяли механізми апаратного прискорення;
    • У модуль cfg80211 додано підтримку смуги частот 6GHz, запропонованої для майбутнього стандарту 802.11ax;
  • Обладнання
    • У драйвер amdgpu додана підтримка GPU Navi 12/14, а також APU Arcturus і Renoir, включаючи засоби для керування живленням для Navi12, Renoir і Arcturus. Для APU Picasso реалізовано можливість окремого скидання GPU. Для чіпів Navi додано можливість зміни частоти роботи пам'яті ("mclk"). Додано режим очищення відеопам'яті після використання буфера (wipe on release, технологія захисту від аналізу залишкових даних відеопам'яті);
    • У драйвер amdkfd (для дискретних GPU, таких як Fiji, Tonga, Polaris) додано підтримку карт на базі GPU Navi14, Navi12 та Arcturus;
    • У DRM-драйвері для відеокарт Intel додано підтримка GPU, що використовується в чіпах, що ще не випускаються, на базі нової мікроархітектури Tiger Lake. За замовчуванням активовано кеш GTT та включено автоматичний режим залучення прошивок GuC/HuC. Додана підтримка повторного виконання обробники гарячого підключення пристроїв, якщо перший виклик завершився невдачею. Додані PCI-ідентифікатори для нових чіпів;
    • У підсистему DRM (Direct Rendering Manager) та DRM-драйвер i915 для відеопідсистеми Intel додана підтримка технології захисту від копіювання звукового- та відео-контенту HDCP2.2 (High-bandwidth Digital Content Protection);
    • У драйвері Nouveau покращено керування кольоровістю екрану та додано можливість використання додаткових властивостей (DEGAMMA/CTM/GAMMA) для GPU NVIDIA nv50;
    • Добавлены драйверы для LCD-панелей Novatek NT39016, LG Philips LB035Q02, NEC NL8048HL11, Sharp LS037V7DW01, Sony ACX565AKM, Toppoly TD028TTEC1/TD043MTEA1, Raydium RM67191, GiantPlus GPM940B, Ortustech COM37H3M, Sharp LQ070Y3DG3B/LS020B1DD01D/LD-D5116Z01B;
    • Додано підтримку ARM SoC ASpeed ​​AST2600. Код для SoC TI Davinci та NXP LPC32xx переведений на уніфіковану систему збирання, що дозволяє збирати універсальні ядра, що працюють на різних ARM-системах. Видалено підтримку застарілих і вже не використовуваних SoC Kendin/Micrel/Microchip KS8695, Winbond/Nuvoton W90x900 та Intel IOP33x/IOP13xx;
    • Додано підтримку ARM-плат і платформ Snapdragon 855 (SM8150), Mediatek MT7629, Allwinner V3, NXP i.MX8M Nano, Layerscape LS1046A, Amlogic SM1 (S905X3), Amlogic G12B (S922X, A311D), Rockchips Mecer Xtreme Mini S6;
    • Додано підтримку ноутбуків на базі SoC Snapdragon 835/MSM8998 (Asus NovaGo TP370QL, HP Envy X2 та Lenovo Miix 630), Snapdragon 850/sdm850 (Lenovo Yoga C630) та смартфонів на базі , Longcheer L8150/ Android One 2).
Одночасно Латиноамериканський Фонд вільного ПЗ сформував варіант повністю ядра 5.4-Linux-libre 5.4-gnu, очищеного від елементів прошивок і драйверів, що містять невільні компоненти або ділянки коду, область застосування яких обмежена виробником. У новому випуску вимкнено завантаження блобів у драйвері ice (Intel Ethernet Connection E800 Series). Оновлено код чищення блобів у драйвери та підсистеми safexcel, amdgpu, i915, i2400m, i1480u, nitrox, r8169, touchscreen_dmi та звуковий драйвер для skylake. Припинено чищення блобів у драйвері netx, який було видалено з ядра. Повернено прапори файлу, що виконується, для скриптів вирізування блобів.

Інші новини

Найкраща ціна