Linux 5.11 цөмийн хувилбар

Хоёр сарын турш хөгжүүлсний дараа Линус Торвалдс Линуксийн цөмийн 5.11 хувилбарыг танилцууллаа. Хамгийн онцлох өөрчлөлтүүдийн дунд: Intel SGX анклавуудын дэмжлэг, системийн дуудлагыг таслан зогсоох шинэ механизм, виртуал туслах автобус, MODULE_LICENSE(гүйгээр модулиудыг угсрахыг хориглох), seccomp дахь системийн дуудлагыг хурдан шүүх горим, ia64 архитектур, WiMAX технологийг "шатлалт" салбар руу шилжүүлэх, SCTP-ийг UDP-д багтаах чадвар.

Шинэ хувилбарт 15480 хөгжүүлэгчийн 1991 засвар орсон, засварын хэмжээ 72 МБ (өөрчлөлтөд 12090 файл нөлөөлж, 868025 мөр код нэмэгдсэн, 261456 мөр устгагдсан). 46-д оруулсан бүх өөрчлөлтийн 5.11 орчим хувь нь төхөөрөмжийн драйверуудтай, 16 орчим хувь нь техник хангамжийн архитектурт хамаарах кодыг шинэчлэхтэй холбоотой, 13 хувь нь сүлжээний стектэй, 3 хувь нь файлын системтэй, 4 хувь нь холбоотой байна. дотоод цөмийн дэд системүүдтэй холбоотой.

Гол инноваци:

  • Дискний дэд систем, I/O болон файлын системүүд
    • Гэмтсэн файлын системээс өгөгдлийг сэргээхэд ашиглах хэд хэдэн холбох сонголтуудыг Btrfs-д нэмсэн: "rescue=ignorebadroots" зарим эх мод гэмтсэн хэдий ч (хэмжээ, uuid, data reloc, төхөөрөмж, csum, сул зай), " rescue=ignoredatacsums” товчийг дарж өгөгдлийг шалгах, “rescue=all” гэснийг сонгон ‘ignorebadroots’, ‘ignoredatacsums’ болон ‘nologreplay’ горимыг нэгэн зэрэг идэвхжүүлнэ. Өмнө нь хуучирсан "inode_cache" холбох сонголтыг зогсоосон. Мета өгөгдөл болон хуудасны хэмжээнээс (PAGE_SIZE) бага өгөгдөл бүхий блокуудыг дэмжих, мөн бүсчилсэн зай хуваарилах горимыг дэмжих зорилгоор кодыг бэлтгэсэн. Буфергүй (Шууд IO) хүсэлтүүдийг iomap дэд бүтэц рүү шилжүүлсэн. Хэд хэдэн үйлдлүүдийн гүйцэтгэлийг оновчтой болгосон бөгөөд зарим тохиолдолд хурдатгал нь хэдэн арван хувьд хүрч болно.
    • XFS нь "засвар хийх шаардлагатай" гэсэн тугийг хэрэгжүүлдэг бөгөөд энэ нь засвар хийх шаардлагатай байгааг илтгэдэг. Энэ тугийг тохируулсан үед xfs_repair хэрэгслээр тугийг дахин тохируулах хүртэл файлын системийг холбох боломжгүй.
    • Ext4 нь зөвхөн алдаа засах, оновчтой болгохоос гадна код цэвэрлэх үйлчилгээг санал болгодог.
    • NFS дээр суурилуулсан файлын системийг дахин экспортлохыг зөвшөөрдөг (жишээ нь NFS-ээр суулгасан хуваалтыг NFS-ээр дамжуулан экспортлох ба завсрын кэш болгон ашиглах боломжтой).
    • Процесс нь нээлттэй файлын тодорхойлогчдын бүх хүрээг нэг дор хаах боломжийг олгодог close_range() системийн дуудлага нь тодорхойлогчийг хаах горимд CLOSE_RANGE_CLOEXEC сонголтыг нэмсэн.
    • F2FS файлын систем нь шинэ ioctl() дуудлагуудыг нэмж, ямар файлуудыг шахсан хэлбэрээр хадгалахыг хэрэглэгчийн орон зайд хянах боломжийг олгодог. Шахалтын зохицуулагчийг цөмийн тал дээр эсвэл хэрэглэгчийн орон зайд байрлуулахыг сонгохын тулд "compress_mode=" холбох сонголтыг нэмсэн.
    • Тусдаа хэрэглэгчийн нэрийн орон зайг ашиглан давуу эрхгүй процессоор Overlayf-ийг холбох боломжийг олгосон. Аюулгүй байдлын загварын хэрэгжилттэй нийцэж байгаа эсэхийг шалгахын тулд кодын бүрэн аудит хийсэн. Overlayfs нь мөн UUID шалгахыг идэвхгүй болгож файлын системийн зургийн хуулбарыг ашиглах боломжийг нэмдэг.
    • Ceph файлын систем нь msgr2.1 протоколын дэмжлэгийг нэмсэн бөгөөд энэ нь өгөгдлийг шифрлэгдсэн хэлбэрээр дамжуулах үед AES-GCM алгоритмыг ашиглах боломжийг олгодог.
    • Dm-multipath модуль нь оролт/гаралтын хүсэлтийн маршрутыг сонгохдоо CPU-ийн хамаарлыг ("IO-ийн хамаарал") харгалзан үзэх чадварыг хэрэгжүүлдэг.
  • Санах ой болон системийн үйлчилгээ
    • prctl() дээр суурилсан системийн дуудлагыг таслан зогсоох шинэ механизм нэмэгдсэн бөгөөд энэ нь тодорхой системийн дуудлагад хандах үед хэрэглэгчийн орон зайнаас үл хамаарах зүйлүүдийг үүсгэж, түүний гүйцэтгэлийг дуурайх боломжийг олгодог. Энэ функц нь Wine болон Proton-д Windows системийн дуудлагыг дуурайхад шаардлагатай бөгөөд энэ нь Windows API-г алгасаж системийн дуудлагыг шууд гүйцэтгэдэг тоглоом, програмуудтай нийцтэй байдлыг хангахад шаардлагатай (жишээлбэл, зөвшөөрөлгүй ашиглахаас хамгаалах).
    • Хэрэглэгчийн орон зай дахь хуудасны алдааг (хуваарилагдаагүй санах ойн хуудсуудад хандах) зохицуулах зориулалттай userfaultfd() системийн дуудлага нь одоо цөмийн түвшинд тохиолдох онцгой тохиолдлуудын зохицуулалтыг идэвхгүй болгож, зарим эмзэг байдлыг ашиглахад илүү төвөгтэй болгох боломжтой болсон.
    • BPF дэд систем нь тодорхой BPF зохицуулагчтай өгөгдөл холбох боломжийг олгодог даалгаврын локал хадгалалтын дэмжлэгийг нэмсэн.
    • BPF програмуудын санах ойн хэрэглээний бүртгэлийг бүрэн шинэчилсэн - BPF объектуудын санах ойн ашиглалтыг удирдахын тулд memlock rlimit-ийн оронд бүлгийн хянагчийг санал болгосон.
    • BPF псевдокод дахь төрөл шалгах мэдээллийг өгдөг BTF (BPF Type Format) механизм нь цөмийн модулиудыг дэмждэг.
    • io_uring асинхрон оролт гаралтын интерфейс рүү shutdown(), renameat2() болон unlinkat() системийн дуудлагын дэмжлэгийг нэмсэн. io_uring_enter()-г дуудах үед завсарлага тодорхойлох чадвар нэмэгдсэн (та IORING_FEAT_EXT_ARG тугийг ашиглан завсарлага зааж өгөх аргументыг шалгаж болно).
    • Intel Itanium процессоруудад ашигладаг ia64 архитектурыг өнчин ангилалд шилжүүлсэн нь туршилт зогссон гэсэн үг юм. Hewlett Packard Enterprise шинэ Itanium тоног төхөөрөмжийн захиалгыг хүлээж авахаа больсон бөгөөд Intel өнгөрсөн жил хүлээж авсан.
    • Санах ойн удирдлагын нэгж (MMU) агуулаагүй MicroBlaze архитектурт суурилсан системүүдийн дэмжлэгийг зогсоосон. Ийм систем нь өдөр тутмын амьдралд удаан хугацааны туршид харагдахгүй байсан.
    • MIPS архитектурын хувьд gcov хэрэглүүрийг ашиглан кодын хамрах хүрээг шалгах дэмжлэг нэмэгдсэн.
    • Өөр өөр драйверуудыг шаарддаг функцийг хослуулсан олон үйлдэлт төхөөрөмжүүдтэй холбогдох виртуал туслах автобусны дэмжлэгийг нэмсэн (жишээлбэл, Ethernet болон RDMA дэмжлэгтэй сүлжээний картууд). Автобусыг MFD (Олон үйлдэлт төхөөрөмж) дэд системийг ашиглахад асуудалтай байгаа тохиолдолд төхөөрөмжид үндсэн болон хоёрдогч драйверийг хуваарилахад ашиглаж болно.
    • RISC-V архитектурын хувьд CMA (Contiguous Memory Allocator) санах ой хуваарилах системийн дэмжлэгийг нэмсэн бөгөөд энэ нь санах ойн хуудасны хөдөлгөөний техникийг ашиглан зэргэлдээх санах ойн том талбайг хуваарилахад оновчтой болсон. RISC-V-ийн хувьд /dev/mem-д хандах хандалтыг хязгаарлах, тасалдал боловсруулах хугацааг харгалзан үзэх хэрэгслүүдийг мөн хэрэгжүүлдэг.
    • 32 битийн ARM системүүдийн хувьд KASan (Цөмийн хаяг ариутгагч) дибаг хийх хэрэгсэлд дэмжлэг нэмсэн бөгөөд энэ нь санах ойтой ажиллах үед алдааг тодорхойлоход тусалдаг. 64 битийн ARM-ийн хувьд KASan хэрэгжилтийг MTE шошго (MemTag) болгон хувиргасан.
    • Наносекундын нарийвчлалтайгаар завсарлага авахын тулд epoll_pwait2() системийн дуудлагыг нэмсэн (epoll_wait дуудлага миллисекундээр удирддаг).
    • Одоо бүтээх систем нь MODULE_LICENSE() макро ашиглан кодын лиценз тодорхойлогдоогүй ачаалагдах цөмийн модулиудыг бүтээх гэж оролдоход алдаа гаргаж байна. Одооноос эхлэн статик функцүүдэд EXPORT_SYMBOL() макро ашиглах нь мөн бүтээх алдаа гаргах болно.
    • I/O-д ашигладаг санах ойноос GEM объектуудыг зураглах дэмжлэг нэмэгдсэн нь зарим архитектур дээр фреймбуфертэй ажиллах ажлыг хурдасгах боломжтой болсон.
    • Kconfig нь Qt4-ийн дэмжлэгийг зогсоосон (Qt5, GTK болон Ncurses-ийн дэмжлэгийг хадгалахын зэрэгцээ).
  • Виртуалчлал ба аюулгүй байдал
    • Seccomp() системийн дуудлагад хурдан хариу өгөх горимын дэмжлэг нэмэгдсэн бөгөөд энэ нь процесст хавсаргасан байнгын үйлдлийн битмап дээр үндэслэн тодорхой системийн дуудлагыг зөвшөөрсөн эсвэл хориглосон эсэхийг маш хурдан тодорхойлох боломжийг олгодог бөгөөд энэ нь ажиллуулах шаардлагагүй. BPF зохицуулагч.
    • Intel SGX (Software Guard eXtensions) технологид суурилсан анклав үүсгэх, удирдахад зориулсан нэгдсэн цөмийн бүрэлдэхүүн хэсгүүд нь санах ойн тусгаарлагдсан шифрлэгдсэн хэсэгт програмуудыг ажиллуулах боломжийг олгодог бөгөөд системийн бусад хэсэгт хандах боломж хязгаарлагдмал байдаг.
    • Хэрэглэгчийн орон зайнаас MSR (загварт зориулсан бүртгэл) руу нэвтрэх эрхийг хязгаарлах санаачилгын хүрээнд процессорын эрчим хүчний хэмнэлтийн горимыг (хэвийн, "гүйцэтгэл", "эрчим хүчний хэмнэлт") өөрчлөх боломжийг олгодог MSR_IA32_ENERGY_PERF_BIAS бүртгэлд бичих. , хориглоно.
    • Бодит цагийн системд зориулсан kernel-rt салбараас CPU-ийн хооронд чухал ач холбогдолтой ажлуудын шилжилтийг идэвхгүй болгох боломжийг шилжүүлсэн.
    • ARM64 системүүдийн хувьд MTE хаягуудыг (MemTag, Санах ойн тэмдэглэгээний өргөтгөл) дохионы зохицуулагчийн санах ойн хаягуудад ашиглах чадварыг нэмсэн. MTE-ийн хэрэглээг sigaction()-д SA_EXPOSE_TAGBITS сонголтыг зааж өгснөөр идэвхжүүлсэн бөгөөд аль хэдийн суллагдсан санах ойн блокуудад хандах, буферийн хэт их ачаалал, эхлүүлэхээс өмнө хандалтууд болон гаднаас ашиглах зэргээс үүдэлтэй эмзэг байдлын ашиглалтыг хаахын тулд заагчийг зөв ашиглахыг шалгах боломжийг олгодог. одоогийн нөхцөл байдал.
    • "DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING" параметрийг нэмсэн бөгөөд энэ нь dm-verity дэд системд хоёрдогч түлхүүрийн зүүлтэнд байрлуулсан гэрчилгээний хэш гарын үсгийг шалгах боломжийг олгодог. Практикт уг тохиргоо нь зөвхөн цөмд суулгасан гэрчилгээг төдийгүй үйл ажиллагааны явцад ачаалагдсан гэрчилгээг шалгах боломжийг олгодог бөгөөд энэ нь цөмийг бүхэлд нь шинэчлэхгүйгээр гэрчилгээг шинэчлэх боломжийг олгодог.
    • Хэрэглэгчийн горимын Линукс нь зогсолтыг зогсоох горимын дэмжлэгийг нэмсэн бөгөөд энэ нь хүрээлэн буй орчныг хөлдөөх, SIGUSR1 дохиог ашиглан унтах горимоос сэрэх боломжийг олгодог.
    • Санах ойг виртуал машинд залгах, салгах боломжийг олгодог virtio-mem механизм нь Big Block Mode (BBM)-ийн дэмжлэгийг нэмсэн бөгөөд энэ нь санах ойг цөмийн санах ойн хэмжээнээс том блок болгон шилжүүлэх эсвэл авах боломжийг олгодог. блок, энэ нь QEMU дахь VFIO-г оновчтой болгоход шаардлагатай.
    • TLS-ийн цөмийн хэрэгжилтэд CHACHA20-POLY1305 шифрийн дэмжлэг нэмэгдэв.
  • Сүлжээний дэд систем
    • 802.1Q (VLAN)-д холболтын эвдрэлийн удирдлагын механизм (CFM, Холболтын алдааны менежмент) хэрэгжсэн бөгөөд энэ нь виртуал гүүр (Виртуал гүүртэй сүлжээ) бүхий сүлжээн дэх алдааг тодорхойлох, шалгах, тусгаарлах боломжийг олгодог. Жишээлбэл, CFM нь ажилчид нь зөвхөн өөрсдийн тоног төхөөрөмжид хандах боломжтой олон бие даасан байгууллагуудыг хамарсан сүлжээн дэх асуудлыг тусгаарлахад ашиглаж болно.
    • SCTP протоколын пакетуудыг UDP пакетуудад (RFC 6951) багтаах дэмжлэг нэмэгдсэн бөгөөд энэ нь SCTP-ийг шууд дэмждэггүй хуучин хаягийн орчуулагчтай сүлжээнд SCTP ашиглах, мөн IP хаяг руу шууд нэвтрэх боломжгүй системд SCTP-ийг хэрэгжүүлэх боломжийг олгодог. давхарга.
    • WiMAX технологийн хэрэгжилт үе шатанд шилжсэн бөгөөд WiMAX шаарддаг хэрэглэгч байхгүй бол ирээдүйд устгахаар төлөвлөж байна. WiMAX-ийг нийтийн сүлжээнд ашиглахаа больсон бөгөөд цөмд WiMAX-ийг ашиглаж болох цорын ганц драйвер нь хуучирсан Intel 2400m драйвер юм. 2015 онд NetworkManager сүлжээний тохируулагч дээр WiMAX дэмжлэгийг зогсоосон. Одоогоор WiMax нь LTE, HSPA+, Wi-Fi 802.11n зэрэг технологиор бараг бүрэн солигдсон.
    • Ирж буй TCP траффикийг тэг хувилах горимд боловсруулах гүйцэтгэлийг оновчтой болгох ажил хийгдсэн, i.e. шинэ буферт нэмэлт хуулахгүйгээр. Хэдэн арван эсвэл хэдэн зуун килобайт өгөгдлийг хамарсан дунд хэмжээний траффикийн хувьд recvmsg()-ийн оронд zerocopy ашиглах нь мэдэгдэхүйц үр дүнтэй байдаг. Жишээлбэл, хэрэгжүүлсэн өөрчлөлтүүд нь тэг хуулбарыг ашиглах үед 32 KB мессеж бүхий RPC маягийн урсгалыг боловсруулах үр ашгийг 60-70% нэмэгдүүлэх боломжтой болсон.
    • Олон PPP холбоосыг хамарсан сүлжээний гүүр үүсгэхийн тулд шинэ ioctl() дуудлагуудыг нэмсэн. Санал болгож буй чадвар нь фреймүүдийг нэг сувгаас нөгөө суваг руу, жишээлбэл PPPoE-ээс PPPoL2TP сесс рүү шилжүүлэх боломжийг олгодог.
    • MPTCP (MultiPath TCP) цөмд нэгтгэх нь өөр IP хаягтай холбоотой өөр өөр сүлжээний интерфэйсээр хэд хэдэн маршрутын дагуу пакетуудыг нэгэн зэрэг хүргэх TCP холболтын ажиллагааг зохион байгуулах TCP протоколын өргөтгөл юм. Шинэ хувилбар нь одоо байгаа MPTCP холболтод шинэ урсгал нэмэх үед холбогдох боломжтой IP хаягуудыг сурталчлах ADD_ADDR сонголтыг дэмждэг.
    • Холболтын санал хураалтын төсөв хэтэрсэн үед үйлдлийг тохируулах боломжийг нэмсэн (завгүй-санал асуулга). Өмнө нь ашиглах боломжтой SO_BUSY_POLL горим нь төсөв дууссан үед softirq руу шилжих гэсэн үг юм. Санал асуулгыг үргэлжлүүлэн ашиглах шаардлагатай програмуудын хувьд SO_PREFER_BUSY_POLL гэсэн шинэ сонголтыг санал болгож байна.
    • IPv6 нь олон хэрэглэгчийн IPv6 L4 VPN болон VRF (Virtual routing and forwarding) төхөөрөмжүүдийг үүсгэхэд ашигладаг SRv6 End.DT4 болон End.DT3 горимуудын дэмжлэгийг хэрэгжүүлдэг.
    • Netfilter нь багц илэрхийллийн хэрэгжилтийг нэгтгэсэн бөгөөд энэ нь багц жагсаалтын элемент бүрт олон илэрхийллийг зааж өгөх боломжийг олгосон.
    • API-уудыг 802.11 утасгүй стек дээр SAR тэжээлийн хязгаар, түүнчлэн AE PWE болон HE MCS параметрүүдийг тохируулахын тулд нэмсэн. Intel iwlwifi драйвер нь 6GHz (Ultra High Band) хүрээг дэмждэг болсон. Qualcomm Ath11k драйвер нь FILS (Fast Initial Link Setup, IEEE 802.11ai гэж стандартчилагдсан) технологийн дэмжлэгийг нэмсэн бөгөөд энэ нь нэг хандалтын цэгээс нөгөө рүү шилжих явцад роуминг саатахаас ангижрах боломжийг олгодог.
  • Тоног төхөөрөмж
    • Amdgpu драйвер нь AMD "Green Sardine" APU (Ryzen 5000) болон "Dimgrey Cavefish" GPU (Navi 2)-д дэмжлэг үзүүлэхээс гадна Zen 2 цөм, RDNA 2 GPU (Navi 2) бүхий AMD Van Gogh APU-д анхны дэмжлэг үзүүлдэг. Шинэ Renoir APU танигчдад зориулсан дэмжлэг (Zen 2 CPU болон Vega GPU дээр суурилсан) нэмэгдсэн.
    • Intel видео картуудад зориулсан i915 драйвер нь дутуу пикселийн өнгийг тодорхойлохын тулд хөрш зэргэлдээх пикселүүдийн төлөвийг (хамгийн ойрын хөршийн интерполяци) харгалзан масштабыг нэмэгдүүлэх шүүлтүүрийг хэрэгжүүлсэн IS (бүхэл тоон масштаб) технологийг дэмждэг. Discrete Intel DG1 картуудын дэмжлэгийг өргөжүүлсэн. Ice Lake / Gen11 чипээс хойш бий болсон "Big Joiner" технологийн дэмжлэгийг хэрэгжүүлсэн бөгөөд нэг транскодер ашиглан хоёр урсгалыг боловсруулах, жишээлбэл, нэг DisplayPort-ээр дамжуулан 8K дэлгэц рүү гаргах боломжийг олгодог. Видео санах ойн хоёр буфер хооронд асинхроноор шилжих горимыг нэмсэн (асинхрон эргүүлэх).
    • Nouveau драйвер нь Ampere бичил архитектур (GA100, GeForce RTX 30xx) дээр суурилсан NVIDIA GPU-ийн анхны дэмжлэгийг нэмсэн бөгөөд одоогоор зөвхөн видео горимыг удирдах хэрэгслээр хязгаарлагдаж байна.
    • LCD самбарт ашигладаг 3WIRE протоколын дэмжлэгийг нэмсэн. Novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 болон ABT Y030XX067A 3.0 хавтангийн дэмжлэгийг нэмсэн. OnePlus 6 ба 6T ухаалаг гар утасны самбарын дэмжлэгийг тус тусад нь тэмдэглэж болно, энэ нь төхөөрөмж дээр өөрчлөгдөөгүй цөмийг ачаалах ажлыг зохион байгуулах боломжтой болсон.
    • Intel-ийн анхны дискрет USB4 хост хянагч Maple Ridge-д дэмжлэг нэмсэн.
    • Allwinner H6 I2S, ADAU1372 аналог төхөөрөмжүүд, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI болон XCVR, Realtek RT715 болон Qualcomm SM8250 аудио кодлогчдын дэмжлэгийг нэмсэн.
    • Added support for ARM boards, devices and platforms: Galaxy Note 10.1, Microsoft Lumia 950 XL, NanoPi R1, FriendlyArm ZeroPi, Elimo Initium SBC, Broadcom BCM4908, Mediatek MT8192/MT6779/MT8167, MStar Infinity2M, Nuvoton NPCM730, Marvell Armada 382, ​​​​Mikrotik нь Marvell Prestera 98DX3236, Nuvoton NPCM750 BMC, Kontron i.MX8M Mini, Espressobin Ultra, "Trogdor" Chromebook, Kobol Helios64, Engicam PX30.Core бүхий серверүүд дээр суурилсан.
    • NVIDIA Tegra 3 дээр суурилсан Ouya тоглоомын консолын суурилуулсан дэмжлэг.

Үүний зэрэгцээ Латин Америкийн Чөлөөт Програм хангамжийн Сан нь бүрэн үнэ төлбөргүй 5.11 цөмийн хувилбарыг бий болгосон - Linux-libre 5.11-gnu, програм хангамжийн элементүүд болон чөлөөт бус бүрэлдэхүүн хэсгүүд эсвэл кодын хэсгүүдийг агуулсан драйверуудаас цэвэрлэсэн бөгөөд хамрах хүрээ нь хязгаарлагдмал. үйлдвэрлэгчээс. Шинэ хувилбар нь qat_4xxx (крипто), lt9611uxcm (dsi/hdmi гүүр), ccs/smia++ (мэдрэгч), ath11k_pci, nxp аудио дамжуулагч болон mhi pci контроллерийн драйверуудыг цэвэрлэдэг. Amdgpu, btqca, btrtl, btusb, i915 csr драйверууд болон дэд системүүдийн шинэчилсэн blob цэвэрлэх код. m3 rproc, idt82p33 ptp цаг болон qualcomm arm64 дахь шинэ блокуудыг идэвхгүй болгосон.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх