Π Π΅Π»ΠΈΠ· ядра Linux 5.1

ПослС Π΄Π²ΡƒΡ… мСсяцСв Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Линус Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄Ρ прСдставил Ρ€Π΅Π»ΠΈΠ· ядра Linux 5.1. Π‘Ρ€Π΅Π΄ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ: Π½ΠΎΠ²Ρ‹ΠΉ интСрфСйс для асинхронного Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° io_uring, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования NVDIMM Π² качСствС ΠžΠ—Π£, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π² Nouveau раздСляСмой Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ памяти, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π€Π‘ Ρ‡Π΅Ρ€Π΅Π· fanotify, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ настройки ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ сТатия Zstd Π² Btrfs, Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ cpuidle TEO, рСализация систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ 2038 Π³ΠΎΠ΄Π°, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ с устройств device-mapper Π±Π΅Π· initramfs, LSM-ΠΌΠΎΠ΄ΡƒΠ»ΡŒ SafeSetID, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… live-ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π²Π°:

  • Дисковая подсистСма, Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы
    • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½ΠΎΠ²Ρ‹ΠΉ интСрфСйс для асинхронного Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° — io_uring, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»Π΅Π½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΏΠΎΠ»Π»ΠΈΠ½Π³Π° Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠ°ΠΊ с Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, Ρ‚Π°ΠΊ ΠΈ Π±Π΅Π· Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ. Напомним, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π°Π½Π΅Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ асинхронного Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° «aio» Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π» Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄, ΠΌΠΎΠ³ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ O_DIRECT (Π±Π΅Π· Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Π² ΠΎΠ±Ρ…ΠΎΠ΄ кэша), ΠΈΠΌΠ΅Π» ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ΠΌ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΈΠ·-Π·Π° оТидания доступности ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ дСмонстрировал большиС Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы ΠΈΠ·-Π·Π° копирования Π΄Π°Π½Π½Ρ‹Ρ… Π² памяти.

      Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… API
      io_uring Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ нСдостатки старого интСрфСйса aio. По ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ io_uring ΠΎΡ‡Π΅Π½ΡŒ Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ SPDK ΠΈ сущСствСнно ΠΎΠΏΠ΅Ρ€Π΅ΠΆΠ°Π΅Ρ‚ libaio ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ»Π»ΠΈΠ½Π³ΠΎΠΌ. Для использования io_uring Π² ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… прилоТСниях, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π² пространствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° liburing, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ Π²Ρ‹ΡΠΎΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΡƒΡŽ обвязку Π½Π°Π΄ интСрфСйсом ядра;

    • Π’ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ отслСТивания событий Π² Π€Π‘ fanotify() Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° отслСТивания ситуаций измСнСния супСрблока ΠΈ структуры dirent (события создания, удалСния ΠΈ пСрСмСщСния ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ²). ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ возмоТности ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒΡŽ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈ создании рСкурсивных отслСТиваний ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π€Π‘ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° inotify (измСнСния dirent Ρ€Π°Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· inotify, Π½ΠΎ
      ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π² условиях рСкурсивного отслСТивания Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² оставляла ΠΆΠ΅Π»Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ). Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΌΠΎΠΆΠ½ΠΎ эффСктивно ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· fanotify;

    • Π’ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС Btrfs Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ настройки уровня сТатия для Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° zstd, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ компромисс, ΠΌΠ΅ΠΆΠ΄Ρƒ быстрым Π½ΠΎ нСэффСктивным lz4 ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ Π½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΡΠΆΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΌ xz. По Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ сТатия ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ zlib для zstd Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠΏΡ†ΠΈΠΈ монтирования «-o compress=zstd:level». ΠŸΡ€ΠΈ тСстировании ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ обСспСчил сТатиС Π΄Π°Π½Π½Ρ‹Ρ… Π² 2.658 Ρ€Π°Π· ΠΏΡ€ΠΈ скорости сТатия 438.47 MB/s, скорости распаковки 910.51 MB/s ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠΈ памяти 780 MB, Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ 15 ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ — Π² 3.126 Ρ€Π°Π·, Π½ΠΎ ΠΏΡ€ΠΈ скорости сТатия Π² 37.30 MB/s, распаковки 878.84 MB/s ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠΈ памяти 2547 MB;
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, Ρ€Π°Π·ΠΌΠ΅Ρ‰Ρ‘Π½Π½ΠΎΠΉ Π½Π° устройствС device-mapper, Π±Π΅Π· примСнСния initramfs. Начиная с Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ выпуска ядра устройства device-mapper ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² процСссС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ Ρ€Π°Π·Π΄Π΅Π» с ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Π€Π‘. Настройка Ρ€Π°Π·Π΄Π΅Π»Π° осущСствляСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° «dm-mod.create». Π‘Ρ€Π΅Π΄ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΡ‘Π½Π½Ρ‹Ρ… для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ device-mapper: «crypt», «delay», «linear», «snapshot-origin» ΠΈ «verity»;
    • Π’ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π½Π° Flash-Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму F2FS Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ„Π»Π°Π³ F2FS_NOCOW_FL, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ copy-on-write для Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°;
    • Из ядра ΡƒΠ΄Π°Π»Π΅Π½Π° файловая систСма Exofs, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ собой Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ext2, Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² OSD (Object-based Storage Device). Π’Π°ΠΊΠΆΠ΅ ΡƒΠ΄Π°Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° SCSI-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° для ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… устройств хранСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²;
  • Виртуализация ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ
    • Π’ prctl() Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция PR_SPEC_DISABLE_NOEXEC для управлСния спСкулятивным Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ инструкций для Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ процСсса. Новая опция позволяСт Π²Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ спСкулятивноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ для процСссов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π°Ρ‚Π°ΠΊΠΎΠ²Π°Π½Ρ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π°Ρ‚Π°ΠΊΠΈ Ρ‚ΠΈΠΏΠ° Spectre. Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° дСйствуСт Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° exec();
    • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ LSM-ΠΌΠΎΠ΄ΡƒΠ»ΡŒ SafeSetID, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ систСмным сСрвисам бСзопасно ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ Π±Π΅Π· ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ (CAP_SETUID) ΠΈ Π±Π΅Π· получСния ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡ‡ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ root. НазначСниС ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π² securityfs ΠΏΡ€Π°Π²ΠΈΠ» Π½Π° основС Π±Π΅Π»ΠΎΠ³ΠΎ списка допустимых привязок (Π² Ρ„ΠΎΡ€ΠΌΠ΅ «UID1:UID2»);
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ измСнСния, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для стСковой ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ бСзопасности (LSM). ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ядра «lsm», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ порядкС;
    • Π’ подсистСму Π°ΡƒΠ΄ΠΈΡ‚Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° пространств ΠΈΠΌΡ‘Π½ Ρ„Π°ΠΉΠ»ΠΎΠ²;
    • Π Π°ΡΡˆΠΈΡ€Π΅Π½Ρ‹ возмоТности GCC-ΠΏΠ»Π°Π³ΠΈΠ½Π° structleak, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ содСрТимого памяти ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½Π° инициализация Π»ΡŽΠ±Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΊΠΎΠ΄Π΅ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠΎ ссылкС Π² стСкС;
  • БСтСвая подсистСма
    • Для сокСтов Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° новая опция «SO_BINDTOIFINDEX», похоТая Π½Π°
      «SO_BINDTODEVICE», Π½ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π°Ρ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° индСксный Π½ΠΎΠΌΠ΅Ρ€ сСтСвого интСрфСйса вмСсто ΠΈΠΌΠ΅Π½ΠΈ интСрфСйса;

    • Π’ стСк mac80211 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ назначСния ΠΎΠ΄Π½ΠΎΠΌΡƒ устройству Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… BSSID (MAC-адрСсов). Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ WiFi Π² стСк mac80211 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΡƒΡ‡Ρ‘Ρ‚ распрСдСлСния эфирного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ эфирноС врСмя ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими станциями (ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ‚ΠΎΡ‡ΠΊΠΈ доступа Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ мСньшСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ бСспроводным станциям, вмСсто Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ распрСдСлния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ всСми станциями);
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ «devlink health«, ΠΏΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ увСдомлСния ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с сСтСвым интСрфСйсом;
  • ΠŸΠ°ΠΌΡΡ‚ΡŒ ΠΈ систСмныС сСрвисы
    • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° бСзопасная доставка сигналов, ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования PID. НапримСр, ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π²Ρ‹Π·ΠΎΠ²Π° kill Ρ€Π°Π½Π΅Π΅ ΠΌΠΎΠ³Π»Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ситуация, ΠΊΠΎΠ³Π΄Π° сразу послС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сигнала Ρ†Π΅Π»Π΅Π²ΠΎΠΉ PID ΠΌΠΎΠ³ Π±Ρ‹Ρ‚ΡŒ освобоТдён ΠΈΠ·-Π·Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ процСсса ΠΈ занят Π΄Ρ€ΡƒΠ³ΠΈΠΌ процСссом, ΠΈ Π² ΠΈΡ‚ΠΎΠ³Π΅ сигнал пСрСдавался Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ процСссу. Для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ситуаций Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ систСмный Π²Ρ‹Π·ΠΎΠ² pidfd_send_signal, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ дСскрипторы ΠΈΠ· /proc/pid для обСспСчСния ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ привязки ΠΊ процСссу. Π”Π°ΠΆΠ΅ Ссли PID Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ задСйствован Π²ΠΎ врСмя ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ систСмного Π²Ρ‹Π·ΠΎΠ²Π°, Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ дСскриптор Π½Π΅ измСнится ΠΈ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ бСзопасно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сигнала процСссу;
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования устройств постоянной памяти (persistent-memory, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ NVDIMM) Π² качСствС ΠžΠ—Π£. Π”ΠΎ сих ΠΏΠΎΡ€ Π² ядрС ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ устройства ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»ΠΈΡΡŒ Π² качСствС устройств хранСния, Π½ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° поТСлания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΌΠΈΡ€ΠΈΡ‚ΡŒΡΡ с отставаниСм ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΡ‚Π°Ρ‚Π½Ρ‹ΠΉ API управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ядра Linux вмСсто примСнСния ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ систСм распрСдСлСния памяти Π² пространствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ²Π΅Ρ€Ρ… mmap для dax-Ρ„Π°ΠΉΠ»Π°;
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ простоя CPU (cpuidle, Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ пСрСвСсти CPU Π² Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΡ‹ экономии энСргии, Ρ‡Π΅ΠΌ Π³Π»ΡƒΠ±ΠΆΠ΅ Ρ€Π΅ΠΆΠΈΠΌ — Ρ‚Π΅ΠΌ большая экономия, Π½ΠΎ ΠΈ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ трСбуСтся для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ€Π΅ΠΆΠΈΠΌΠ°) — TEO (Timer Events Oriented Governor). Π”ΠΎ сих ΠΏΠΎΡ€ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π»ΠΎΡΡŒ Π΄Π²Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° cpuidle — «menu» ΠΈ «ladder», ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠ΅ΡΡ эвристикой. Π’ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ «menu» ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ извСстныС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с принятиСм эвристичСских Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, для устранСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ. TEO позиционируСтся ΠΊΠ°ΠΊ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ «menu», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π±ΠΎΠ»Π΅Π΅ высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ с сохранСниСм Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ уровня энСргопотрСблСния.
      ΠΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° «cpuidle.governor=teo»;

    • Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ ΡƒΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ 2038 Π³ΠΎΠ΄Π°, Π²Ρ‹Π·Π²Π°Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ 32-разрядного Ρ‚ΠΈΠΏΠ° time_t, Π² состав Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰ΠΈΠ΅ для 32-разрядных Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ 64-разрядныС счётчики Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ . Π’ ΠΈΡ‚ΠΎΠ³Π΅, 64-Ρ€Π°Π·Ρ€ΡΠ΄Π½ΡƒΡŽ структуру time_t Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π° всСх Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ…. АналоичныС измСнСния Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² сСтСвой подсистСмС для ΠΎΠΏΡ†ΠΈΠΉ timestamp сСтСвых сокСтов;
    • Π’ систСму горячСго налоТСния ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ Π½Π° ядро (live patching) Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ «Atomic Replace» для Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΠ³ΠΎ примСнСния сСрии ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Указанная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ позволяСт Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ сводныС ΠΏΠ°Ρ‚Ρ‡ΠΈ, ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ сразу нСсколько ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, вмСсто достаточно слоТного для сопровоТдСния процСсса поэтапного налоТСния live-ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ Π² строго ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌ порядкС. Если Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΡ‚Ρ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ состояния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ послС ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ измСнСния, Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ распространСниС сразу Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, привязанных ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ исходному ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ (Ρ‚.Π΅. ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ сводный ΠΏΠ°Ρ‚Ρ‡ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ядра вмСсто Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΈΠ· зависящих Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ);
    • ОбъявлСна ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² a.out ΠΈ
      ΡƒΠ΄Π°Π»Ρ‘Π½ ΠΊΠΎΠ΄ для формирования core-Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ a.out, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π² Π·Π°Π±Ρ€ΠΎΡˆΠ΅Π½Π½ΠΎΠΌ состоянии. Π€ΠΎΡ€ΠΌΠ°Ρ‚ a.out Π΄Π°Π²Π½ΠΎ Π½Π΅ примСняСтся Π½Π° систмах с Linux, Π° гСнСрация Ρ„Π°ΠΉΠ»ΠΎΠ² a.out ΡƒΠΆΠ΅ Π΄Π°Π²Π½ΠΎ Π½Π΅ поддСрТиваСтся соврСмСнными ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ срСдствами Π² конфигурациях для Linux ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ для a.out Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ Π² пространствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ;

    • Π’ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ BPF-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ опрСдСлСния ΠΈ удалСния Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π’ состав ядра Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΏΠ°Ρ‚Ρ‡ΠΈ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ spinlock для подсистСмы BPF, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности ΠΏΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ BPF-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ;
  • ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
    • Π’ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Nouveau Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π³Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½ΠΎΠ³ΠΎ управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ обращСния CPU ΠΈ GPU ΠΊ ΠΎΠ±Ρ‰ΠΈΠΌ синхронизированным областям памяти. БистСма раздСляСмой Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ памяти (SVM, shared virtual memory) Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π½Π° Π±Π°Π·Π΅ подсистСмы HMM (Heterogeneous memory management), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ устройства с собствСнными Π±Π»ΠΎΠΊΠ°ΠΌΠΈ управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ (MMU, memory management unit), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ основной памяти. Π’ Ρ‚ΠΎΠΌ числС ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ HMM ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ совмСстноС адрСсноС пространство ΠΌΠ΅ΠΆΠ΄Ρƒ GPU ΠΈ CPU, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ GPU ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ основной памяти процСсса. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° SVM ΠΏΠΎΠΊΠ° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для GPU сСмСйства Pascal, хотя ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° обСспСчСна ΠΈ для GPU Volta ΠΈ Turing. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² Nouveau Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ ioctl для управлСния ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ областСй памяти процСссов Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ GPU;
    • Π’ DRM-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ Intel для GPU Skylake ΠΈ Π½ΠΎΠ²Π΅Π΅ (gen9+) Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π΅ΠΆΠΈΠΌ fastboot, ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ лишниС смСны Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² Π²ΠΎ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ устройств Π½Π° Π±Π°Π·Π΅ ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ Coffelake ΠΈ Ice Lake. Для Ρ‡ΠΈΠΏΠΎΠ² Coffelake Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° GVT (виртуализация GPU). Для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… GPU Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° VFIO EDID. Для LCD ΠΏΠ°Π½Π΅Π»Π΅ΠΉ MIPI/DSI Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° элСмСнтов ACPI/PMIC. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ TV-Ρ€Π΅ΠΆΠΈΠΌΡ‹ 1080p30/50/60 TV;
    • Π’ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ amdgpu Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° GPU Vega10/20 BACO. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ срСдства управлСния ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ΠΌ Vega 10/20 ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ управлСния ΠΊΡƒΠ»Π΅Ρ€ΠΎΠΌ Vega 10. Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ PCI-ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ устройств для GPU Picasso. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ интСрфСйс управлСния ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ зависимостями для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ;
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ DRM/KMS-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ для ускоритСлСй экранных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ARM Komeda (Mali D71);
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° экранных ΠΏΠ°Π½Π΅Π»Π΅ΠΉ Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 ΠΈ Kingdisplay kd097d04;
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠ΄Π΅ΠΊΠΎΠ² Rockchip RK3328, Cirrus Logic CS4341 ΠΈ CS35L36, MediaTek MT6358, Qualcomm WCD9335 ΠΈ Ingenic JZ4725B, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Mediatek MT8183;
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° NAND-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Flash STMicroelectronics FMC2, Amlogic Meson;
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ускоритСлСй для систСм машинного обСспСчСния Habana AI;
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π³ΠΈΠ³Π°Π±ΠΈΡ‚Π½Ρ‹Ρ… Ethernet-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² NXP ENETC ΠΈ бСспроводных интСрфСйсов MediaTek MT7603E (PCIe) ΠΈ MT76x8.

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ЛатиноамСриканский Π€ΠΎΠ½Π΄ свободного ПО сформировал
Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ свободного ядра 5.1Linux-libre 5.1-gnu, ΠΎΡ‡ΠΈΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΡ‚ элСмСнтов ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΎΠΊ ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ², содСрТащих нСсвободныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈΠ»ΠΈ участки ΠΊΠΎΠ΄Π°, ΠΎΠ±Π»Π°ΡΡ‚ΡŒ примСнСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ. Π’ Π½ΠΎΠ²ΠΎΠΌ выпускС ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π±Π»ΠΎΠ±ΠΎΠ² Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°Ρ… mt7603 ΠΈ goya. ΠžΠ±Π½ΠΎΠ²Π»Ρ‘Π½ ΠΊΠΎΠ΄ чистки Π±Π»ΠΎΠ±ΠΎΠ² Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°Ρ… ΠΈ подсистСмах wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk ΠΈ touchscreen_dmi. ΠŸΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½Π° чистка Π±Π»ΠΎΠ±ΠΎΠ² Π² Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ΅ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΎΠΊ lantiq xrx200 ΠΈΠ·-Π·Π° Π΅Π³ΠΎ удалСния ΠΈΠ· ядра.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru