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

Хоёр сарын хөгжлийн дараа Линус Торвалдс танилцуулав цөмийн хувилбар Линуксийн 5.1. Хамгийн онцлох өөрчлөлтүүдийн дунд: асинхрон оролт гаралтын шинэ интерфэйс, NVDIMM-ийг RAM болгон ашиглах чадвар, Nouveau-д хуваалцсан виртуал санах ойг дэмжих, fanotify-ээр дамжуулан маш том файлын системийг масштаблах боломжтой хянах дэмжлэг, Zstd шахалтыг тохируулах чадвар. Btrfs-ийн түвшин, шинэ cpuidle TEO зохицуулагч, 2038 асуудлыг шийдэх системийн дуудлагын хэрэгжилт, initramf-гүй төхөөрөмж-mapper төхөөрөмжөөс ачаалах чадвар, SafeSetID LSM модуль, хосолсон амьд засваруудыг дэмжих.

Үндсэн инноваци:

  • Дискний дэд систем, I/O болон файлын системүүд
    • Асинхрон оролт гаралтын шинэ интерфэйсийг нэвтрүүлсэн - io_uring, энэ нь I/O санал асуулгад дэмжлэг үзүүлж, буфертэй болон буфергүй ажиллах чадвараараа алдартай. Өмнө нь санал болгож буй асинхрон оролт гаралтын механизм "aio" нь буферт оролт гаралтыг дэмждэггүй, зөвхөн O_DIRECT горимд ажиллах боломжтой (буферлэх, кэшийг тойрч гарахгүйгээр), мета өгөгдлийн бэлэн байдлыг хүлээснээс болж түгжигдэх асуудалтай байсныг эргэн санацгаая. санах ойд өгөгдлийг хуулахтай холбоотойгоор их хэмжээний нэмэлт зардал гарсан.

      API дотор
      io_uring хөгжүүлэгчид хуучин aio интерфейсийн дутагдлыг арилгахыг оролдсон. By гүйцэтгэл io_uring нь маш ойрхон байна SPDK мөн санал хураалтыг идэвхжүүлсэн үед libaio-гоос хамаагүй түрүүлж байна. Хэрэглэгчийн орон зайд ажиллаж байгаа эцсийн програмуудад io_uring ашиглах номын сан бэлтгэгдсэн чөлөөлөх, энэ нь цөмийн интерфейс дээр өндөр түвшний хүрээг хангадаг;

    • FS fanotify() дахь үйл явдлыг хянах механизмд нэмсэн суперблок болон бүтцийн өөрчлөлтийн нөхцөл байдлыг хянах дэмжлэг шууд (санлуудыг үүсгэх, устгах, зөөх үйл явдлууд). Үзүүлсэн функцууд нь inotify механизмыг ашиглан маш том файлын системд рекурсив өөрчлөлтийг хянах үед үүсдэг өргөтгөх чадварын асуудлыг шийдвэрлэхэд тусалдаг (өмнө нь шууд өөрчлөлтүүдийг зөвхөн inotify-ээр хянах боломжтой байсан.
      том үүрлэсэн лавлахуудыг рекурсив хянах нөхцөл дэх гүйцэтгэл нь хүссэн зүйлээ орхисон). Одоо ийм хяналтыг fanotify-ээр дамжуулан үр дүнтэй хийж болно;

    • Btrfs файлын систем дээр нэмсэн zstd алгоритмын шахалтын түвшинг тохируулах чадвар бөгөөд үүнийг хурдан боловч үр дүнгүй lz4 болон удаан боловч сайн шахалтын xz хооронд оновчтой тохироо гэж үзэж болно. Өмнө нь zlib ашиглах үед шахалтын түвшинг хэрхэн тохируулах боломжтой байсантай адил zstd-д "-o compress=zstd:level" холбох сонголтыг нэмсэн. Туршилтын явцад хамгийн бага эхний түвшин нь 2.658 MB/s шахалтын хурдаар 438.47 дахин шахалт, задлах хурд 910.51 MB/s, санах ойн зарцуулалт 780 MB, хамгийн дээд түвшин 15 нь 3.126 удаа шахалт үзүүлсэн боловч шахалттай. 37.30 МБ/с хурд, задлах 878.84 МБ/с, санах ойн зарцуулалт 2547 МБ;
    • Нэмсэн initramfs ашиглахгүйгээр төхөөрөмж-mapper төхөөрөмж дээр байрлах файлын системээс ачаалах чадвар. Одоогийн цөмийн хувилбараас эхлэн төхөөрөмж-mapper төхөөрөмжийг ачаалах явцад шууд ашиглаж болно, жишээлбэл, эх файлын системтэй хуваалт болгон ашиглаж болно. Хуваалтыг "dm-mod.create" ачаалах параметрийг ашиглан тохируулсан. Ачаалах зөвшөөрөгдсөн төхөөрөмж-mapper модулиуд нь: "crypt", "саатал", "шугаман", "агшин зуурын гарал үүсэл" болон "verity";
    • F2FS_NOCOW_FL тугийг флаш диск рүү чиглэсэн F2FS файлын системд нэмсэн бөгөөд энэ нь өгөгдсөн файлын бичих дээр хуулбарлах горимыг идэвхгүй болгох боломжийг олгодог;
    • Файлын системийг цөмөөс устгасан Эксофууд, энэ нь OSD (Object-based Storage Device) объектын хадгалалтуудтай ажиллахад тохирсон ext2-ийн хувилбар юм. Ийм объект хадгалах төхөөрөмжүүдийн SCSI протоколын дэмжлэгийг мөн хассан;
  • Виртуалчлал ба аюулгүй байдал
    • Сонгосон процессын зааварчилгааны таамаглалын гүйцэтгэлийг хянахын тулд prctl() дээр PR_SPEC_DISABLE_NOEXEC сонголтыг нэмсэн. Шинэ сонголт нь Specter халдлагад өртөж болзошгүй процессуудын таамаглалын гүйцэтгэлийг сонгон идэвхгүй болгох боломжийг танд олгоно. Түгжээ нь exec();
    • LSM модулийг хэрэгжүүлсэн SafeSetID, энэ нь системийн үйлчилгээнд давуу эрх (CAP_SETUID) нэмэгдүүлэхгүйгээр, үндсэн эрх олж авахгүйгээр хэрэглэгчдийг аюулгүйгээр удирдах боломжийг олгодог. Зөвшөөрөл нь хүчинтэй холболтын цагаан жагсаалтад суурилсан ("UID1:UID2" хэлбэрээр) аюулгүй байдлын дүрмийг тодорхойлох замаар хуваарилагдана;
    • Хамгаалалтын модулиудыг (LSMs) стекээр ачаалахад шаардлагатай доод түвшний өөрчлөлтүүдийг нэмсэн. Аль модулийг ямар дарааллаар ачаалж байгааг хянахын тулд "lsm" цөмийн ачаалах сонголтыг нэвтрүүлсэн;
    • Аудитын дэд системд файлын нэрийн орон зайн дэмжлэг нэмэгдсэн;
    • Өргөтгөсөн санах ойн агуулгын болзошгүй алдагдлыг хаах боломжийг олгодог GCC залгаасын structleak-ийн боломжууд.Стек дээрх лавлагааны хандалтаар кодонд ашиглагдаж буй аливаа хувьсагчийг эхлүүлэх;
  • Сүлжээний дэд систем
    • Сокетуудын хувьд хэрэгжүүлсэн төстэй шинэ сонголт "SO_BINDTOIFINDEX"
      "SO_BINDTODEVICE", гэхдээ интерфэйсийн нэрний оронд сүлжээний интерфейсийн индексийн дугаарыг аргумент болгон авах;

    • Mac80211 стек нь нэг төхөөрөмжид олон BSSID (MAC хаяг) оноох боломжийг нэмсэн. WiFi-ийн гүйцэтгэлийг оновчтой болгох төслийн хүрээнд mac80211 стек нь эфирийн цагийн бүртгэлийг нэмж, олон станцын хооронд цагийг хуваарилах боломжийг нэмж өгсөн (хандах цэгийн горимд ажиллах үед утасгүй станцуудад цагийг жигд хуваарилахын оронд удаашруулах утасгүй станцуудад дамжуулах хугацааг бага хуваарилдаг). станцууд);
    • "Нэмсэн механизм"devlink эрүүл мэнд", энэ нь сүлжээний интерфэйстэй холбоотой асуудал гарсан тохиолдолд мэдэгдэл өгдөг;
  • Санах ой болон системийн үйлчилгээ
    • Хэрэгжүүлсэн PID-г дахин ашиглах боломжийг олгодог аюулгүй дохио дамжуулах. Жишээлбэл, өмнө нь kill гэж дуудаж байх үед дохио илгээсний дараа зорилтот PID процесс дууссаны улмаас чөлөөлөгдөж, өөр процессоор дүүрч, дохио нь өөр процесс руу дамжих нөхцөл байдал үүсч болно. Ийм нөхцөл байдлыг арилгахын тулд шинэ системийн дуудлагыг pidfd_send_signal нэмсэн бөгөөд энэ нь процессын тогтвортой холболтыг хангахын тулд /proc/pid файлын тодорхойлогчдыг ашигладаг. Системийн дуудлагыг боловсруулах явцад PID-г дахин ашигласан ч файлын тодорхойлогч өөрчлөгдөхгүй бөгөөд процесс руу дохио илгээхэд аюулгүй ашиглаж болно;
    • Нэмсэн байнгын санах ойн төхөөрөмжийг ашиглах чадвар (жишээ нь байнгын санах ой NVDIMM) RAM хэлбэрээр. Өнөөг хүртэл цөм нь хадгалах төхөөрөмж гэх мэт төхөөрөмжүүдийг дэмждэг байсан бол одоо тэдгээрийг нэмэлт RAM болгон ашиглаж болно. Энэхүү функц нь гүйцэтгэлийн хоцролтыг тэсвэрлэх хүсэлтэй хэрэглэгчдийн хүсэлд нийцүүлэн хэрэгжсэн бөгөөд dax-д зориулж mmap дээр ажиллаж байгаа хэрэглэгчийн зайны санах ойн хуваарилалтын системийг ашиглахын оронд Linux цөмийн санах ойн удирдлагын API-г ашиглахыг хүсч байна. файл;
    • CPU-ийн сул зогсолтыг зохицуулагчийг нэмсэн (cpuidle, CPU-г хэзээ гүн эрчим хүч хэмнэх горимд оруулахыг шийддэг; горим гүнзгийрэх тусам хэмнэлт их байх болно, гэхдээ горимоос гарахад удаан хугацаа шаардагдана) - TEO (Timer Events Oriented Governor) ). Өнөөг хүртэл эвристикийн хувьд ялгаатай "цэс" ба "шат" гэсэн хоёр cpuidle зохицуулагчийг санал болгосон. "Цэс" зохицуулагч нь эвристик шийдвэр гаргахад бэрхшээлтэй тулгарсан тул үүнийг арилгахын тулд шинэ зохицуулагч бэлтгэхээр шийдсэн. TEO нь "цэс" зохицуулагчийн альтернатив хувилбараар байрладаг бөгөөд эрчим хүчний хэрэглээг ижил түвшинд байлгахын зэрэгцээ илүү өндөр гүйцэтгэлтэй байх боломжийг олгодог.
      Та “cpuidle.governor=teo” ачаалах параметрийг ашиглан шинэ зохицуулагчийг идэвхжүүлж болно;

    • арилгах ажлын хүрээнд 2038 оны асуудлууд, 32 битийн time_t төрлийн халилтаас үүдэлтэй бөгөөд 32 битийн архитектурт 64 битийн цаг тоологч санал болгодог системийн дуудлагуудыг багтаасан болно. Үүний үр дүнд 64 битийн time_t бүтцийг одоо бүх архитектурт ашиглах боломжтой болсон. Үүнтэй төстэй өөрчлөлтүүдийг сонголтуудын сүлжээний дэд системд мөн хэрэгжүүлсэн TIMESTAMP сүлжээний залгуурууд;
    • Цөмд зориулсан халуун нөхөөсний системд (амьд нөхөөс) нэмсэн "Атомоор солих" функц нь нэг функцэд хэд хэдэн өөрчлөлтийг атомаар хэрэгжүүлэхэд зориулагдсан. Энэ функц нь хадгалахад нэлээд хэцүү байдаг хатуу тодорхой дарааллаар амьд засваруудыг үе шаттайгаар хэрэглэх үйл явцын оронд хэд хэдэн өөрчлөлтийг хамарсан хураангуй засваруудыг нэг дор тараах боломжийг олгодог. Өмнө нь дараагийн өөрчлөлт бүр нь сүүлийн өөрчлөлтийн дараах функцийн төлөвт суурилдаг байсан бол одоо нэг анхны төлөвт холбогдсон хэд хэдэн өөрчлөлтийг нэгэн зэрэг түгээх боломжтой болсон (өөрөөр хэлбэл засварлагчид үндсэн цөмтэй харьцуулахад нэг нэгдсэн нөхөөсийг хадгалах боломжтой) бие биенээсээ хамааралтай нөхөөсийн гинжин хэлхээний );
    • зарласан a.out гүйцэтгэгдэх файлын форматыг дэмжээгүй ба
      хасагдсан орхигдсон төлөвт байгаа a.out форматаар үндсэн файлуудыг үүсгэх код. a.out форматыг Линукс системд удаан хугацаагаар ашиглаагүй бөгөөд a.out файлуудыг үүсгэх нь Linux-ийн анхдагч тохиргоонуудын орчин үеийн хэрэгслээр удаан хугацаанд дэмжигдээгүй байна. Нэмж дурдахад, a.out файлын дуудагчийг хэрэглэгчийн орон зайд бүхэлд нь хэрэгжүүлэх боломжтой;

    • Ашиглагдаагүй кодыг тодорхойлох, устгах чадварыг BPF програмын баталгаажуулалтын механизмд нэмсэн. Цөм нь мөн BPF дэд системд зориулсан spinlock дэмжлэг бүхий засваруудыг багтаасан бөгөөд BPF програмын зэрэгцээ гүйцэтгэлийг удирдах нэмэлт боломжийг олгодог;
  • Тоног төхөөрөмж
    • Nouveau жолооч нэмсэн гетероген санах ойн удирдлагын дэмжлэг, CPU болон GPU нийтлэг синхрон санах ойн талбарт хандах боломжийг олгодог. Хуваалцсан виртуал санах ойн систем (SVM, хуваалцсан виртуал санах ой) нь HMM (гетероген санах ойн менежмент) дэд системийн үндсэн дээр хэрэгждэг бөгөөд энэ нь өөрийн санах ойн удирдлагын нэгж (MMU, санах ойн удирдлагын нэгж) бүхий төхөөрөмжүүдийг ашиглах боломжийг олгодог. үндсэн санах ой. Ялангуяа HMM-ийг ашигласнаар та GPU болон CPU-ийн хооронд хуваалцсан хаягийн зайг зохион байгуулж, GPU нь процессын үндсэн санах ойд хандах боломжтой. SVM дэмжлэг одоогоор зөвхөн Паскалийн гэр бүлийн GPU-д идэвхжсэн ч Volta болон Turing GPU-д ч дэмжлэг үзүүлж байна. Түүнээс гадна, Nouveau-д нэмсэн процессын санах ойн хэсгүүдийн GPU санах ой руу шилжих хөдөлгөөнийг хянах шинэ ioctl;
    • GPU Skylake болон түүнээс хойшхи (gen9+) зориулсан Intel DRM драйвер дээр орсон Анхдагч байдлаар, fastboot горим нь ачаалах үед шаардлагагүй горимын өөрчлөлтийг арилгадаг. Нэмсэн новые Coffelake болон Ice Lake бичил архитектурт суурилсан төхөөрөмжийн танигч. Coffelake чипсэнд зориулагдсан нэмсэн GVT дэмжлэг (GPU виртуалчлал). Виртуал GPU-д зориулагдсан хэрэгжүүлсэн VFIO EDID дэмжлэг. MIPI/DSI LCD хавтангийн хувьд нэмсэн ACPI/PMIC элементүүдийн дэмжлэг. Хэрэгжүүлсэн ТВ-ийн шинэ горимууд 1080p30/50/60 ТВ;
    • Vega10/20 BACO GPU-ийн дэмжлэгийг amdgpu драйверт нэмсэн. Vega 10/20 тэжээлийн удирдлага болон Vega 10 хөргөлтийн хяналтын хүснэгтүүдийг хэрэгжүүлсэн. Пикассо GPU-д зориулсан шинэ PCI төхөөрөмжийн танигчийг нэмсэн. Нэмсэн мухардлаас зайлсхийхийн тулд хуваарьт хамаарлыг удирдах интерфейс;
    • Нэмсэн Дэлгэцийн хурдасгуурт зориулсан DRM/KMS драйвер ARM Комеда (Мали 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 аудио платформд зориулсан дэмжлэг нэмэгдсэн;
    • Flash STMicroelectronics FMC2, Amlogic Meson NAND хянагчдад зориулсан дэмжлэг нэмэгдсэн;
    • Habana AI техник хангамжийн системд зориулсан хурдасгуурын дэмжлэг нэмэгдсэн;
    • NXP ENETC гигабит Ethernet хянагч болон MediaTek MT7603E (PCIe) болон MT76x8 утасгүй интерфэйсүүдийн дэмжлэгийг нэмсэн.

Үүний зэрэгцээ Латин Америкийн чөлөөт програм хангамжийн сан үүссэн
сонголт бүрэн үнэгүй цөм 5.1 - Линукс үнэгүй 5.1 gnu, хамрах хүрээг үйлдвэрлэгчээс хязгаарласан чөлөөт бус бүрэлдэхүүн хэсэг эсвэл кодын хэсгүүдийг агуулсан програм хангамж болон драйверын элементүүдээс цэвэрлэсэн. Шинэ хувилбарт mt7603 болон goya драйверуудад blob ачаалахыг идэвхгүй болгосон. Wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk болон touchscreen_dmi драйверууд болон дэд системүүд дэх blob цэвэрлэх кодыг шинэчилсэн. Lantiq xrx200 програм хангамжийн дуудагч дахь blob цэвэрлэгээ цөмөөс хасагдсан тул зогссон.

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

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