След два месеца усилена работа Линус Торвалдс представи Linux ядрото версия 5.8. Сред най-важните промени можем да се спрем на детектора на състоянието KCSAN (The Kernel Concurrency Sanitizer), универсалния механизъм за доставка на уведомленията в пространството на потребителя, поддръжката на хардуера за inline криптиране, разширените механизми за защита за ARM64, поддръжката на руския процесор Baikal-T1, възможност за разделно монтиране на procfs екземплярите, механизмите за защита Shadow Call Stack и BTI за архитектурата ARM64.
В Linux Kernel 5.8 са направени най-много промени в историята на Linux ядрото от самото начало на съществуването на този проект. При това промените не са само в някоя от подсистемите, а обхваща различни части на ядрото. Извършени са редица вътрешни преработки и изчистване на кода. Най-големи промени са направени в драйверите. В новата версия са направени 17606 промени от 2081 разработчици, което е засегнало около 20% от всички файлове в хранилището с кода на ядрото. Размерът на ъпдейта е 65 MB, като промените за засегнали 16180 файла. Добавени са 1043240 реда сорс код, премахнати са 489854 реда код. За сравнение във версия 5.7 размерът на обновяването бе 39 MB.
Около 37% от всички направени в Linux Kernel 5.8 промени са в драйверите за различните устройства, приблизително 16% от промените идват от изчистването на кода, характерен за различните архитектури, 11% – мрежови стек, 3% – файлови системи и 4% – вътрешни подсистеми на ядрото.
Основни промени и нововъведения в Linux ядрото версия 5.8
Виртуализация и безопасност
- Осигурено е блокирането на зареждането на модулите на ядрото, които имат секции с код, в които са вдигнати флаговете, разрешаващи операциите по писане и четене на данни. Тази промяна е направена в рамките на по-голям проект за премахване на страниците памет, в които едновременно е разрешено четенето и писането на данни.
- Дадена е възможност за създаването на отделни procfs екземпляри, даващи възможност за използването на няколко точки за монтирането на procfs, на които са зададени различни опции, но в едно и също пространство на имената на идентификаторите на процесите (pid namespace). Досега всяка промяна в една от точките на монтиране водеше до промени и в другите точки.
- За ARM64 архитектурата е реализирана поддръжката на механизма Shadow-Call Stack, предоставян от компилатора Clang за защита и презапис на адреса за връщане от функция в случай на препълване на буфер в стека. Идеята е след прехвърляне на управлението към друга функция, да се запази адреса за завръщане в отделен ‘сенчест’ стек, откъдето този адрес може да бъде извлечен след изпълнението на функцията.
- За архитектурата ARM64 е добавена поддръжката на инструкцията ARMv8.5-BTI (Branch Target Indicator) за защита изпълнението на блок процесорни инструкции, към които не трябва да се извършва условен преход. Блокирането на преходите към произволен участък от кода е реализирано за противодействието на експлойти, които използват възвратно ориентирано програмиране (ROP – Return-Oriented Programming), при което атакуващият не използва свой код, а сглобява действащ експлойт от късчетата процесорни инструкции в паметта на устройството.
- Добавена е поддръжката на хардуера за inline криптиране на блоковите устройства (Inline Encryption). Устройствата за inline криптиране обикновено са вградени в запомнящото устройство, но логически са разположени между системната памет и диска, като се осъществява прозрачно криптиране и декриптиране на информацията в реално време.
- Добавен е новия параметър на командния ред на ядрото initrdmem, даващ възможност да се укаже физическия адрес за поместването на initrd в паметта.
- Добавено е новото устройство virtio-mem, даващо възможност за реализирането на горещо поставяне и махане на памет.
- Добавена е защита срещу уязвимостта CROSSTalk/SRBDS, даваща възможност за възстановяване на резултатите от изпълнението на някои инструкции, изпълнени от друго ядро на централния процесор.
Памет и системни услуги
- В Linux Kernel вече са приети препоръките за използването на инклузивна терминология. На разработчиците не се препоръчва да се използват комбинациите от думи ‘master / slave’ и ‘blacklist / whitelist’, както и отделната дума ‘slave’. Препоръките се отнасят само за новото използване на тези термини.
- В новото ядро е включен инструмента на настройка KCSAN (Kernel Concurrency Sanitizer).
- Добавен е нов универсален механизъм за прехвърляне на уведомленията от ядрото в потребителското пространство.
- В Cgroup е добавена настройката memory.swap.high, която може да се използва за забавяне на процесите, които заемат твърде много място в swap дяла.
- Добавен е механизмът BPF iterator, предназначен за извеждане в потребителското пространство на информация от някои от структурите на ядрото.
- Предоставена е възможност за използването на пръстеновиден буфер за обмен на данни между BPF програмите
- В механизма padata, предназначен за организацията на паралелното изпълнение на процесите в ядрото е добавена поддръжката на изцяло многопоточна работа с балансирано натоварване.
- За RISC-V архитектурата е реализирана настройка на софтуера чрез дебъгера KGDB.
- В Linux Kernel 5.8 са повишени изискванията към версията на GCC компилатора, която може да се използва за компилиране на ядрото. В някой от следващите версии на Linux ядрото ще бъде направен задължителен преход към GCC 4.9.
Дискова подсистема, вход/изход, файлови системи
- Във файловата система F2FS е добавена компресия с поддръжката на алгоритъма LZO-RLE.
- В Btrfs е подобрено четенето в режим на директен вход/изход.
- Във FAT е подобрено предварителното зареждане елементите на файловата система. По този начин тестването на бавен 2 TB USB флаш стик е намалено от 383 на 51 секунди.
Хардуер
- В DRM драйвера i915 за графиката на Intel по подразбиране е включена поддръжката на чиповете Tiger Lake (GEN12), за които е реализирана възможността за използването на системата SAGV (System Agent Geyserville) за динамична промяна на честотата и напрежението в зависимост от изискванията към консумацията на електрическа енергия или към производителността.
- В драйвера amdgpu е добавена поддръжката на пикселния формат FP16 и е реализирана възможността за работа с криптираните буфери в графичната памет (TMZ, Trusted Memory Zone).
- Добавена е поддръжката на сензорите за консумация на енергия за чиповете AMD Zen и Zen2, както и на температурните сензори на AMD Ryzen 4000 Renoir. За AMD Zen и Zen2 е осигурено извличане на информацията за консумираната енергия чрез интерфейса RAPL (Running Average Power Limit).
- В драйвера Nouveau е добавена поддръжката на модификаторите на Nvidia. За gv100 е реализирана възможността за използването на презредова развивка. Добавено е определянето на vGPU.
- В драйвера MSM (Qualcomm) е добавена поддръжката на GPU Adreno A405, A640 и A650.
- Добавен е вътрешен фреймуърк за управлението на DRM (Direct Rendering Manager) ресурсите.
- Добавена е поддръжката на смартфоните Xiaomi Redmi Note 7 и Samsung Galaxy S2, както и на лаптопите lm/Hana Chromebook.
- Добавени са драйвери за LCD панелите ASUS TM5P5 NT35596, Starry KR070PE2T, Leadtek LTK050H3146W, Visionox rm69299, Boe tv105wum-nw0.
- Добавена е поддръжката на ARM платките и платформите Renesas „RZ/G1H“, Realtek RTD1195, Realtek RTD1395/RTD1619, Rockchips RK3326, AMLogic S905D, S905X3, S922XH, Olimex A20-OLinuXino-LIME-eMMC, Check Point L-50, Beacon i.MX8m-Mini, Qualcomm SDM660/SDM630, Xnano X5 TV Box, Stinger96, Beaglebone-AI.
- Вече е налична поддръжката на MIPS процесора Loongson-2K (олекотен Loongson64). За CPU Loongson 3 е добавена поддръжката на виртуализация с използването на хипервайзора KVM.
- Добавена е поддръжката на руския процесор Baikal-T1 и базираната на него SoC BE-T1000. Този чип е разработен с използването лиценза на компанията magination Technologies относно процесорното ядро MIPS32 P5600 Warrior.
Едновременно с това латиноамериканската Фондация за свободен софтуер формира версия на изцяло свободния Linux Kernel 5.8 – Linux-libre 5.8-gnu, който е изцяло изчистен от всички елементи на фърмуери и драйвери, съдържащи несвободни компоненти или участъци от кода, областта на използване на който е ограничена от производителя. В новата версия е изключено зареждането на блобовете в драйверите за Atom ISP Video, MediaTek 7663 USB/7915 PCIe, Realtek 8723DE WiFi, Renesas PCI xHCI, HabanaLabs Gaudi, Enhanced Asynchronous Sample Rate Converter, Maxim Integrated MAX98390 Speaker Aimplifier, Microsemi ZL38060 Connected Home Audio Processor, и I2C EEPROM Slave. Обновен е кодът за изчистване на блобовете в драйверите и подсистемите на Adreno GPU, HabanaLabs Goya, x86 touchscreen, vt6656 и btbcm.
Всичко важно от света на технологиите, директно в пощата ти.
С абонирането приемате нашите Условия и Политика за поверителност. Може да се отпишете с един клик по всяко време.
Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Google Новини, TikTok, Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iPhone, Huawei, Google Chrome, Microsoft Edge и Opera!


