Нововъведенията и промените в Linux 5.6 ядрото

5
1222

След два месеца разработване Линус Торвалдс представи новото Linux ядро версия 5.6. Сред най-важните нововъведения можем да изброим промените във VPN интерфейса WireGuard, поддръжката на USB4, възможността за обработване на TCP претоварванията чрез BPF, началната поддръжка на MultiPath TCP, решаването на проблема с 2038 година, механизмът bootconfig и файловата система ZoneFS

В новата версия са направени 13702 промени от 1810 разработчици. Размерът на обновяването е 40 MB. Промените са засегнали 11577 файла, добавени са 610012 реда и са премахнати 294828 реда сорс код. Около 45% от направените промени в Linux 5.6 са свързани с драйвери за различни хардуерни устройства. Около 15% са нов код за специфични хардуерни архитектури, 12% е делът на промените в мрежовия стек, 4% – файловите системи и 3% засягат вътрешната структура на Linux 5.6 ядрото.

Основните нововъведения в Linux ядрото версия 5.6

Мрежова подсистема:

  • Добавена е реализацията на VPN интерфейса WireGuard, който е реализиран на базата на най-съвременните методи за криптиране (ChaCha20, Poly1305, Curve25519, BLAKE2s). Той осигурява много висока производителност в сравнение с предишните решения, лесен е за използване, няма излишни усложнения и има много добри препоръки от всички, които са го използвали. Във WireGuard се използва концепцията за маршрутизиране чрез криптиращи ключове, която работи подобно на SSH. Необходимите за работата на WireGuard криптографски примитиви са пренесени от библиотеката Zinc в кода на стандартния Crypto API и бяха включени още в Linux ядрото 5.5.
  • Започна миграцията на компонентите, необходими за поддръжката на MPTCP (MultiPath TCP), разширенията за TCP протокола за организация работата на TCP връзките с доставката на мрежови пакети по няколко маршрута едновременно чрез различни мрежови интерфейси с различни IP адреси. За мрежовите приложения тези връзки изглеждат като обикновени TCP връзки, като цялата логика за разделяне на потоците се извършва чрез силите на MPTCP. Multipath TCP може да се използва както за разширяване на пропускателната способност, така и за увеличаване на надеждността. Така например, MPTCP може да се използва за прехвърляне на данни към смартфон чрез едновременното използване на Wi-Fi и 3G.
  • Я ядрото са направени промени, прехвърлящи ethtool инструментариума от ioctl() към netlink интерфейса. Новия интерфейс опростява добавянето на разширения, подобрява обработката на грешките, дава възможност за изпращане на съобщения при промени в състоянието и опростява взаимодействието между ядрото и потребителското пространство

Дискова подсистема, вход/изход, файлови системи

  • За файловата система Btrfs е добавена асинхронна реализация на операцията DISCARD (отбелязване на освободените блокове). Първоначално операцията DISCARD се извършваше синхронно, но това понякога водеше до намаляване на производителността поради необходимостта да се изчаква завършването на съответните команди от страна на дисковете. Асинхронната реализация два възможност да не се изчаква завършването на DISCARD от страна на диска и тя да се извършва във фонов режим
  • В XFS изчистен кода,  който използваха старите 32-битови броячи на времето (типът time_t е заменен с time64_t), който пораждаше проблема 2038 година. Премахнати са грешките и проблемите с паметта, възникващи при използването на 32-битови платформи
  • Във файловата система ext4 са направени оптимизации на производителността, свързани с обработката на блокирането на inode при операциите на запис и четене на данни. Повишена е производителността на презаписа при директния вход/изход (Direct I/O). За опростяване на диагностиката е осигурен записа на първия и последния код на грешката
  • Във файловата система F2FS е реализирана възможност за запис на данните в компресиран вид. За отделен файл или папка компресията може да бъде включена с помощта на командата chattr +c file или chattr +c dir
  • В състава на Linux ядрото е включена файловата система ZoneFS, която опростява работата на ниско ниво. Файловата система ZoneFS е разработена от компанията Western Digital и обособява всяка зона на запомнящото устройство с отделен файл, който може да се използва за директен запис на данните в raw режим, без да се налага манипулация на данните на ниво сектори и блокове. По този начин приложенията могат да използват файлов API вместо обръщения към блоковите устройства с помощта на ioctl. Това се отнася предимно за NVMe SSD, дисковото пространство в които е разделено на зони, включващи групи от блокове или сектори, в които се допуска единствено добавянето на данни чрез обновяване на цялата група от блокове.
  • В NFS е махнато използването по подразбиране монтиране на разделите върху UDP. Добавена в поддръжката на определената в NFS 4.2 спецификация възможност за директно копиране на файловете между сървърите. Добавена е новата опция за монтиране softreval в случай на отказ от страна на сървъра да изпълни кеширане значенията на атрибутите

Виртуализация и безопасност

  • Възможността за изключване на SELinux модула на ядрото по време на работа, вече се счита за остаряла и в бъдеще ще бъде забранена. За перманентното изключване на SELinux може да се използва параметъра selinux=0 в командния ред на ядрото
  • В новото Linux ядро е е включен драйвер, даващ възможност на системите гости под управлението на VirtualBox, да монтират папките на системата домакин
  • В подсистемата BPF е добавен комплекта пачове BPF dispatcher, повишаващ ефективността на извикваните BPF при настъпване на свързано с тях събитие при задействан механизъм Retpoline за защита от атаките тип Spectre V2

Памет и системни услуги

  • Добавено е устройството cpu_cooling даващо възможност за охлаждане на прегрят процесор чрез включването му в idle състояние за кратки периоди от време
  • За различните системи с big.LITTLE архитектура, в която в един и същи чип са поставени както бързи, така и икономични процесорни ядра, е реализиран механизмът uclamp_min. Той гарантира, че всяка конкретна задача ще бъде изпълнена на ядро с достатъчна производителност
  • Добавено е системното извикаване openat2(), предкагащо комплект допълнителни флагове за ограничаване на файловите пътища. По този начин се забранява пресичането на точките на монтиране, символните препратки, magic-линковете (/proc/PID/fd) и „../“ комонентите
  • Реализиран е новия подход bootconfig даващ възможност освен чрез опциите на командния ред, параметрите на ядрото да се определят чрез специален файл с настройки. За добавянето на файловете от подобен тип в initramfs образа, се предлага помощната програма bootconfig io_uring, с което се осигурява поддръжката на следните нови операции: IORING_OP_FALLOCATE (запазване на празни области), IORING_OP_OPENAT, IORING_OP_OPENAT2, IORING_OP_CLOSE (отваряне и затваряне на файлове), IORING_OP_FILES_UPDATE (добавяне и премахване на файлове от списъка за бърз достъп), IORING_OP_STATX (запитване на информация за файл), ORING_OP_READ, IORING_OP_WRITE, IORING_OP_FADVISE, IORING_OP_MADVISE и други
  • Преработен е механизма за очакване четене и запис на данни от pipe каналите. Промяната значително ускорява задачи като разпаралелване на задачите при особено големи проекти
  • На базата на използваната в ОС Android система за разпределяне на паметта ION е реализирана подсистемата dma-buf heaps, даваща възможност за управление на DMA буферите за съвместно използване на паметта от драйверите и приложенията
  • Продължава усъвършенстването на интерфейса за асинхронен вход/изход

Архитектури

  • Добавена е поддръжката на E0PD разширенията, появили се в ARMv8.5, даващи възможност за реализиране на защита от атаките, свързани със спекулативното изпълнение на код от процесора. Защитата E0PD изисква много по-малко ресурси от предишната KPTI (Kernel Page Table Isolation)
  • За устройствата с ARMv8.5 архитектура е добавена поддръжката на инструкцията RNG, даваща достъп до хардуерния генератор на псевдослучайни числа. В новото Linux ядро е реализирана и функция за формиране на ентропия за RNG инструкцията
  • Премахната е поддръжката на разширенията MPX (Memory Protection Extensions), която бе добавена в Linux ядрото версия 3,19. Тази технология служи за организиране проверката на указателите за съблюдаване на границите на областите памет. Технология не получи разпространение в компилаторите и сега е премахната от Linux ядрото
  • За RISC-V архитектурата е реализирана поддръжката на дебъгера KASan (Kernel address sanitizer), с който се откриват грешки при работа с паметта

Хардуер

  • Реализирана е цялостната поддръжка на спецификацията USB 4.0, базирана на Thunderbolt 3 протокола и осигуряваща пропускателна способност до 40 Gb/s, като е запазена обратната съвместимост с USB 2.0 и USB 3.2. По аналогия с Thunderbolt, интерфейсът USB 4.0 дава възможност за тунелиране на различни протоколи в един кабел с USB Type-C конектор, включително PCIe, Display Port и USB 3.x, както и софтуерните реализации на протоколите. Добавена е и поддръжката на Thunderbolt 3 в Connection Manager, който отговаря за създаването на тунели, позволяващи включването на няколко устройства чрез един и същ конектор
  • В amdgpu драйвера е добавена началната поддръжка на технологията за защита от копиране HDCP 2.x (High-bandwidth Digital Content Protection)
  • В DRM драйвера за графичните ускорители на Intel е добавена поддръжката на DSI VDSC за чипове с архитектури Lake и Tiger Lake. Вече се поддържа HDCP 2.2 за Coffee Lake чиповете
  • Продължава работата по унификацията на amdkfd драйвера за външните видеокарти от рода на Fiji, Tonga и Polaris
  • В драйвера nouveau е преработена поддръжката на режима за безопасно зареждане ACR за видеокартите с графичните процесори на Nvidia с архитектура Turing. Добавена е поддръжката на графичния енджин TU10x. Решени са проблемите с HD audio
  • Добавена е поддръжката на компресия на данните чрез DisplayPort MST (Multi-Stream Transport)
  • Добавен е новия драйвер ath11k за безжичните чипове на Qualcomm с поддръжката на 802.11ax. Драйверът се базира на mac80211 стека и поддържа режими на работа като точка за достъп, работна станция и Mesh възел на безжична мрежа
  • Направени са съществени промени в звуковата система ALSA. Добавена е поддръжката на новите хардуерни звукови кодеци Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308 и Ingenic JZ4770
  • Добавени са драйвери за LCD панелите Logic PD 28, Jimax8729d MIPI-DSI, igenic JZ4770, Sony acx424AKP, Leadtek LTK500HD1829, Xinpeng XPP055C272, AUO B116XAK01, GiantPlus GPM940B0, BOE NV140FHM-N49, Satoz SAT050AT40H12R2 и Sharp LS020B1DD01D
  • Добавена е поддръжката на ARM платките и платформите Gen1 Amazon Echo (OMAP3630-based), Samsung Galaxy S III mini (GT-I8190), Allwinner Emlid Neutis, Libre Computer ALL-H3-IT, PineH64 Model B, Aibretech Amlogic GX PC, Armada SolidRun Clearfog GTR, NXPGateworks GW59xx, Tolino Shine 3 eBook reader, Embedded Artists COM (i.MX7ULP), SolidRun CLearfog CX/ITX и HoneyComb (LX2160A), Google Coral Edge TPU (i.MX8MQ), Rockchip Radxa Dalang Carrier, Radxa Rock Pi N10, VMARC RK3399Pro SOM ST Ericsson HREF520, Inforce 6640, SC7180 IDP, Atmel/Microchip AM9X60 (ARM926 SoC, Kizboxmini), ST stm32mp15, AM3703/AM3715/DM3725, ST Ericsson ab8505, Unisoc SC9863A и Qualcomm SC7180.

Едновременно с това латиноамериканският Фонд за свободен софтуер компилира версия на изцяло свободното Linux 5.6 ядро. Това е Linux-libre 5.6-gnu, чийто код е напълно изчистен от елементи на фърмуер и драйвери, които съдържат несвободни блокове и участъци на код. В новата версия е изключено зареждането на блобовете в драйверите за AMD TEE, ATH11K и Mediatek SCP. Обновен е кодът за изчистване на блобовете в драйверите и подсистемите AMD PSP, amdgpu и nouveau..

0 0 глас
Оценете статията
Абонирай се
Извести ме за
guest
5 Коментара
стари
нови оценка
Отзиви
Всички коментари