Спустя два месяца работы Линус Торвальдс представил релиз ядра Linux 5.1. Новинка получила большое количество новых функций и доработок, включая новый интерфейс для асинхронного ввода ввода/вывода io_uring, поддержку масштабируемого мониторинга очень больших ФС через fanotify, решение проблемы 2038 года и др.

По словам Торвальдса, 5.1 получил более 13 тысяч коммитов, что немало. Итоговый список изменений получился очень внушительным.

Как всегда, изменения и нововведения разделены на несколько категорий.

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


  • в новом релизе появился новый интерфейс для асинхронного ввода/вывода — io_uring. Он хорош тем, что поддерживает поллинг ввода/вывода, плюс может работать как с буферизацией, так и без нее. Ранее механизм асинхронного ввода/вывода не поддерживал эту возможность, плюс мог работать лишь в обход кэша и без буферизации. Из-за ожидания доступности метаданных возникали блокировки;
  • механизм отслеживания событий в ФС fanotify() получил поддержку отслеживания ситуаций изменения суперблока и структуры dirent (это специфическое событие создания, удаления и перемещения каталогов). Новые возможности позволяют решать проблемы с масштабируемостью, которые возникают при создании рекурсивных отслеживаний изменений в очень больших файловых системах при помощи механизма inotify;
  • файловая система Btrfs теперь имеет возможность настройки уровня сжатия для алгоритма zstd. Плюс в этой ФС добавлено отложенное выполнение операций сканирования поддерева для снижения нагрузки и реализация ioctl для управления отключением устройств;
  • в ядре теперь нет файловой системы Exofs, которая представляла собой один из вариантов ext2, оптимизированный для работы с хранилищами объектов OSD. Нет и SCSI-протокола для таких устройств хранения объектов;
  • также внесены исправления, которые направлены на увеличение масштабируемости и производительности файловых систем, которые работают через механизм FUSE.

Безопасность и виртуализация


  • в ядро добавлены низкоуровневые изменения, которые нужны для стековой организации загрузки модулей безопасности (возможность загрузки одного LSM-модуля поверх другого). Плюс есть возможность управлять порядком загрузки;
  • расширены возможности GCC-плагина structleak. Он позволяет блокировать потенциальные утечки содержимого памяти. Добавлена возможность инициализации любых переменных, используемых в коде через обращение по ссылке в стеке;
  • в prctl() появилась опция PR_SPEC_DISABLE_NOEXEC, которая дает возможность управлять спекулятивным выполнением инструкций для выбранного процесса.

Сетевая подсистема


  • в стек mac80211 добавлена возможность назначения одному устройству сразу нескольких MAC-адресов. Кроме того, в этот стек добавлен и учет распределения эфирного времени, с возможностью его распределения между несколькими станциями. Это дает возможность выделять меньше времени на передачу медленным беспроводным станциям при работе в качестве точки доступа;
  • в модуль cfg80211/nl80211 добавлена возможность выноса обработчика аутентификации при работе в режиме точки доступа;
  • если возникают проблемы с сетевым интерфейсом, узнать подробности можно посредством механизма devlink health. Здесь же есть и API для получения информации об устройстве, плюс добавлена команда «flash update» для обновления прошивок сетевого адаптера;
  • добавлена поддержка TLS 1.3.

Память и сервисы


  • разработчики добавили безопасную доставку сигналов, которая учитывает возможность повторного использования PID. Так, ранее при выполнении вызова kill могла возникнуть ситуация, когда после отправки сигнала целевой PID мог быть освобожден из-за завершения работы процесса. В результате сигнал передавался другому процессу;
  • также добавлена возможность использования устройств постоянной памяти в качестве ОЗУ (persistent-memory, например NVDIMM). До выхода нового ядра эти устройства поддерживались в качестве устройств хранения, но теперь их можно задействовать в качестве дополнительной оперативной памяти. Возможность была добавлена в ответ на пожелания пользователей, которым не нужна высокая производительность, но требуется штатный API управления памятью ядра Linux вместо использования имеющихся систем распределения памяти в пространстве пользователя, которые работают поверх mmap для dax-файла;
  • для решения проблемы 2038 года (переполнение 32-разрядного типа time_t) в состав ядра включены системные вызовы, которые предлагают для 32-разрядных архитектур 64-разрядные счетчики времени. Как итог, 64-разрядная структура time_t может теперь использоваться на всех архитектурах.

Железо


  • в драйвер Nouveau добавили поддержку гетерогенного управления памятью, что дает возможность обращения CPU и GPU к общим синхронизированным областям памяти;
  • в DRM-драйвере Intel для GPU и новее режим fastboot включен по умолчанию. Это исключает лишние смены режимов во время загрузки. Добавлены новые идентификаторы устройств на базе Coffelake и Ice Lake;
  • в драйвер amdgpu добавлена поддержка GPU Vega10/20 BACO;
  • добавлена поддержка большого количества новым ARM плат и платформ, включая NVIDIA Shield TV (Darcy) на базе Tegra210, Bosch Guardian, Winterland IceBoard, Inspur on5263m5, Zodiac Digital Tapping Unit, Phicomm K3, X96 Max, FriendlyElec NanoPC-T4, NanoPi M4, Radxa ROCK Pi 4, Logic PD i.MX6QD, Y Soft IOTA Draco/Hydra/Ursa, Phytec phyCORE i.MX6 UltraLite, MYIR Tech MYD-LPC4357, Chameleon96, Oxalis Evalkit V100, Elgin RV1108 R, Si-Linux CAT874, Si-Linux EK874, Raspberry Pi Model 3 A+.

Более подробно об изменениях можно прочитать здесь (англ.) и здесь (рус.).

Комментарии (42)


  1. sv09
    06.05.2019 20:45

    Вспомнилось: «Вышло новое ядро Linux, вот сейчас на ЛОРе срач начнется… А… Он уже идёт»


    1. maxzhurkin
      06.05.2019 22:19
      +2

      Можно подумать, ЛОР нуждается в поводе для срача…


      1. tundrawolf_kiba
        07.05.2019 15:36

        Повод придаёт срачу смысл и направление(по крайне мере на какое-то время).


  1. saipr
    06.05.2019 21:27
    +2

    А мне было интересно посмотреть нет ли в добавленном хэше stribog (ГОСТ Р 34.11-2012) плюх, которые обнаружились в libressl и libgcrypt. Этих плюх в ядре linux-5.1 нету. Российская криптография продвигается.


    1. DamnLoky
      07.05.2019 03:17
      +1

      кто о чем, а вшивый о бане…
      ну не нужны миру ни ваши стриборги, ни кузнечики…


      1. assusdan
        07.05.2019 13:24
        +2

        Зачем так грубо? Комментарий ведь по существу и без политоты. Раз алгоритмы существуют и используются — значит, они кому-то нужны. Мир — это не только зарубежье.


      1. saipr
        07.05.2019 14:33
        -3

        Думал не отвечать, но достали.


        ну не нужны миру ни ваши стриборги, ни кузнечики…

        Мы живем в России и этим нужно гордиться. Здесь мы живем по российским законам и в частности по закону ФЗ-63 об Электронной подписи. А чир это значит, а значит это то, что так или иначе рано или позднее все граждане России столкнуться со Стрибогом. Да, уже сегодня без него нельзя участвовать в электронных торгах, а Госуслуги, а ФНС?
        Нет, если вы живете в России, то откуда вы знаете что нам надо, а если живете то это в двойне удивительно. Меня поражает, что все делается из-под тишка. Если вы считаете, что не нужно, так обратитесь в Госдуму, чтобы отменили Закон или в ФСБ и скажите им, что они не правы со стрибогами и кузнечиками! А так знать она (моська) сильна, коль лает на слона.
        Получили удовлетворение от минусование? Минусуйте дальше, вам же указ чужое мнение.
        Сказать нечего, дай тявкну.


        1. DamnLoky
          07.05.2019 14:45
          -1

          >Мы живем в России и этим нужно гордиться.
          Поводов для гордости все меньше и меньше.
          >а Госуслуги, а ФНС
          Пользовался пару раз. Кузнечиков не видел, стрибогов тоже. ничего не устанавливал сверх того, что идет в стандартном браузере, и как-то все работало. Выходит, можно и без лишних сущностей?
          Тем более, что эти алгоритмы вызывают у исследователей нехорошие вопросы.
          Так что спасибо, но не надо это в общемировой код. Делайте форки, кладите свой код туда, пользуйтесь сами и распространяйте среди тех, кто без этого обойтись не может.
          А остальной мир как-то и без ФСБшных закладок проживет.


        1. JekaMas
          07.05.2019 15:48
          -1

          Это не из-под тишка. Это, гражданин, право выбора, его иногда еще свободой называют.


          1. saipr
            07.05.2019 15:54
            +2

            Это же какое право выбора? Не исполнчть закон? Круто. Вы сначало его поменяйте, а потом не исполняйте. Это не свобода, это вседозволенность. Не путайте.


            1. JekaMas
              07.05.2019 16:35
              -1

              Да сколько угодно. Вам нужно — пользуйте. Почему надо тащить это во все оси?
              И да, мне лично хватает отечественных инициатив и доверия они не вызывают.
              Для вас, можете считать, что весь мой трафик не проходит по территории РФ.


              1. saipr
                07.05.2019 16:45

                Почему надо тащить это во все оси?

                А почему надо тащить во все оси aes и rsa, sha всех видов, ec, я уж молчу про шифрсьюты tls.


                1. snizovtsev
                  07.05.2019 17:42
                  +1

                  • Они появились намного раньше и хорошо изучены международным сообществом;
                  • За это время к ним ни разу не возникло аргументированных нехороших вопросов;
                  • AES выиграл в открытом математическом конкурсе при NIST, а не вышел из закрытых стен силовых структур;
                  • Уверен, что помимо собственно алгоритмов, огромные деньги вкладывались в ненавязчивое продвижение с помощью грантов различным проектам и университетам;
                  • Как ни крути, но у российской власти ещё лет на 100 карма в мире откровенно испорчена.


                  1. hokum13
                    08.05.2019 10:14

                    но у российской власти ещё лет на 100 карма в мире откровенно испорчена.
                    Ну она много у кого испорчена. Безгрешен только тот, кто ничего не делает. Это не мешает США, ВБ, ФРГ и прочим капиталистическим львам проталкивать свои протоколы в мэйнстрим. И это совершенно не значит, что в них есть закладки, как не означает и обратного.
                    AES выиграл в открытом математическом конкурсе при NIST
                    Что совершенно ничего не значит. Могу привести как минимум 2 сценария, при которых можно пропихнуть закладку.
                    и хорошо изучены международным сообществом;
                    Ну во-первых это не означает наличие закладок, а означает отсутствие очевидных закладок. А во-вторых это не мешает мировому сообществу «хорошо изучить» новые протоколы, выявить бэкдор и предъявить его наличие. Но почему-то Вы предлагаете просто сходу навесить ярлык.

                    Ну и напоследок: эти протоколы, по умолчанию, разрабатывались для внутренних нужд РФ. Для всяких там военных, госуслуг и налоговых. Господ из «запрещенных на территории РФ» и т.п. ни кто пользоваться этим шифром не заставляет, не доверяете — не пользуйтесь. Но это совершенно не значит, что нужно обязательно запрещать передачу кода в мэйнстрим. Скорее наоборот, сопротивление отдельных представителей сообщества (без аргументации уровня «вот вам мастер-пароль от кузнечика») свидетельствует о наличие скрытых мотивов.


                1. Gendalph
                  07.05.2019 19:44

                  Загуглил, нашел tls.txt.
                  Т.е. реализовали TLS на уровне ядра, вместо дырявого OpenSSL который всеми использовался, а поддерживался непонятно кем и как. На всякий случай напоминаю, что TLS используется для установки защищенных соединений для HTTP, FTP, SMTP и еще ряда протоколов — это гораздо больший спектр применений чем ЭЦП.
                  Если вы считаете что нужно для TLS Добавить поддержку stribog — напишите патч и отправьте его мейнтейнерам с объяснением своего виденья ситуации.


                  1. a5b
                    08.05.2019 02:24
                    +1

                    Соседний коммит сообщает, что внутри ядра (linux-kernel/net/tls/) есть исключительно симметричные TLS_CIPHER_AES_GCM* и никакие хэш-функции в данной инфраструктуре не используются (tls.h uapi/tls.h kconfig; GCM = AEAD; "Crypto kernel TLS socket"): https://github.com/torvalds/linux/commit/3c4d7559159bfe1e3b94df3a657b2cda3a34e218


                    Only symmetric crypto is done in the kernel, keys are passed by setsockopt after the handshake is complete.

                    Setting the TLS ULP allows us to set/get TLS socket options. Currently
                    only the symmetric encryption is handled in the kernel.

                    Инициализацией соединения занимается все тот же openssl "A patchset to OpenSSL to use ktls as the record layer is here: https://github.com/Mellanox/openssl/commits/tls_rx2". Общий смысл этой инфраструктуры — переложить часть шифрования на умные NIC "Innova TLS" (ConnectX4-Lx + Xilinx FPGA) — см авторов e8f69799 — mellanox (nvidia), рядом также встречались адреса из fb.com; https://lwn.net/Articles/759052/; "TLS Offload to Network Devices — Rx Offload"


                    … offload TLS crypto to a network device. It enables the kernel TLS socket to skip encryption and authentication operations on the transmit side of the data path. Leaving those computationally expensive operations to the NIC.


            1. DamnLoky
              07.05.2019 17:41

              Лайнус должен исполнять законы РФ?
              Еще раз: кому надо, тот пусть себе эти закладки и ставит.
              А остальной мир спокойно работает на aes, rsa, sha и т.д.


            1. avost
              07.05.2019 18:10

              Это же какое право выбора? Не исполнчть закон?

              С чего бы это вдруг? Закон не обязывает любого гражданина использовать кузнечиков и стрибогов, развно как и саму электронную подпись вообще.


              Вы сначало его поменяйте, а потом не исполняйте.

              Не вводите людей в заблуждение. Его даже менять не надо. Даже если мне понадобилась электронная подпись, закон вовсе не обязывает генерировать её кузнечиками и стрибогами. Читайте статью 7 упомянутого вами закона.


              Федеральный закон от 06.04.2011 N 63-ФЗ (ред. от 23.06.2016) "Об электронной подписи" (с изм. и доп., вступ. в силу с 31.12.2017)
              Статья 7. Признание электронных подписей, созданных в соответствии с нормами иностранного права и международными стандартами
              1. Электронные подписи, созданные в соответствии с нормами права иностранного государства и международными стандартами, в Российской Федерации признаются электронными подписями того вида, признакам которого они соответствуют на основании настоящего Федерального закона.
              2. Электронная подпись и подписанный ею электронный документ не могут считаться не имеющими юридической силы только на том основании, что сертификат ключа проверки электронной подписи выдан в соответствии с нормами иностранного права.


              Это не свобода, это вседозволенность.

              Вы так говорите, как будто в отношении криптографии это что-то плохое. Почти все законы, касающиеся криптографии, в России относятся лишь к госорганам. Остальные вполне свободны использовать всё что угодно и как угодно.


            1. MTyrz
              07.05.2019 20:48
              +1

              Нет такого закона, в ядро Линукса коммитить. Представляете? Совсем нет, ни в одной стране.


        1. Mykola_Von_Raybokobylko
          07.05.2019 17:42

          Месье, от прочтения данного комментария я испытал когнитивный диссонанс.
          Причем тут россияне и ядро операционной системы которое разрабатывает мировое сообщество.


        1. Nova_Logic
          07.05.2019 21:42

          Мы живем в России и этим нужно гордиться.

          Гордиться чем? Идиотскими законами? Уровнем жизни? Взяточниками? Бессмысленными конторами, пожирающие гос бюджеты и грабящие свой народ с рассказами про «импортозамещение»?
          Полицией и ОВД Дальний? Владельцами шубохранилищ?
          Здесь мы живем по российским законам

          Здесь мы живем по принципу —чиновникам и приближенным всё— а нам закон.
          то откуда вы знаете что нам надо

          я живу тут, но ни я ни мои коллеги не знают нахрена нужно всё время изобретать велосипед.
          А так знать она (моська) сильна, коль лает на слона.

          Ну так прекратите лаять. Ни ваша дума, ни ваша контора не заставят думающих людей считать всю эту хреномантию происходящую нормальной. Как и в принципу думу легитимной.


    1. EvilMan
      07.05.2019 16:27

      Ну так в чём проблема-то? Возьмите и реализуйте поддержку этих алгоритмов в ядре, отправьте патчи в мейл-лист ментейнерам подсистемы криптографии. Нужно не только их реализовать и добавить, но и сопровождать. Видимо, эти алгоритмы настолько сильно никому особо и не нужны непосредственно в ядре.


      1. saipr
        07.05.2019 16:42

        Вы про что? Вот Торвальдс со своей командой их (стрибог) реализовали и добавили в ядро. Им честь и хвала. И они не рассуждают надо- не надо. Значит надо, раз добавили в Ядро.


        1. snizovtsev
          07.05.2019 17:56
          +2

          Вы хоть бы не поленились в исходники сходить, прежде чем такой бред писать:


           * Streebog hash function as specified by GOST R 34.11-2012 and
           * described at https://tools.ietf.org/html/rfc6986
           * Copyright (c) 2013 Alexey Degtyarev <alexey@renatasystems.org>
           * Copyright (c) 2018 Vitaly Chikunov <vt@altlinux.org>


          1. assusdan
            08.05.2019 01:58
            +2

            Тем не менее, патч приняли в ядро. Мейнтейнер, принимавший патч, я предполагаю, не являлся его автором.


      1. samhuawey
        08.05.2019 09:19

        Речь о том, что поддержка этих алгоритмов в ядре потенциально откроет дыру в безопасности серверов Linux по всему миру. Не всякий программист (и даже майнтейнер) сможет сполтычка разобраться нет ли бэкдоров в математической модели криптографии, созданной в правительственной организации. Это во-первых.

        Во-вторых, алгоритмы госуслуг и ФНС вряд ли волнуют 95% программистов в России, а те, кого волнуют (работающих в госконторах), вряд ли выложат свои наработки в открытом виде, потому что соглашение о неразглашении, гостайна и всё такое.

        В-третьих, согласно моему опыту работать по госконтрактам и с госзакупками по-честному практически невозможно — причины этого разнятся от банального «дай на лапу» до заведомо невыполнимых условий контракта и невозможности получения денег за труд. В большинстве случаев независимый суд встаёт на сторону государственного органа, так что лично для себя работать на государство я смысла не нахожу.

        Я горжусь что Россия — государство, но чиновниками и способом ведения дел не горжусь. Спасибо, не надо, обойдусь без свеаборга.


  1. Enmar
    06.05.2019 23:09

    Ура, наконец-то решение проблемы 2k38!


    1. ReklatsMasters
      07.05.2019 00:49
      +1

      Главное, чтоб всё успели обновиться. Включая по для атомных станций, авиадиспетчерских и прочее.


      1. mikechips
        07.05.2019 09:12

        <шутка про Россию>Не нужно обновляться, у нас сделают отечественное ядро Линукса, где такой проблемы не будет</шутка про Россию>


    1. DamnLoky
      07.05.2019 03:19

      хм, а как решили?
      там фундаментально вроде решения не прослеживается.
      в 32 бита больше секунд не утолкать, и даже если ядро будет тикать по-новому, в 64 бита, то как быть с приложениями, которые «привыкли», что unix_timestamp 32 бита, и именно такую разрядность предполагают в своем коде?


      1. LoadRunner
        07.05.2019 08:38

        Ну в ядре поддержка есть, теперь можно и ПО подтягивать.


      1. mikechips
        07.05.2019 09:13

        Разработчики ядра своё дело сделали, на уровне Линукса проблемы больше нет. А с ПО каждый уже только сам и может разобраться)


    1. vortupin
      07.05.2019 03:42

      Ура, наконец-то решение проблемы 2k38!
      Вы это серьезно, или это такой невидимый сарказм?


      1. vortupin
        07.05.2019 16:46

        А вместо тупого минусования (а какие-то «непримеримые» не поленились и пресловутую карму заминусовать!), кто-нибудь может реально объяснить, почему проблема 2038 года в Linux вас так волнует сегодня, в 2019 году? Вы ведь не из будущего, из 2036 пишете? Что за программное обеспечение глобального планирования на десятилетия вы используете? Существует ведь далеко не нулевой шанс, что к 2038 году операционная система Linux вообще исчезнет, по крайней мере, в той форме, что существует сейчас.

        Я, конечно, прекрасно понимаю, что среди комментаторов (да и вообще посетителей хабра) число комиттивших в кернел составляет ноль целых, хрен десятых, но хотелось бы понять причину подобного «народного негодования» :)


        1. ReklatsMasters
          07.05.2019 17:41

          Что за программное обеспечение глобального планирования на десятилетия

          Ну, например, различное военное по, включая то, что работает с ядерным оружием. ПО для атомных станций, они точно строятся на десятилетия вперёд. Это из критичного, что беспокоит лично меня. А так, в госсекторе, возможно, что то поломается. (минусовал не я если что)


          1. vortupin
            07.05.2019 17:52
            +1

            Я не абстрактно спрашиваю, а вполне конкретно, почему столь отдаленную проблему здешние комментаторы так лично восприняли, прямо, как «прорыв» какой-то? Если вспомнить пресловутую «проблему 2000 года» (а тогда хайп на 2 порядка был выше), то оказалось, что «не так страшен чёрт, как его малютки» (индусские контракторы, которых массово начали тогда в Штаты завозить).

            Что же до реальной проблемы 32-битных систем и языка C, использованного для многих embedded систем, и военных или критических разработок, то фикс в новом ядре Linux ну никак им не поможет, от слова совсем — хотя бы потому, что большинство этих программ не смогут работать с новым ядром, плюс еще весьма проблематичен апгрейд этих систем.

            P.S. Думаю, что намного раньше «проблемы 2038» года возникнет «проблема Linux kernel 5.1», когда после бездумного апгрейда любителями «latest & greatest», перестанет правильно работать целая куча программ, полагающая time_t равным signed int.


          1. d1f
            07.05.2019 19:08

            Линукса там и близко нет.


  1. krka92
    07.05.2019 10:34

    Что с поддержкой Ryzen, интересно)


    1. DSolodukhin
      07.05.2019 10:41

      Она есть.


    1. slonopotamus
      07.05.2019 14:31

      А какие есть варианты того что с ней может быть?


      1. DSolodukhin
        07.05.2019 15:15

        До 4.19 были проблемы с работой графического ядра, вплоть до полной невозможности загрузиться на встройке.


        1. krka92
          08.05.2019 10:48

          Вплоть до не возможности загрузиться даже на «не встройке»