След два месеца работа Линус Торвалдс представи Linux Kernel 5.0. Най-характерните промени в Linux ядрото версия 5.0 са криптирането Adiantum за файловите системи, енергийно ефективният Task Scheduler на Android за ARM big.LITTLE процесорите, в драйвера AMDGPU е добавена поддръжката на технологията FreeSync, реализирана е поддръжката на файловата система BinderFS, Swap файлът вече може да се поставя в Btrfs, в UDP е добавена поддръжката на флаговете MSG_ZEROCOPY и GRO (Generic Receive Offload) и други.

Значителната промяна на номера на версията на Linux ядрото не е признак за някакви особени промени. Избрана е 5.0 от чисто естетически съображения, понеже в 4.х ядрата са се натрупали твърде много версии, достатъчни за започването на нова номерация на кернела. Смяната на първата цифра във версиите на Linux ядрото е формална стъпка, премахваща дискомфорта от натрупването на твърде много версии. Да си припомним, че преходът към линията 3.х бе осъществен през 2011 година, когато в клона 2.6.x се натрупаха 39 версии, а 4.х бе създадена през 2015 година след 20-те варианта на 3.х. Версия 5.0 продължава тази логика, като към днешен ден Linux ядрото включва около 6,5 милиона git обекта.

Основни нововъведения

Виртуализация и безопасност
  • Добавен е разработеният от Google механизъм Adiantum за криптиране на файловите системи. Той е особено удобен за маломощните компютърни устройства, които нямат достатъчен ресурс за използването на AES алгоритъма. Поддръжката на Adiantum е добавена в подсистемата fscrypt, която се използва за прозрачното криптиране и декриптиране на файловете и папките във файловите системи ext4, f2fs и ubifs. Тестовете на устройства с процесорни ядра ARM Cortex-A7 показаха, че алгоритмите Adiantum са 4 пъти по-бързи при криптирането и 5 пъти по-бързи при декриптирането в сравнение с AES-256-XTS
  • В криптографската подсистема е добавена хеш функцията Streebog
  • Добавена е поддръжката на масиви NVM с вградени операции за осигуряване на безопасността – например, защитата на данните с парола
  • Интегрирана е част от пачовете за блокиране заобикалянето на ограниченията на UEFI Secure Boot
  • Преработени са извикванията на всички функции в някои подсистеми с цел да се минимизира забавянето на процесорите от използването на защитата retpoline. За блокиране на атаките от тип Spectre v2, вместо косвени, сега се използват преки методи, при които не се използва механизма за спекулативно изпълнение на инструкциите и не се създават условията, необходими за успешното прилагане на атаката
  • В virtio-gpu драйвера (виртуалния графичен процесор, разработван в рамките на проекта Virgil) е добавена поддръжката на симулацията на EDID метаданните, което позволява в системата гост да се получи информация за възможностите на виртуалния монитор
Дискова подсистема, вход/изход и файлови системи
  • Дадена е възможност за поставянето на Swap файла във файловата система Btrfs. Файлът трябва да се намира само на едно физическо устройство и не трябва да е в компресиран дял
  • Реализирана е поддръжката на псевдо файловата система BinderFS за механизма на междупроцесорното взаимодействие Binder. BinderFS позволява стартирането на няколко Android сесии в една и съща среда
  • Във файловата система F2FS е добавено извикването ioctl(F2FS_IOC_SHUTDOWN) с флаг NEED_FSCK за иницииране на отложеното изпълнение на fsck
  • Направени са редица оптимизации на файловите системи Ext4 и XFS
Мрежова подсистема
  • За UDP е реализирана възможността за изпращане на данни чрез мрежовите пакети в zero-copy режим, което дава възможност за обмен на данни без междинно буфериране. Поддръжката на zero-copy в TCP се появи в Linux ядрото версия 4.14
  • В UDP стека е реализирана базовата поддръжка на GRO (Generic Receive Offload) за ускорената обработка на голям брой входящи пакети. В тестовете, включването на GRO повиши пропускателната способност от 1079 MB/s до 1466 MB/s, като едновременно с това интензивността на мрежовите заявки към ядрото е намляла от 769065 на 24877 заявки в секунда
  • Реализирана е поддръжката на обработката на ICMP грешките в UDP тунелирането
Памет и системни услуги

  • Реализиран е нов режим на работа на Task Scheduler за асиметричните ARM процесори с big.LITTLE архитектура, в които са комбинирани бързи процесорни ядра с икономични ядра. Новият режим намалява консумацията на електрическа енергия благодарение на първоначалното използване на икономичните ядра, които консумират по-малко енергия, и привличане на бързите ядра само когато производителността на икономичните не е достатъчна. Тази възможност е пренесена от варианта на ядрото за операционната система Android.
  • За ARM64 архитектурата е осигурена поддръжката на системното извикване kexec_file_load() и 52-битовото адресиране на виртуалната памет в потребителското пространство
  • За 32-битовите системи са реализирани варианти на 64-битовите версии на системните извиквания ppoll(), pselect6(), io_pgetevents(), recvmmsg(), futex() и rt_sigtimedwait(), кото не засягат проблема с 2038 година
  • За конзолата е добавен по-големия шрифт Terminus (ter16x32), подходящ за дисплеи с висока плътност на пикселите (HiDPI)
  • За C-SKY архитектурата е реализирана поддръжката на гореща замяна на процесора (hotplugging)
  • Добавена е поддръжката на процесорната инструкция WBNOINVD, налична в AMD и Intel процесорите с архитектура x86_64
  • Добавена е поддръжката на разширената група инструкции „Platform Quality of Service“ (AMD QoS) за AMD64 архитектурата, реализирана в следващото поколение процесори AMD EPYC. Тези инструкции дават възможност за мониторинг на използването на отделните процесорни ресурси – например, разпределението на L3 кеша, осигуряването на висока пропускателна способност на паметта и определяне на приоритетите между кода и данните в кеша
Хардуер
  • В AMDGPU драйвера е добавена поддръжката на технологията за адаптивна синхронизация FreeSync (VESA Adaptive-Sync), която дава възможност за корекция на кадровата честота на монитора в зависимост от обновяването на кадрите от страна на графичната карта. По този начин се постига плавно изображение, минимален отклик и липсата на лагове при игрите. FreeSync намалява консумацията на енергия, понеже не се налага често обновяване на кадрите при статичните изображения на екрана
  • В AMDGPU е добавена поддръжката на KFD (Kernel Fusion Driver) за чиповете vega12 и polaris12. Подобрен е кодът за зареждане на микрокод. Добавени са новите идентификатори на видеокартите
  • В DRM драйвера на Intel е подобрена поддръжката на процесорите Icelake
  • В драйверите за чиповете Tegra186 и Tegra194 е добавена поддръжката на прехвърлянето на аудиото чрез HDMI интерфейса
  • В драйвера v3d (за GPU Broadcom Video Core V) е включена поддръжката на TFU (Texture Formatting Unit)
  • В драйвера Nouveau е добавена началната поддръжка на графичните процесори NVIDIA Turing TU104 и TU106 (GeForce RTX 2000)
  • Реализирана е поддръжката на технологията DSC (Display Stream Compression), определена в VESA DP 1.4 спецификацията. Тази технология предоставя средства за компресия на данните без загуби, при обмена на данни с дисплеи, поддържащи много голяма резолюция
  • Добавен е нов драйвер за сензорните екрани на Raspberry Pi
  • Добавена е поддръжката на новите ARM системи върху чипа Qualcomm QCS404 (4x Cortex-A53), Allwinner T3 (R40) и f1c100s (armv5), NXP/Freescale i.MX7ULP (1x Cortex-A7 + 1x Cortex-M4), NXP LS1028A (2x Cortex-A72), LX2160A (16x Cortex-A72), NXP LX2160AQDS, NXP LX2160ARDB, i.MX8 (NXP, 4x Cortex-A53 + Cortex-M4), RDA Micro RDA8810PL
  • Добавена е поддръжката на новите ARM платформи и платки Rockchip Gru Scarlet (RK3188 Tablet), Phicomm N1 (Amlogic S905D), Libretech S805-AC, Linksys EA6500 v2 Wi-Fi router (BCM4708), Facebook Backpack-CMM BMC, Renesas iWave G20D-Q7 (RZ/G1N), Allwinner t3-cqa3t-bv3 (T3/R40), Lichee Pi Nano (F1C100s), Allwinner Emlid Neutis N5, Mapleboard MP130, Marvell Macchiatobin Single Shot (Armada 8040), i.MX mtrion emCON-MX6, imx6ul-pico-pi, imx7d-sdb-reva, i.MX7D PICO Hobbit, BQ Edison 2 QC, OrangePi Lite2, OrangePi 2G и OrangePi i96

 

Едновременно с това, Латиноамериканската фондация за свободен софтуер сформира версии с напълно свободното Linux ядро 5.0. Това е ядрото Linux-libre 5.0-gnu, изчистено от каквито и да било елементи, участъци сорс код, фърмуери и драйвери, съдържащи несвободни блокове код или областта на използване на които е ограничена от производителя.

В тази версия е изключено запитването на блобовете в драйвера ipu3-imgu. Обновен е кодът за изчистване на блобовете в подсистемите amdgpu, adreno, tegra, bnx2x, iwlwifi, mt76x0, qtnfmac, както и в софтуерните компоненти за поддръжката на аудио в системите върху чипа на Intel. Прекратено е изчистването на блобовете в драйвера Eicon DIVA ISDN, който вече е премахнат от ядрото. Да отбележим и инициативата libeRTy за създаването на Libre вариант на Linux ядрото с пачовете PREEMPT_RT за осигуряването на специален режим за работа в реално време.