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

Хоёр сарын турш хөгжүүлсний дараа Линус Торвалдс Линуксийн цөмийн 5.19 хувилбарыг танилцууллаа. Хамгийн онцлох өөрчлөлтүүдийн дунд: LoongArch процессорын архитектурыг дэмжих, "BIG TCP" засваруудыг нэгтгэх, fscache дахь эрэлтийн горим, a.out форматыг дэмжих кодыг устгах, програм хангамжийг шахахад ZSTD ашиглах чадвар, интерфейс. санах ойг хэрэглэгчийн орон зайнаас зайлуулах, псевдо санамсаргүй тоо үүсгэгчийн найдвартай байдал, гүйцэтгэлийг нэмэгдүүлэх, Intel IFS (In-Field Scan), AMD SEV-SNP (Secure Nested Paging), Intel TDX (Trusted Domain Extensions) болон ARM-ийг дэмжих SME (Scalable Matrix Extension) өргөтгөлүүд.

6.0.x салбар нь хувилбарын дугаарын эхний дугаарыг өөрчлөх хангалттай хувилбаруудыг хуримтлуулсан тул дараагийн цөмийн хувилбар нь 5 дугаартай байх магадлалтай гэж Линус мэдэгдлээ. Дугаарлалтын өөрчлөлт нь гоо зүйн шалтгаанаар хийгдсэн бөгөөд цувралд олон тооны асуудлууд хуримтлагдсанаас болж таагүй байдлыг арилгах албан ёсны алхам юм.

Линус мөн энэ хувилбарыг бүтээхдээ Asahi Linux түгээлт дээр суурилсан Линукс орчинтой, ARM64 архитектур (Apple Silicon) дээр суурилсан Apple зөөврийн компьютер ашигласан гэдгээ дурджээ. Энэ нь Линусын үндсэн ажлын станц биш ч тэрээр уг платформыг цөмийн ажилд тохирох эсэхийг шалгаж, гартаа хөнгөн зөөврийн компьютертэй явж байхдаа цөмийн хувилбар гаргах боломжтой эсэхийг шалгах зорилгоор ашигласан. Өмнө нь олон жилийн өмнө Линус Apple-ийн тоног төхөөрөмжийг хөгжүүлэхэд ашиглаж байсан туршлагатай - тэрээр нэг удаа ppc970 CPU дээр суурилсан компьютер болон Macbook Air зөөврийн компьютер ашиглаж байсан.

Шинэ хувилбарт 16401 хөгжүүлэгчийн 2190 засвар орсон (сүүлийн хувилбарт 16206 хөгжүүлэгчийн 2127 засвар хийгдсэн), засварын хэмжээ 90 MB (өөрчлөлтөд 13847 файл нөлөөлж, 1149456 мөр код нэмэгдсэн, 349177 мөр устгагдсан). 39-д оруулсан бүх өөрчлөлтийн 5.19 орчим хувь нь төхөөрөмжийн драйверуудтай, ойролцоогоор 21 хувь нь техник хангамжийн архитектурт хамаарах кодыг шинэчлэхтэй, 11 хувь нь сүлжээний стектэй, 4 хувь нь файлын системтэй, 3 хувь нь холбоотой байдаг. дотоод цөмийн дэд системүүдтэй холбоотой.

Цөм 5.19 дахь гол шинэчлэлүүд:

  • Дискний дэд систем, I/O болон файлын системүүд
    • Зөвхөн уншигдах хуваалтууд дээр ашиглах зориулалттай EROFS (Enhanced Read-Only File System) файлын системийг өгөгдлийг кэш хийх боломжийг олгодог fscache дэд системийг ашиглахаар хөрвүүлэв. Энэхүү өөрчлөлт нь EROFS-д суурилсан зурагнаас олон тооны савыг хөөргөдөг системийн ажиллагааг эрс сайжруулсан.
    • EROFS-ийг оновчтой болгоход ашигладаг fscache дэд системд эрэлттэй унших горим нэмэгдсэн. Шинэ горим нь орон нутгийн системд байрлах FS зургуудаас унших кэшийг зохион байгуулах боломжийг танд олгоно. Сүлжээний файлын системээр дамжуулж буй өгөгдлийг локал файлын системд кэшлэхэд чиглэгддэг анхны үйл ажиллагааны горимоос ялгаатай нь "хүсэлтээр" горим нь өгөгдлийг татаж авах, кэш рүү бичих функцийг тусад нь шилжүүлдэг. хэрэглэгчийн орон зайд ажиллаж байгаа арын процесс.
    • XFS нь i-node-д олон тэрбум өргөтгөсөн шинж чанаруудыг хадгалах боломжийг олгодог. Нэг файлын өргөтгөлийн дээд хэмжээг 4 тэрбумаас 247 хүртэл нэмэгдүүлсэн. Хэд хэдэн өргөтгөсөн файлын атрибутуудыг нэг дор атомаар шинэчлэх горимыг хэрэгжүүлсэн.
    • Btrfs файлын систем нь цоожтой ажиллах ажлыг оновчтой болгосон бөгөөд энэ нь nowait горимд шууд бичих үед гүйцэтгэлийг ойролцоогоор 7% нэмэгдүүлэх боломжийг олгосон. NOCOW горим дахь үйлдлийн гүйцэтгэл (бичих дээр хуулбарлахгүйгээр) ойролцоогоор 3% -иар нэмэгддэг. "Илгээх" командыг ажиллуулах үед хуудасны кэш дэх ачаалал багассан. Дэд хуудасны хамгийн бага хэмжээг 64К-аас 4К болгон бууруулсан (цөм хуудаснаас бага дэд хуудсыг ашиглаж болно). Радикс модыг ашиглахаас XArrays алгоритм руу шилжсэн.
    • Хүсэлтэд хариу өгөхөө больсон үйлчлүүлэгчийн тохируулсан түгжих төлөвийн хадгалалтыг өргөтгөх горимыг NFS серверт нэмсэн. Шинэ горим нь өөр үйлчлүүлэгч өрсөлдөгчийн түгжээг хүсээгүй тохиолдолд түгжээг цэвэрлэх ажлыг нэг өдөр хүртэл хойшлуулах боломжийг олгоно. Хэвийн горимд үйлчлүүлэгч хариу өгөхөө больсны дараа 90 секундын дараа хаалт арилдаг.
    • Fanotify FS дахь үйл явдлыг хянах дэд систем нь FAN_MARK_EVICTABLE тугийг хэрэгжүүлдэг бөгөөд үүний тусламжтайгаар та кэш дэх зорилтот i-зангилааг тогтоохыг идэвхгүй болгож болно, жишээлбэл, дэд салбаруудыг кэшэд бэхлэхгүйгээр үл тоомсорлож болно.
    • FAT32 файлын системийн драйвер нь файлын талаар өргөтгөсөн мэдээллийг буцаадаг stat()-ын илүү үр ашигтай, ажиллагаатай хувилбарыг хэрэгжүүлснээр statx системийн дуудлагаар дамжуулан файл үүсгэх хугацааны талаарх мэдээллийг авах дэмжлэгийг нэмсэн.
    • Салбар тус бүрээр дараалсан цэвэрлэгээний оронд "dirsync" горим идэвхжсэн үед хэсэг секторуудыг нэгэн зэрэг цэвэрлэх боломжийг олгохын тулд exFAT драйверт ихээхэн оновчлол хийсэн. Оновчлолын дараа блоклох хүсэлтийн тоог бууруулснаар SD карт дээр олон тооны лавлах үүсгэх гүйцэтгэл нь кластерийн хэмжээнээс хамаарч 73-85% -иар нэмэгдсэн.
    • Цөм нь ntfs3 драйверын анхны засвар шинэчлэлтийг агуулдаг. Өнгөрсөн 3-р сард ntfs5.15 нь XNUMX цөмд орсон тул драйвер нь шинэчлэгдээгүй, хөгжүүлэгчидтэй харилцах харилцаа тасарсан ч одоо хөгжүүлэгчид өөрчлөлтийг дахин нийтлэх болсон. Санал болгож буй засварууд нь санах ойн алдагдал, эвдрэлд хүргэдэг алдааг арилгаж, xfstests-ийн гүйцэтгэлтэй холбоотой асуудлуудыг шийдэж, ашиглагдаагүй кодыг цэвэрлэж, үсгийн алдааг зассан.
    • OverlayFS-ийн хувьд холбогдсон файлын системийн хэрэглэгчийн ID-г зураглах боломжийг хэрэгжүүлсэн бөгөөд энэ нь холбогдсон гадаад хуваалт дээрх тодорхой хэрэглэгчийн файлуудыг одоогийн системийн өөр хэрэглэгчтэй тааруулахад ашиглагддаг.
  • Санах ой болон системийн үйлчилгээ
    • MIPS болон RISC-V-тэй төстэй шинэ RISC ISA-г хэрэгжүүлдэг Loongson 3 5000 процессоруудад хэрэглэгддэг LoongArch зааварчилгааны архитектурт анхны дэмжлэг нэмсэн. LoongArch архитектур нь 32 бит (LA32R), энгийн 32 бит (LA32S) болон 64 бит (LA64) гэсэн гурван төрлийн хувилбартай.
    • 5.1 хувилбар дээр хуучирсан a.out гүйцэтгэгдэх файлын форматыг дэмжих кодыг устгасан. a.out форматыг Линукс системүүд дээр удаан хугацаагаар хэрэглэхээ больсон ба a.out файл үүсгэхийг Linux-ийн анхдагч тохиргоонуудын орчин үеийн хэрэгслүүд дэмждэггүй. a.out файлын дуудагчийг хэрэглэгчийн орон зайд бүхэлд нь хэрэгжүүлэх боломжтой.
    • X86-д зориулсан ачаалах сонголтуудыг дэмжихээ больсон: nosp, nosmap, nosmep, noexec болон noclflush).
    • Дэмжлэггүй удаан байсан хуучирсан CPU h8300 архитектурыг (Renesas H8/300) дэмжихээ больсон.
    • Атомын командыг гүйцэтгэх үед өгөгдөл нь CPU-ийн кэшийн хоёр шугамыг дайран өнгөрдөг тул санах ойд жигдрээгүй өгөгдөлд хандах үед үүсдэг хуваагдлын түгжээг ("хуваах түгжээ") илрүүлэхэд хариу үйлдэл үзүүлэхтэй холбоотой өргөтгөсөн боломжууд. Ийм бөглөрөл нь гүйцэтгэлийн мэдэгдэхүйц бууралтад хүргэдэг. Хэрэв өмнө нь цөм нь блоклоход хүргэсэн үйл явцын талаарх мэдээлэл бүхий анхааруулга өгдөг байсан бол одоо системийн бусад хэсгүүдийн гүйцэтгэлийг хадгалахын тулд асуудалтай процесс улам удаашрах болно.
    • Intel процессоруудад хэрэгжсэн IFS (In-Field Scan) механизмын дэмжлэгийг нэмсэн бөгөөд энэ нь алдаа засах код (ECC) эсвэл паритет бит дээр үндэслэн стандарт хэрэгслээр илрээгүй асуудлуудыг тодорхойлох боломжтой CPU-ийн бага түвшний оношлогооны тестийг явуулах боломжийг танд олгоно. . Гүйцэтгэсэн туршилтууд нь микрокодын шинэчлэлттэй адилаар бүтээгдсэн, татаж авах боломжтой програм хангамжийн хэлбэрээр хийгдсэн. Туршилтын үр дүнг sysfs-ээр дамжуулан авах боломжтой.
    • Цөмд bootconfig файлыг оруулах боломжийг нэмсэн бөгөөд энэ нь тушаалын мөрийн сонголтуудаас гадна тохиргооны файлаар дамжуулан цөмийн параметрүүдийг тодорхойлох боломжийг олгодог. Оруулсан нь 'CONFIG_BOOT_CONFIG_EMBED_FILE="/PATH/TO/BOOTCONFIG/FILE"' угсралтын сонголтыг ашиглан хийгддэг. Өмнө нь bootconfig-ийг initrd зурагт хавсаргаж тодорхойлдог байсан. Цөмд нэгтгэх нь bootconfig-г initrd-гүй тохиргоонд ашиглах боломжийг олгодог.
    • Zstandard алгоритмыг ашиглан шахсан програмыг татаж авах боломжийг хэрэгжүүлсэн. sysfs-д /sys/class/firmware/* хяналтын файлуудын багц нэмэгдсэн нь хэрэглэгчийн орон зайгаас програм хангамжийг ачаалах боломжийг танд олгоно.
    • io_uring асинхрон I/O интерфэйс нь IORING_RECVSEND_POLL_FIRST гэсэн шинэ тугийг санал болгодог бөгөөд үүнийг тохируулсны дараа эхлээд санал асуулга ашиглан боловсруулахаар сүлжээний үйлдлийг илгээдэг бөгөөд энэ нь үйлдлийг тодорхой сааталтайгаар боловсруулах боломжтой тохиолдолд нөөцийг хэмнэх боломжтой юм. io_uring нь мөн socket() системийн дуудлагын дэмжлэгийг нэмж, файлын тодорхойлогчдын удирдлагыг хялбарчлах шинэ тугуудыг санал болгож, accept() дуудлагад хэд хэдэн холболтыг зэрэг хүлээн авах "олон удаагийн" горимыг нэмж, NVMe дамжуулах үйлдлүүдийг нэмсэн. төхөөрөмж рүү шууд команд өгнө.
    • Xtensa архитектур нь цөм доторх уралдааны нөхцөл байдлыг динамикаар илрүүлэх зорилготой KCSAN (Цөмийн зэрэгцээ ариутгагч) дибаг хийх хэрэгсэлд дэмжлэг үзүүлдэг. Мөн унтах горим болон туслах процессоруудын дэмжлэгийг нэмсэн.
    • M68k архитектурын хувьд (Motorola 68000) Android Goldfish эмулятор дээр суурилсан виртуал машин (платформ симулятор) хэрэгжсэн.
    • AArch64 архитектурын хувьд Armv9-A SME (Scalable Matrix Extension) өргөтгөлүүдийн дэмжлэгийг хэрэгжүүлсэн.
    • eBPF дэд систем нь газрын зургийн бүтцэд бичсэн заагчийг хадгалах боломжийг олгодог бөгөөд динамик заагчийг дэмждэг.
    • memory.reclaim файлыг ашиглан хэрэглэгчийн зайны хяналтыг дэмждэг шинэ идэвхтэй санах ойг сэргээх механизмыг санал болгож байна. Заасан файлд дугаар бичих нь бүлэгтэй холбоотой олонлогоос харгалзах байтыг гаргахыг оролдох болно.
    • Zswap механизмыг ашиглан солилцооны хэсэг дэх өгөгдлийг шахах үед санах ойн ашиглалтын нарийвчлал сайжирсан.
    • RISC-V архитектурын хувьд 32 битийн систем дээр 64 битийн гүйцэтгэгдэх файлуудыг ажиллуулах дэмжлэг үзүүлж, санах ойн хуудсуудад хязгаарлалттай шинж чанаруудыг холбох горим нэмэгдсэн (жишээлбэл, кэшийг идэвхгүй болгох), kexec_file_load() функцийг хэрэгжүүлсэн. .
    • 32 битийн Armv4T болон Armv5 системүүдийн дэмжлэгийг хэрэгжүүлэх нь янз бүрийн ARM системүүдэд тохиромжтой бүх нийтийн олон платформ цөмийн бүтцэд ашиглахад зориулагдсан болно.
  • Виртуалчлал ба аюулгүй байдал
    • EFI дэд систем нь нууц мэдээллийг хост системд задруулахгүйгээр зочны систем рүү нууцаар дамжуулах боломжийг хэрэгжүүлдэг. Мэдээллийг securityfs дахь security/coco лавлахаар дамжуулан өгдөг.
    • Түгжихээс хамгаалах горим нь үндсэн хэрэглэгчийн цөмд хандах хандалтыг хязгаарлаж, UEFI Secure Boot-ийн тойрч гарах замыг блоклодог нь цөмийн дибаглагчийг удирдах замаар хамгаалалтыг тойрч гарах боломжийг олгосон цоорхойг арилгасан.
    • Хуурамч санамсаргүй тоо үүсгэгчийн найдвартай байдал, гүйцэтгэлийг сайжруулахад чиглэсэн засварууд багтсан болно.
    • Clang 15 ашиглан бүтээхдээ цөмийн бүтцийг санамсаргүй болгох механизмыг дэмждэг.
    • Бүлэг үйл явцын гадаад орчинтой харилцан үйлчлэлийг хязгаарлах боломжийг олгодог Landlock механизм нь файлын нэрийг өөрчлөх үйлдлүүдийн гүйцэтгэлийг хянах боломжийг олгодог дүрмийг дэмждэг.
    • Тоон гарын үсэг болон хэш ашиглан үйлдлийн системийн бүрэлдэхүүн хэсгүүдийн бүрэн бүтэн байдлыг шалгах зорилготой IMA (Integrity Measurement Architecture) дэд системийг файлын баталгаажуулалтад fs-verity модулийг ашиглах горимд шилжүүлсэн.
    • eBPF дэд системд эрх олгогдоогүй хандалтыг идэвхгүй болгох үйлдлүүдийн логик өөрчлөгдсөн - өмнө нь bpf() системийн дуудлагатай холбоотой бүх командуудыг идэвхгүй болгосон бөгөөд 5.19 хувилбараас эхлэн объект үүсгэхэд хүргэдэггүй командуудад хандах эрхийг үлдээсэн. . Энэ үйлдэл нь BPF програмыг ачаалахад давуу эрхтэй процессыг шаарддаг боловч дараа нь давуу эрхгүй процессууд програмтай харилцаж болно.
    • AMD SEV-SNP (Secure Nested Paging) өргөтгөлийн нэмэлт дэмжлэг нь үүрлэсэн санах ойн хуудасны хүснэгтүүдтэй аюулгүй ажиллах боломжийг олгодог бөгөөд AMD SEV (Secure Encrypted Virtualization)-ийг тойрч гарах боломжийг олгодог AMD EPYC процессорууд дээр "undeSErVed" болон "SEVerity" халдлагаас хамгаалдаг. ) хамгаалах механизм.
    • Виртуал машинуудын шифрлэгдсэн санах ойд нэвтрэх гуравдагч этгээдийн оролдлогыг хориглох боломжийг олгодог Intel TDX (Итгэмжлэгдсэн домэйн өргөтгөлүүд) механизмын дэмжлэгийг нэмсэн.
    • Блок төхөөрөмжийг дуурайхад ашигладаг virtio-blk драйвер нь санал асуулга ашиглан оролт гаралтын дэмжлэгийг нэмсэн бөгөөд энэ нь туршилтын дагуу хоцролтыг 10 орчим хувиар бууруулсан байна.
  • Сүлжээний дэд систем
    • Багц нь өндөр хурдны дотоод мэдээллийн төвийн сүлжээний ажиллагааг оновчтой болгохын тулд TCP багцын хамгийн их пакетийн хэмжээг 4 ГБ хүртэл нэмэгдүүлэх боломжийг олгодог BIG TCP засваруудыг багтаасан болно. 16 битийн толгойн талбарын хэмжээтэй пакетийн хэмжээг ижил төстэй нэмэгдүүлэх нь "jumbo" пакетуудыг хэрэгжүүлэх замаар хийгддэг бөгөөд IP толгойн хэмжээг 0 болгож, бодит хэмжээг тусдаа 32 битээр дамжуулдаг. тусдаа хавсаргасан толгой хэсэгт талбар. Гүйцэтгэлийн туршилтын үед пакетийн хэмжээг 185 КБ болгож тохируулах нь дамжуулах чадварыг 50%-иар нэмэгдүүлж, өгөгдөл дамжуулах хоцролтыг эрс багасгасан.
    • Сүлжээний стект багцуудыг буулгах шалтгааныг (шалтгааны код) хянах хэрэгслүүдийг нэгтгэх ажлыг үргэлжлүүлэв. Шалтгааны код нь пакеттай холбоотой санах ойг суллах үед илгээгдэх бөгөөд толгойн алдаа, rp_filter хууран мэхлэлт илрүүлэх, хүчингүй шалгах нийлбэр, санах ой дутуу, IPSec XFRM дүрмүүд идэвхжсэн, хүчингүй дарааллын дугаар TCP гэх мэт нөхцөл байдлыг зөвшөөрдөг.
    • MPTCP (MultiPath TCP) холболтыг зарим MPTCP функцуудыг ашиглах боломжгүй тохиолдолд ердийн TCP-г ашиглах дэмжлэгийг нэмсэн. MPTCP нь өөр өөр IP хаягуудтай холбоотой өөр өөр сүлжээний интерфэйсээр хэд хэдэн маршрутын дагуу пакетуудыг нэгэн зэрэг хүргэх TCP холболтын ажиллагааг зохион байгуулах TCP протоколын өргөтгөл юм. Хэрэглэгчийн орон зайгаас MPTCP урсгалыг хянахын тулд API нэмсэн.
  • Тоног төхөөрөмж
    • Amdgpu драйвертай холбоотой 420 мянга гаруй мөр кодыг нэмсэн бөгөөд үүнээс 400 мянга орчим мөр нь AMD GPU драйвер дахь ASIC бүртгэлийн өгөгдөлд автоматаар үүсгэгдсэн толгой файлууд бөгөөд өөр 22.5 мянган мөр нь AMD SoC21-ийн анхны дэмжлэгийг хангадаг. AMD GPU-ийн нийт драйверын хэмжээ 4 сая мөр кодын давсан байна. SoC21-ээс гадна AMD драйвер нь SMU 13.x (Системийн удирдлагын нэгж), USB-C болон GPUVM-ийн шинэчилсэн дэмжлэгийг агуулсан бөгөөд RDNA3 (RX 7000) болон CDNA (AMD Instinct)-ийн дараагийн үеийг дэмжихэд бэлэн байна. платформууд.
    • i915 драйвер (Intel) нь эрчим хүчний менежменттэй холбоотой өргөтгөсөн боломжуудтай. Зөөврийн компьютерт ашигладаг Intel DG2 (Arc Alchemist) GPU-ийн таниулбаруудыг нэмж, Intel Raptor Lake-P (RPL-P) платформд анхан шатны дэмжлэг үзүүлж, Arctic Sound-M график картуудын талаарх мэдээллийг нэмсэн, тооцоолох хөдөлгүүрт ABI-г нэвтрүүлсэн. DG2 картууд нь Tile4 форматыг дэмждэг; Хасвелл микроархитектур дээр суурилсан системүүдийн хувьд DisplayPort HDR дэмжлэгийг хэрэгжүүлдэг.
    • Nouveau драйвер нь drm_gem_plane_helper_prepare_fb зохицуулагчийг ашиглахад шилжсэн; зарим бүтэц, хувьсагчдад статик санах ойн хуваарилалтыг ашигласан. Nouveau-д NVIDIA нээлттэй эхийн цөмийн модулиудыг ашиглах тухайд өнөөг хүртэл хийж байгаа ажил нь алдааг олж илрүүлэх, арилгах явдал юм. Ирээдүйд хэвлэгдсэн програм хангамжийг драйверын ажиллагааг сайжруулахад ашиглахаар төлөвлөж байна.
    • M1 чип дээр суурилсан Apple-ийн компьютерт ашигладаг NVMe хянагчийн драйверийг нэмсэн.

Үүний зэрэгцээ Латин Америкийн Чөлөөт Програм хангамжийн Сан нь бүрэн үнэгүй цөмийн 5.19 хувилбарыг бий болгосон - Linux-libre 5.19-gnu, програм хангамжийн элементүүд болон үнэгүй бүрэлдэхүүн хэсгүүд эсвэл кодын хэсгүүдийг агуулсан драйверуудаас цэвэрлэсэн бөгөөд хамрах хүрээ нь үйлдвэрлэгчээр хязгаарлагддаг. Шинэ хувилбар нь pureLiFi X/XL/XC болон TI AMx3 Wkup-M3 IPC-ийн драйверуудыг цэвэрлэдэг. Silicon Labs WFX, AMD amdgpu, Qualcomm WCNSS Peripheral Image Loader, Realtek Bluetooth, Mellanox Spectrum, Marvell WiFi-Ex, Intel AVS, IFS, pu3-imgu драйверууд болон дэд системүүдэд шинэчлэгдсэн blob цэвэрлэх код. Qualcomm AArch64 төхөөрөмжийн модны файлуудын боловсруулалтыг хэрэгжүүлсэн. Шинэ Sound Open Firmware бүрэлдэхүүн хэсгийн нэршлийн схемд дэмжлэг нэмсэн. Цөмөөс хасагдсан ATM Ambassador драйверыг цэвэрлэхээ больсон. HDCP болон Mellanox Core дахь blob цэвэрлэх менежментийг тусдаа kconfig хаягууд руу шилжүүлсэн.

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

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