Linux 5.8 ядросының шығарылымы

Екі айлық дамудан кейін Линус Торвальдс енгізілді ядро шығару Linux 5.8. Ең көрнекті өзгерістердің арасында: KCSAN жарыс жағдайының детекторы, пайдаланушы кеңістігіне хабарландыруларды жеткізудің әмбебап механизмі, кірістірілген шифрлаудың аппараттық қолдауы, ARM64 үшін күшейтілген қауіпсіздік механизмдері, ресейлік Baikal-T1 процессорын қолдау, procfs даналарын бөлек орнату мүмкіндігі. , ARM64 Call Stack және BTI үшін көлеңкелі қауіпсіздік механизмдерін енгізу.

5.8 ядросы жобаның бүкіл өмір сүру кезеңінде барлық ядролардың өзгерістер саны бойынша ең үлкен болды. Сонымен қатар, өзгерістер кез келген ішкі жүйеге қатысты емес, ядроның әртүрлі бөліктерін қамтиды және негізінен ішкі қайта өңдеумен және тазалаумен байланысты. Ең үлкен өзгерістер жүргізушілерде байқалады. Жаңа нұсқа 17606 2081 әзірлеушіден 20 65 түзетуді қамтыды, бұл ядро ​​кодының репозиторийіндегі барлық файлдардың шамамен 16180% әсер етті. Патч өлшемі 1043240 МБ (өзгертулер 489854 5.7 файлға әсер етті, 15033 39 37 код жолы қосылды, 5.8 16 жол жойылды). Салыстыру үшін, 11 тармағында 3 4 түзету және патч өлшемі XNUMX МБ болды. XNUMX-де енгізілген барлық өзгерістердің шамамен XNUMX% -ы құрылғы драйверлеріне қатысты, өзгерістердің шамамен XNUMX% -ы аппараттық архитектураға тән кодты жаңартуға, XNUMX% - желілік стекке, XNUMX% - файлдық жүйелерге және XNUMX% -ға қатысты. ішкі ядролық ішкі жүйелермен байланысты.

басты инновациялар:

  • Виртуализация және қауіпсіздік
    • Орындауға және жазуға мүмкіндік беретін биттері бір уақытта орнатылған коды бар бөлімдері бар ядро ​​модульдерінің жүктелуі қамтамасыз етілген. Өзгеріс ядроны бір уақытта орындауға және жазуға мүмкіндік беретін жад беттерін пайдаланудан арылту үшін үлкен жобаның бөлігі ретінде жүзеге асырылды.
    • Енді әртүрлі опциялармен орнатылған, бірақ бірдей процесс идентификаторының аттар кеңістігін (pid аттар кеңістігін) көрсететін бірнеше procfs орнату нүктелерін пайдалануға мүмкіндік беретін жеке procfs даналарын жасауға болады. Бұрын барлық procfs орнату нүктелері тек бір ішкі көріністі көрсетеді және орнату параметрлеріне кез келген өзгерту бірдей процесс идентификаторы аттар кеңістігімен байланыстырылған барлық басқа бекіту нүктелеріне әсер етті. Әртүрлі нұсқалары бар монтаждау сұранысқа ие болуы мүмкін салалардың арасында процесстердің белгілі бір түрлерін және ақпараттық түйіндерді procfs жасыру мүмкіндігі бар кірістірілген жүйелер үшін жеңіл оқшаулауды жүзеге асыру болып табылады.
    • ARM64 платформасы үшін механизмге қолдау көрсетілді
      Көлеңкелік қоңыраулар стекі, стек буферінің толып кетуі жағдайында функцияның қайтару мекенжайын қайта жазудан қорғау үшін Clang компиляторымен қамтамасыз етілген. Қорғаудың мәні басқаруды функцияға ауыстырғаннан кейін және функциядан шықпас бұрын осы адресті шығарып алғаннан кейін қайтару мекенжайын бөлек «көлеңкелі» стекке сақтау болып табылады.

    • ARM64 платформасы үшін нұсқауларды қолдау қосылды ARMv8.5-BTI (Салалық мақсатты көрсеткіш) тармақталмауы керек нұсқаулар жиынының орындалуын қорғау үшін. Кодтың ерікті бөлімдеріне өтуді блоктау қайтаруға бағытталған бағдарламалау әдістерін (ROP - Return-Oriented Programming) пайдаланатын эксплуатацияларда гаджеттердің жасалуын болдырмау үшін жүзеге асырылады (ROP - Return-Oriented Programming; шабуылдаушы өз кодын жадқа орналастыруға тырыспайды, бірақ бұрыннан бар бөліктерде әрекет етеді. Қажетті функционалдылықты алу үшін шақырулар тізбегі құрастырылған қайтаруды басқару нұсқауымен аяқталатын машина нұсқаулары).
    • Блоктық құрылғыларды кірістірілген шифрлау үшін қосымша аппараттық қолдау (Кірістірілген шифрлау). Inlinep шифрлау құрылғылары әдетте дискіге салынған, бірақ жүйелік жады мен диск арасында логикалық түрде орналасады, ядрода көрсетілген кілттер мен шифрлау алгоритмі негізінде енгізу/шығаруды мөлдір шифрлайды және шифрын шешеді.
    • ЖЖҚ-да бастапқы жүктеу кескінін орналастыру кезінде initrd физикалық жады мекенжайын көрсетуге мүмкіндік беретін «initrdmem» ядросының пәрмен жолы опциясы қосылды.
    • Жаңа мүмкіндік қосылды: Perf ішкі жүйесіне қол жеткізу және өнімділікті бақылау үшін CAP_PERFMON. CAP_BPF, бұл бұрын CAP_SYS_ADMIN құқықтарын талап ететін белгілі BPF әрекеттеріне (мысалы, BPF бағдарламаларын жүктеу) мүмкіндік береді (CAP_SYS_ADMIN құқықтары енді CAP_BPF, CAP_PERFMON және CAP_NET_ADMIN тіркесіміне бөлінген).
    • Жүктелді жадты қонақ жүйелеріне қосуға және қосуға мүмкіндік беретін жаңа virtio-mem құрылғысы.
    • Құрылғы драйвері қабаттасатын жад аумақтарын пайдаланса, /dev/mem ішіндегі салыстыру әрекеттерін қайта шақыру енгізілді.
    • Қосылған осалдық қорғанысы CROSSTalk/SRBDS, бұл басқа CPU ядросында орындалған кейбір нұсқауларды орындау нәтижелерін қалпына келтіруге мүмкіндік береді.
  • Жад және жүйелік қызметтер
    • Кодты пішімдеу ережелерін анықтайтын құжатта, қабылданды инклюзивті терминологияны қолдану бойынша ұсыныстар. Әзірлеушілерге «мастер/құл» және «қара тізім/ақ тізім» тіркесімін, сондай-ақ «құл» сөзін бөлек пайдалану ұсынылмайды. Ұсыныстар тек осы терминдердің жаңа қолданылуына қатысты. Көрсетілген сөздердің өзегінде бұрыннан бар екендігі туралы ескертулер қозғалмайды. Жаңа кодта белгіленген шарттарды пайдаланушы кеңістігінде ашылатын API және ABI қолдауы қажет болса, сондай-ақ техникалық сипаттамалары белгілі бір шарттарды қолдануды талап ететін қолданыстағы аппараттық құралдарды немесе хаттамаларды қолдау үшін кодты жаңарту кезінде рұқсат етіледі.
    • Түзету құралы қамтылған KCSAN Динамикалық анықтауға арналған (Ядро параллельді дезинфекциялау құралы). жарыс шарттары ядроның ішінде. KCSAN пайдалану GCC және Clang жүйесінде құрастыру кезінде қолдау көрсетіледі және жадқа қол жеткізуді бақылау үшін компиляция уақытында арнайы модификацияларды қажет етеді (жадты оқу немесе өзгерту кезінде іске қосылатын үзу нүктелері пайдаланылады). KCSAN дамуының басты бағыты жалған позитивті алдын алу, масштабтау және пайдаланудың қарапайымдылығы болды.
    • Қосылды әмбебап механизм ядродан пайдаланушы кеңістігіне хабарландыруларды жеткізу. Механизм стандартты құбыр драйверіне негізделген және пайдаланушы кеңістігінде ашық арналар бойынша ядродан хабарландыруларды тиімді таратуға мүмкіндік береді. Хабарламаны қабылдау нүктелері арнайы режимде ашылатын және ядродан алынған хабарламаларды сақина буферінде жинақтауға мүмкіндік беретін құбырлар болып табылады. Оқу әдеттегі read() функциясы арқылы орындалады. Арна иесі ядродағы қай көздерді бақылау қажет екенін анықтайды және хабарлар мен оқиғалардың белгілі бір түрлерін елемеу үшін сүзгіні анықтай алады. Оқиғалардың ішінен қазіргі уақытта кілттермен операцияларға ғана қолдау көрсетіледі, мысалы, кілттерді қосу/жою және олардың атрибуттарын өзгерту. Бұл оқиғаларды GNOME-да пайдалану жоспарлануда.
    • PID қайта пайдалану жағдайларын өңдеуге көмектесетін «pidfd» функционалдығын дамытуды жалғастыру (pidfd белгілі бір процесспен байланысты және өзгермейді, ал PID сол PID-мен байланысты ағымдағы процесс аяқталғаннан кейін басқа процесспен байланыстырылуы мүмкін). Жаңа нұсқа процесті аттар кеңістігіне тіркеу үшін pidfd пайдалануды қолдауды қосады (setns жүйелік шақыруын орындау кезінде pidfd параметрін көрсетуге мүмкіндік береді). Pidfd пайдалану бір шақыру арқылы процесті аттар кеңістігінің бірнеше түріне тіркеп отыруын басқаруға мүмкіндік береді, бұл қажетті жүйелік шақырулардың санын айтарлықтай азайтады және тіркемені атомдық режимде жүзеге асырады (егер аттар кеңістігінің біріне тіркеме сәтсіз болса, басқалары қосылмайды) .
    • Жаңа жүйелік қоңырау қосылды faccessat2(), басқа
      faccessat() POSIX ұсыныстарына сәйкес келетін жалаушалары бар қосымша аргумент (бұрын бұл жалаушалар C кітапханасында эмуляцияланған, ал жаңа faccessat2 оларды ядрода іске асыруға мүмкіндік береді).

    • Cgroup ішінде қосылды тым көп своп кеңістігін алатын тапсырмаларды баяулату үшін пайдалануға болатын memory.swap.high параметрі.
    • Асинхронды енгізу/шығару интерфейсіне io_uring tee() жүйелік қоңырауы үшін қосымша қолдау.
    • «Қосылған механизм»BPF итераторы, ядро ​​құрылымдарының мазмұнын пайдаланушы кеңістігіне шығаруға арналған.
    • Берілген BPF бағдарламалары арасында деректер алмасу үшін сақиналы буферді пайдалану мүмкіндігі.
    • Механизмге падата, ядродағы тапсырмаларды параллель орындауды ұйымдастыруға арналған, жүктемені теңестіру арқылы көп ағынды тапсырмаларға қолдау қосылды.
    • Қайта жүктеулер арасында жоғалмайтын жад аймақтарында апаттың себебі туралы жөндеу ақпаратын сақтауға мүмкіндік беретін pstore механизмінде, қосылды құрылғыларды блоктау үшін ақпаратты сақтауға арналған сервер.
    • PREEMPT_RT ядро ​​тармағынан қозғалды жергілікті құлыптарды жүзеге асыру.
    • Қосылды XDP (eXpress Data Path) қолдауымен желі драйверлерін жазуды жеңілдетуге бағытталған жаңа буфер бөлу API (AF_XDP).
    • RISC-V архитектурасы үшін KGDB көмегімен ядро ​​құрамдастарын жөндеуге қолдау көрсетілді.
    • 4.8 шығарылымына дейін ядроны құру үшін пайдалануға болатын GCC нұсқасына қойылатын талаптар ұлғайтылды. Келесі шығарылымдардың бірінде жолақты GCC 4.9 деңгейіне дейін көтеру жоспарлануда.
  • Дискінің ішкі жүйесі, енгізу/шығару және файлдық жүйелер
    • Құрылғы картасында қосылды жаңа dm-ebs (блок өлшемін эмуляциялау) өңдегіші, ол кішірек логикалық блок өлшемін эмуляциялау үшін (мысалы, 512K сектор өлшемді дискілердегі 4 байт секторларды эмуляциялау үшін) пайдаланылуы мүмкін.
    • F2FS файлдық жүйесі енді LZO-RLE алгоритмі арқылы қысуды қолдайды.
    • dm-crypt ішінде қосылды шифрланған кілттерді қолдау.
    • Btrfs тікелей енгізу/шығару режимінде оқу операцияларын өңдеуді жақсартты. Монтаждау кезінде жеделдетілген жойылған бөлімшелер мен ата-анасыз қалған каталогтарды тексеру.
    • CIFS жүйесіне серверде қалыпты рұқсаттарды тексеруге мүмкіндік беретін, бірақ клиентке файлдарды немесе каталогтарды жоюға тыйым салатын «түйін жою» параметрі қосылды.
    • Ex4 қателерді өңдеуді жақсартты ENOSPC көп ағынды пайдалану кезінде. xattr GNU Hurd жүйесінде қолданылатын gnu.* аттар кеңістігіне қолдау қосты.
    • Ext4 және XFS үшін жеке файлдар мен каталогтарға қатысты DAX операцияларына қолдау қосылады (файлдық жүйеге тікелей кіру, блоктық құрылғы деңгейін пайдаланбай бет кэшін айналып өту).
    • Жүйелік қоңырауда statx() жалауша қосылды STATX_ATTR_DAX, ол көрсетілген кезде DAX механизмін пайдаланып ақпаратты шығарады.
    • EXFAT қосылды жүктеу аймағын тексеруге қолдау көрсету.
    • FAT ішінде жақсартылған FS элементтерін белсенді жүктеу. Баяу 2 ТБ USB дискісін сынау сынақты аяқтау уақытының 383 секундтан 51 секундқа дейін қысқарғанын көрсетті.
  • Желілік ішкі жүйе
    • Желілік көпірлердің жұмысын басқару кодында қосылды протоколды қолдау MRP (Media Redundancy Protocol), ол бірнеше Ethernet қосқыштарын айналдыру арқылы ақауларға төзімділікке мүмкіндік береді.
    • Жол қозғалысын басқару жүйесіне (Tc) қосылды жаңа «қақпа» әрекеті, бұл белгілі бір пакеттерді өңдеу және жою үшін уақыт аралығын анықтауға мүмкіндік береді.
    • Ядроға және ethtool утилитасына қосылған желілік кабельді сынауға және желілік құрылғылардың өзін-өзі диагностикасына қолдау қосылды.
    • MPLS (Multiprotocol Label Switching) алгоритміне қолдау мультипротоколды жапсырманы ауыстыру арқылы пакеттерді бағыттау үшін IPv6 стекіне қосылды (MPLS бұрын IPv4 үшін қолдау көрсетілген).
    • IKE (Internet Key Exchange) және IPSec пакеттерін TCP арқылы жіберуге қолдау қосылды (RFC 8229) ықтимал UDP блоктауын айналып өту үшін.
    • Жүктелді RDMA тасымалдау (InfiniBand, RoCE, iWARP) және RTRS протоколы арқылы блоктау құрылғысына қашықтан қол жеткізуді ұйымдастыруға мүмкіндік беретін желілік блок құрылғысы rnbd.
    • TCP стекінде қосылды таңдаулы растау (SACK) жауаптарында ауқымды қысуды қолдау.
    • IPv6 үшін жүзеге асырылды TCP-LD қолдауы (RFC 6069, Байланыстың ұзақ үзілістері).
  • Жабдық
    • Intel бейне карталарына арналған i915 DRM драйвері әдепкі бойынша Intel Tiger Lake (GEN12) чиптерін қолдауды қамтиды, ол үшін жүзеге асырылды қуат тұтынуына немесе өнімділік талаптарына байланысты жиілік пен кернеуді динамикалық реттеу үшін SAGV (Geyserville System Agent) жүйесін пайдалану мүмкіндігі.
    • Amdgpu драйвері FP16 пиксел пішімін қолдауды және бейне жадындағы (TMZ, сенімді жад аймағы) шифрланған буфермен жұмыс істеу мүмкіндігін қосты.
    • AMD Zen және Zen2 процессорларына арналған қуат сенсорларына, сондай-ақ AMD Ryzen 4000 Renoir үшін температура сенсорларына қолдау қосылды. Интерфейс арқылы қуат тұтыну туралы ақпаратты алуға қолдау AMD Zen және Zen2 үшін берілген RAPL (Орташа қуат шегін іске қосу).
    • Nouveau драйверіне NVIDIA модификатор пішіміне қолдау қосылды. gv100 үшін аралық сканерлеу режимдерін пайдалану мүмкіндігі іске асырылды. vGPU анықтау қосылды.
    • MSM (Qualcomm) драйверіне Adreno A405, A640 және A650 графикалық процессорларына қолдау қосылды.
    • Қосылды DRM (Direct Rendering Manager) ресурстарын басқаруға арналған ішкі негіз.
    • Xiaomi Redmi Note 7 және Samsung Galaxy S2 смартфондарына, сондай-ақ Elm/Hana Chromebook ноутбуктеріне қолдау қосылды.
    • СКД панельдері үшін қосылған драйверлер: ASUS TM5P5 NT35596, Starry KR070PE2T, Leadtek LTK050H3146W, Visionox rm69299, Boe tv105wum-nw0.
    • Renesas "RZ/G1H", Realtek RTD1195, Realtek RTD1395/RTD1619, Rockchips RK3326, AMLogic S905D, S905X3, S922XH, Olimex A20-OLinuXino50, Check Point ARM тақталары мен платформаларына қолдау қосылды.
      , Beacon i.MX8m-Mini, Qualcomm SDM660/SDM630, Xnano X5 теледидар қорабы, Stinger96, Beaglebone-AI.

    • MIPS процессоры Loongson-2K (қысқартылған Loongson64) үшін қосылды. CPU Loongson 3 үшін KVM гипервизоры арқылы виртуализацияға қолдау қосылды.
    • Қосылды
      ресейлік Baikal-T1 процессорын және оның негізіндегі чиптегі жүйені қолдау BE-T1000. Baikal-T1 процессорында 5600 ГГц жиілікте жұмыс істейтін екі P32 MIPS 5 r1.2 суперскалярлық ядросы бар. Чипте L2 кэш (1 МБ), DDR3-1600 ECC жад контроллері, 1 10 Гб Ethernet порты, 2 1 Гб Ethernet порты, PCIe Gen.3 x4 контроллері, 2 SATA 3.0 порты, USB 2.0, GPIO, UART, SPI, I2C бар. Процессор виртуализация үшін аппараттық қолдауды, SIMD нұсқауларын және ГОСТ 28147-89 қолдайтын біріктірілген аппараттық криптографиялық үдеткішті қамтамасыз етеді. Чип Imagination Technologies лицензиясы бар MIPS32 P5600 Warrior процессорының негізгі блогы арқылы жасалған.

Бұл ретте Латын Америкасының еркін бағдарламалық қамтамасыз ету қоры қалыптасты
опция толығымен бос ядро ​​5.8 - Linux-libre 5.8-gnu, көлемін өндіруші шектейтін бос емес құрамдастарды немесе код бөлімдерін қамтитын микробағдарлама және драйвер элементтерінен тазартылған. Жаңа шығарылым Atom ISP Video, MediaTek 7663 USB/7915 PCIe, Realtek 8723DE WiFi, Renesas PCI xHCI, HabanaLabs Gaudi, жетілдірілген асинхронды үлгі жиілігі түрлендіргіші, Maxim Integrated MAX98390 Home MicromiplifierL Audio Connector38060, MediaTek 2 USB/86 PCIe, драйверлерде блокты жүктеуді өшіреді. және I6656C EEPROM Slave. Adreno GPU, HabanaLabs Goya, xXNUMX сенсорлық экраны, vtXNUMX және btbcm драйверлері мен ішкі жүйелеріндегі жаңартылған blob тазалау коды.

Ақпарат көзі: opennet.ru

пікір қалдыру