FreeBSD 2019 оны XNUMX-р улирлын явцын тайлан

Нийтэлсэн 2019 оны XNUMX-р сараас XNUMX-р сар хүртэл FreeBSD төслийн хөгжлийн талаарх тайлан. Өөрчлөлтүүдийн дунд бид дараахь зүйлийг тэмдэглэж болно.

  • Ерөнхий болон системийн асуудлууд
    • Үндсэн баг эх кодыг төвлөрсөн Subversion эхийн хяналтын системээс төвлөрсөн бус Гит систем рүү шилжүүлэх боломжийг судлах ажлын хэсэг байгуулахаар шийджээ.
    • Системийг ашиглан FreeBSD цөмд fuzz тест хийсэн syzkaller илэрсэн хэд хэдэн алдааг зассан. 32 битийн цөмтэй систем дээрх 64 битийн орчинтой нийцтэй байхын тулд номын сангуудыг бүдэгрүүлэх тест хийх давхаргыг нэмсэн. bhyve дээр суурилсан виртуал машинуудад syzkaller ажиллуулах чадварыг хэрэгжүүлсэн. Дараагийн шатанд системийн дуудлагын тестийн хамрах хүрээг өргөжүүлэх, цөмийг шалгахдаа LLVM ариутгагчийг ашиглах, fuzzing тестийн үеэр эвдэрсэн үед цөмийн хаягдал хадгалахын тулд netdump ашиглах гэх мэтээр төлөвлөж байна.
    • Цөмийн түвшинд zlib хэрэгжилтийг шинэчлэх ажил эхэлсэн. Zlib код руу цөмд хандахын тулд contrib/zlib лавлахын нэрийг sys/contrib/zlib болгон өөрчилсөн бөгөөд zlib/crc.h-тэй зөрчилдөхөөс зайлсхийхийн тулд crc.h толгой файлын нэрийг мөн өөрчилсөн. Zlib болон inflate-аас хамааралтай хуучин кодыг цэвэрлэв. Дараа нь шахалтыг ашигладаг функцүүдийн шинэ хувилбар руу аажмаар шилжүүлэхийн тулд хуучин болон шинэ zlib-тэй нэгэн зэрэг цөмийг бүтээх боломжийг олгохоор төлөвлөж байна;
    • Линуксийн орчны эмуляцийн дэд бүтэц (Linuxulator) шинэчлэгдсэн. strace хэрэгсэл зэрэг Линукс дибаг хийх хэрэгслүүдийн дэмжлэг нэмэгдсэн. Линукс-д зориулсан зарим туг болон бүтцийг тайлж чадахгүй байгаа стандарт truss болон ktrace хэрэгслүүдийн оронд Линуксийн ажиллах боломжтой файлуудыг мөрдөхөд ашиглаж болох linux-c7-strace багцыг портуудад нэмсэн. Нэмж дурдахад, Linux Test Project-ийн гүйцэтгэх файлуудтай linux-ltp багцыг нэмж, glibc-ийн шинэ хувилбаруудтай холбоотой гүйцэтгэх файлуудтай нийцтэй байдлын асуудлыг шийдсэн;
    • pmap механизм дахь хоцрогдсон хүчингүй болгох үйлдлүүдийн хэрэгжилтийг түгжээгүй ажилладаг дараалал боловсруулах алгоритмын хэрэглээнд шилжүүлсэн нь олон тооны зэрэгцээ буулгах үйлдлийг гүйцэтгэх үед өргөтгөх чадварын асуудлыг шийдвэрлэх боломжтой болсон;
    • Execve() гэр бүлийн системийн дуудлагыг гүйцэтгэх явцад vnode-ийг хаах механизм өөрчлөгдсөн бөгөөд энэ нь нэг файлд execve()-г нэгэн зэрэг гүйцэтгэх үед (жишээлбэл, параллелжүүлэлт бүхий угсрах ажиллагааг гүйцэтгэх үед) үр ашгийг нэмэгдүүлэх боломжтой болсон. хөрвүүлэгчийг эхлүүлэх);
  • Аюулгүй байдал
    • Bhyve гипервизор нь зочны орчныг нэг хостоос нөгөө хост руу Live migration болон Save/Serie функцийг дэмждэг хэвээр байгаа бөгөөд энэ нь зочны системийг царцаах, төлөвийг файлд хадгалах, дараа нь гүйцэтгэлийг үргэлжлүүлэх боломжийг олгодог.
    • Libvdsk номын санг ашигласнаар bhyve нь QCOW2 форматтай дискний дүрсийг дэмждэг болсон. Ажиллахын тулд суурилуулалтыг шаарддаг
      тусгайлан өөрчилсөн bhyve-ийн хувилбар бөгөөд libvdsk дээр суурилсан файлын үйл ажиллагааны зохицуулагчийг ашиглахаар хөрвүүлсэн. Тайлангийн хугацаанд libvdsk нь шинэ форматын дэмжлэгийг нэгтгэх ажлыг хялбаршуулж, унших, бичих гүйцэтгэлийг сайжруулж, хуулбарлах, бичихэд нэмэлт дэмжлэг үзүүлсэн. Үлдсэн ажлуудаас libvdsk-ийг bhyve-ийн үндсэн бүтцэд нэгтгэхийг тэмдэглэв;

    • Портуудад замын хөдөлгөөний мэдээлэл цуглуулах системийг нэмсэн
      Малтрейл, энэ нь танд хортой сүлжээний хүсэлтэд урхи үүсгэх (хар жагсаалтаас IP болон домэйныг шалгадаг) болон халдлагын оролдлогыг дараа нь хаах эсвэл дүн шинжилгээ хийх зорилгоор илрүүлсэн үйл ажиллагааны талаарх мэдээллийг төвлөрсөн сервер рүү илгээх боломжийг олгодог;

    • Халдлага илрүүлэх, бүртгэлд дүн шинжилгээ хийх, файлын бүрэн бүтэн байдлыг хянах платформуудыг портуудад нэмсэн. Вазух (интеграцчлалын дэмжлэгтэй Оссекийн салаа ELK-Stack);
  • Сүлжээний дэд систем
    • Ena драйвер нь EC2 зангилааны хооронд 2 Гб/с хүртэл хурдтай харилцаа холбоог зохион байгуулахын тулд Elastic Compute Cloud (EC2) дэд бүтцэд ашиглагддаг ENAv25 (Уян сүлжээний адаптер) сүлжээний адаптеруудын хоёр дахь үеийг дэмжих зорилгоор шинэчлэгдсэн. NETMAP дэмжлэгийг ena драйверт нэмсэн.
    • FreeBSD HEAD нь CAM систем дээр суурилсан шинэ MMC/SD стекийг ашигладаг бөгөөд SDIO (Secure Digital I/O) интерфэйстэй төхөөрөмжүүдийг холбох боломжийг танд олгоно. Жишээлбэл, SDIO нь Raspberry Pi 3 зэрэг олон самбарт зориулсан WiFi болон Bluetooth модулиудад ашиглагддаг. Шинэ стек нь CAM интерфэйсийг хэрэглэгчийн орон зайд байгаа програмуудаас SD командыг илгээхэд ашиглах боломжийг олгодог бөгөөд энэ нь төхөөрөмж үүсгэх боломжтой болгодог. хэрэглэгчийн түвшинд ажилладаг драйверууд. FullMAC горимд ажилладаг Broadcom утасгүй чипүүдэд зориулсан драйверуудыг бий болгох ажил эхэлсэн (чип талдаа энэ нь 802.11 утасгүй стекийн хэрэгжилттэй өөрийн үйлдлийн системийг ажиллуулдаг);
    • FreeBSD-д зориулсан NFSv4.2 (RFC-7862)-г хэрэгжүүлэх ажил хийгдэж байна. NFS-ийн шинэ хувилбар нь posix_fadvise, posix_fallocate функцууд, lseek дахь SEEKHOLE/SEEKDATA горимууд болон сервер дээрх файлын хэсгүүдийг локал хуулбарлах ажиллагааг (үйлчлүүлэгч рүү шилжүүлэхгүйгээр) дэмждэг.

      FreeBSD нь одоогоор LayoutError, IOAdvise, Хуваарилах, Хуулах үйлдлүүдэд үндсэн дэмжлэг үзүүлж байна. NFS-тэй lseek(SEEKHOLE/SEEKDATA)-г ашиглахад шаардагдах Seek үйлдлийг хэрэгжүүлэх л үлдлээ. FreeBSD 4.2-д NFSv13 дэмжлэг үзүүлэхээр төлөвлөж байна;

  • Хадгалах болон файлын системүүд
    • Хэрэглэгчийн орон зайд файлын системийн хэрэгжилтийг бий болгох боломжийг олгодог FUSE (USERspace дахь файлын систем) дэд системийн драйверийг дахин боловсруулах төсөл дуусч байна. Анх нийлүүлсэн драйвер нь хуучирсан бөгөөд олон алдаатай. Драйверыг шинэчлэх төслийн хүрээнд FUSE 7.23 протоколыг дэмжсэн (өмнө нь 7.8 жилийн өмнө гарсан 11 хувилбарыг дэмждэг байсан), цөмийн тал дахь хандалтын эрхийг шалгах кодыг нэмсэн (“-o default_permissions”), VOP_MKNOD, VOP_BMAP болон VOP_ADVLOCK нэмэгдсэн, FUSE үйлдлийг тасалдуулах, нэргүй хоолой болон гал хамгаалагч дахь unix залгууруудад нэмэлт дэмжлэг, /dev/fuse-д зориулсан kqueue ашиглах боломж, "mount -u"-ээр холбох параметрүүдийг шинэчлэх боломжийг олгосон, нэмэлт дэмжлэг NFS-ээр дамжуулан гал хамгаалагчийг экспортлохын тулд RLIMIT_FSIZE нягтлан бодох бүртгэлийг нэвтрүүлж, FOPEN_KEEP_CACHE тугууд болон FUSE_ASYNC_READ нэмсэн, гүйцэтгэлийг мэдэгдэхүйц оновчтой болгож, кэш зохион байгуулалтыг сайжруулсан;
    • BIO_DELETE үйлдлийн дэмжлэгийг своп пейжерийн кодонд нэмсэн бөгөөд энэ нь SSD хөтчүүдээс блокуудыг устгахдаа TRIM командыг ашиглах боломжийг олгодог бөгөөд тэдгээрийн ашиглалтын хугацааг уртасгах боломжтой.
  • Техник хангамжийн дэмжлэг
    • Чиглүүлэгч, гарц, сүлжээний санд ашиглахад чиглэсэн ARMv64 Cortex-A5871 процессор бүхий ARM8 SoC Broadcom BCM57X-ийн дэмжлэгийг хэрэгжүүлэх ажил үргэлжилж байна. Тайлангийн хугацаанд дотоод болон гадаад iProc PCIe автобусны дэмжлэг сайжирч, BNXT Ethernet-ийн дэмжлэг нэмэгдэн, IPsec-ийг хурдасгахын тулд суурилуулсан крипто хөдөлгүүрийг ашиглах ажил хийгдэж байна. Кодыг HEAD салбартай нэгтгэх ажлыг оны хоёрдугаар хагаст хийхээр төлөвлөж байна;
    • Сүлжээний пакет боловсруулах нэгдсэн хурдатгалын хөдөлгүүр, 64 Gb Ethernet, PCIe 1046, SATA 8, USB 72 бүхий ARMv10 Cortex-A3.0 процессор дээр суурилсан 3.0 битийн SoC NXP LS3.0A-г дэмжих ажил эхэлсэн. Үндсэн платформ (олон хэрэглэгчийн SMP) болон SATA 3.0-ийн дэмжлэг аль хэдийн хэрэгжсэн. USB 3.0, SD/MMC болон I2C-ийн дэмжлэгийг хөгжүүлж байна. Төлөвлөгөөнд Ethernet, GPIO болон QSPI-ийн дэмжлэг орно. 4 оны 2019-р улиралд ажил дуусч ТЭРГҮҮН-ийн салбарт хамрагдах төлөвтэй байна.
    • Mellanox ConnectX-5 [Lx], ConnectX-5 [Ex], ConnectX-4 [Dx] Ethernet болон InfiniBand адаптеруудад зориулсан mlx5en болон mlx6ib драйверуудыг шинэчилсэн. Mellanox Socket Direct (ConnectX-6) адаптеруудад зориулсан нэмэлт дэмжлэг нь PCIe Gen 200 автобусанд 3.0 Гб/с хүртэл дамжуулах боломжийг олгодог. Олон цөмт BlueField чипүүдийн хувьд RShim драйверын дэмжлэг нэмэгдсэн. Mellanox адаптеруудад зориулсан оношлогооны хэрэгслүүд бүхий mstflint багцыг портуудад нэмсэн;
  • Програм ба порт систем
    • График стекийн бүрэлдэхүүн хэсгүүд шинэчлэгдсэн. drm.ko (Direct Rendering Manager) драйверийг Linux 5.0 цөмөөс зөөвөрлөсөн. Энэ драйвер нь туршилтын гэж тооцогддог бөгөөд портын модонд график/drm-devel-kmod хэлбэрээр нэмэгдсэн. Драйвер нь Linux цөмийн DRM API-тай нийцэхийн тулд шинэчлэгдсэн Linux KPI хүрээг ашигладаг тул FreeBSD CURRENT-г ажиллуулах шаардлагатай. VirtualBox виртуал GPU-д зориулсан vboxvideo.ko drm драйверийг мөн Линуксээс зөөвөрлөсөн. Mesa багцыг 18.3.2 хувилбар болгон шинэчилж, devel/llvm80-ын оронд devel/llvm60 портоос LLVM ашиглахаар сольсон.
    • FreeBSD портын мод 37000 портыг давсан бөгөөд хаагдсангүй PR-ийн тоо 2146 хэвээр байна. Тайлангийн хугацаанд 7837 хөгжүүлэгчээс 172 өөрчлөлт хийсэн. Гурван шинэ оролцогч комиссын эрхийг авсан. Портууд дахь чухал хувилбаруудын шинэчлэлтүүдийн дунд: MySQL 5.7, Python 3.6, Ruby 2.5, Samba 4.8, Julia 1.0, Firefox 68.0, Chromium 75.0.3770.100. Бүх Go портуудыг "USES=go" гэсэн тугийг ашиглахаар хөрвүүлсэн. Хаскелл кодонд ашигладаг Cabal багц менежерт "USES=cabal" гэсэн тугийг нэмсэн. Стек хамгаалах хатуу горим идэвхжсэн. Анхдагч Python хувилбар нь 3.6 биш 2.7 байна.
    • Хэрэглээний хувилбарыг бэлтгэсэн nsysctl 1.0, ашигладаг /sbin/sysctl-ийн аналогийг санал болгодог libxo гаралт болон өргөтгөсөн багц сонголтуудыг хангах. Nsysctl-ийг sysctl утгуудын төлөвийг нүдээр хянах, объектын мэдээллийг бүтэцтэй хэлбэрээр үзүүлэхэд ашиглаж болно. XML, JSON, HTML форматаар гаралт хийх боломжтой;

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

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