FreeBSD 2019-жылдын II чейрегинин жүрүшү жөнүндө отчет

жарыяланган 2019-жылдын апрелинен июнуна чейин FreeBSD долбоорунун өнүгүшү жөнүндө отчет. Өзгөртүүлөрдүн арасында биз белгилей алабыз:

  • Жалпы жана системалуу маселелер
    • Core командасы борборлоштурулган Subversion булакты башкаруу тутумунан борборлоштурулган Git тутумуна баштапкы кодду көчүрүү мүмкүнчүлүгүн изилдөө үчүн жумушчу топ түзүүнү чечти.
    • Системаны колдонуу менен FreeBSD өзөгүн fuzz тестирлөө өткөрүлдү сызкаллер жана аныкталган бир катар каталар оңдолду. 32 бит ядросу бар системаларда 64 биттик чөйрө менен шайкеш келүү үчүн китепканаларды бүдөмүк тестирлөө үчүн катмар кошулду. Syzkallerди bhyve негизиндеги виртуалдык машиналарда иштетүү мүмкүнчүлүгү ишке ашырылган. Кийинки этапта тутумдук чалууларды тестирлөөнүн камтылышын кеңейтүү, ядрону текшерүү үчүн LLVM дезинфекциялоочу каражатты колдонуу, fuzzing тестирлөө учурунда кыйроолор учурунда ядронун таштандыларын сактоо үчүн netdump колдонуу жана башкалар пландаштырылууда.
    • Ядро деңгээлинде zlib ишке ашырууну жаңылоо боюнча иштер башталды. Zlib кодуна ядронун кирүү мүмкүнчүлүгү үчүн, contrib/zlib каталогунун аталышы sys/contrib/zlib деп өзгөртүлгөн жана zlib/crc.h менен конфликт болбош үчүн crc.h баш файлы да өзгөртүлгөн. zlib жана inflate'ге көз каранды болгон эски код тазаланды. Андан кийин, кысуу колдонулган функциялардын жаңы версиясына акырындык менен өтүү үчүн эски жана жаңы zlib менен бир убакта ядрону куруу мүмкүнчүлүгүн берүү пландаштырылууда;
    • Linux чөйрөсүн эмуляциялоо инфраструктурасы (Linuxulator) жаңыртылды. strace утилитасы сыяктуу Linux мүчүлүштүктөрдү оңдоо куралдарына колдоо көбөйдү. Линукс-c7-strace пакети портторго кошулду, аны стандарттуу truss жана ktrace утилиталарынын ордуна Linux аткарылуучу файлдарына байкоо жүргүзүү үчүн колдонсо болот, ал Linux үчүн айрым желектерди жана структураларды чечмелей албайт. Мындан тышкары, Linux Test Project аткарылуучу файлдары менен linux-ltp пакети кошулду жана glibcтин жаңы версиялары менен байланышкан аткарылуучу файлдар менен шайкештик маселелери чечилди;
    • pmap механизминде кечиктирилген жараксыз кылуу операцияларын ишке ашыруу кулпусуз иштеген кезекти иштетүү алгоритмин колдонууга өткөрүлүп берилди, бул көп сандагы параллелдүү картадан чыгаруу операцияларын аткарууда масштабдуулук маселелерин чечүүгө мүмкүндүк берди;
    • Execve() үй-бүлөсүнүн системалык чалууларын аткарууда vnode бөгөттөө механизми өзгөртүлдү, бул бир эле файл үчүн execve()ди бир эле учурда аткарууда (мисалы, параллелдөө менен монтаждоо операцияларын аткарууда) натыйжалуулукту жогорулатууга мүмкүндүк берди. компиляторду ишке киргизүү);
  • коопсуздук
    • bhyve гипервизору конок чөйрөлөрүнүн бир хосттон экинчисине Live миграциясын колдоону жана конок тутумун тоңдуруп, абалды файлга сактап, андан кийин аткарууну улантууга мүмкүндүк берген Сактоо/Калыбына келтирүү функциясын жакшыртууну улантууда.
    • Libvdsk китепканасын колдонуу аркылуу bhyve QCOW2 форматындагы диск сүрөттөрүн колдоону кошту. Иштөө үчүн орнотууну талап кылат
      атайын өзгөртүлгөн bhyve версиясы, ал libvdsk негизиндеги файл операциясын иштетүүчүлөрдү колдонууга айландырылган. Отчеттук мезгилдин ичинде libvdsk ошондой эле жаңы форматтарды колдоону интеграциялоону жөнөкөйлөтүү боюнча иштерди жүргүздү, окуу жана жазуу көрсөткүчтөрү жакшырды, ошондой эле Copy-On-Write үчүн колдоо кошту. Калган милдеттердин ичинен либвдскти бхйве-нин негизги структурасына кошуу белгиленген;

    • Порттарга трафик маалыматын чогултуу системасы кошулду
      Maltrail, бул зыяндуу тармак суроо-талаптары үчүн тузактарды түзүүгө мүмкүндүк берет (кара тизмедеги IP жана домендер текшерилет) жана кийинчерээк бөгөт коюу же чабуул аракеттерин талдоо үчүн борборлоштурулган серверге аныкталган активдүүлүк жөнүндө маалыматты жөнөтүүгө мүмкүндүк берет;

    • Порттарга чабуулдарды аныктоо, журналдарды талдоо жана файлдын бүтүндүгүн көзөмөлдөө үчүн платформалар кошулду. Wazuh менен интеграцияны колдоо менен (Ossec айрысы ELK-Stack);
  • Тармактык подсистема
    • ena драйвери EC2 түйүндөрүнүн ортосунда 2 Гб/сек ылдамдыкта байланышты уюштуруу үчүн Elastic Compute Cloud (EC2) инфраструктурасында колдонулган ENAv25 (Elastic Network Adapter) тармак адаптерлеринин экинчи муунун колдоо үчүн жаңыртылган. NETMAP колдоосу ena драйверине кошулду.
    • FreeBSD HEAD жаңы MMC/SD стекин кабыл алат, ал CAM алкагына негизделген жана SDIO (Коопсуз Digital I/O) интерфейси менен түзмөктөрдү туташтырууга мүмкүндүк берет. Мисалы, SDIO көптөгөн такталар үчүн WiFi жана Bluetooth модулдарында колдонулат, мисалы Raspberry Pi 3. Жаңы стек ошондой эле 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 операциясын аткаруу гана калды. NFSv4.2 колдоосу FreeBSD 13 үчүн пландаштырылган;

  • Сактоо жана файл системалары
    • Колдонуучу мейкиндигинде файлдык системаларды ишке ашырууну түзүүгө мүмкүндүк берген FUSE (USERspaceдеги файл системасы) подсистемасы үчүн драйверди кайра иштетүү долбоору аяктоо алдында турат. Башында берилген драйвер эскирген жана көптөгөн мүчүлүштүктөрдү камтыйт. Драйверди модернизациялоо долбоорунун алкагында FUSE 7.23 протоколун колдоо ишке ашырылган (мурда 7.8 жыл мурун чыгарылган 11 версиясы колдоого алынган), ядро ​​тарабында кирүү укуктарын текшерүү үчүн код кошулган («-o default_permissions»), VOP_MKNOD, VOP_BMAP жана VOP_ADVLOCK кошулду, FUSE операцияларын үзгүлтүккө учуратуу мүмкүнчүлүгү, аты аталбаган түтүктөр үчүн кошумча колдоо жана fusefsдеги unix розеткалары, /dev/fuse үчүн kqueue колдонуу мүмкүнчүлүгү, "mount -u" аркылуу орнотуу параметрлерин жаңыртууга уруксат берилди, кошумча колдоо NFS аркылуу фюзефтерди экспорттоо үчүн, RLIMIT_FSIZE эсепке алуу ишке ашырылды, FOPEN_KEEP_CACHE желекчелери жана FUSE_ASYNC_READ кошулду, олуттуу аткаруу оптималдаштыруулар жасалды жана кэш уюштуруу жакшыртылды;
    • SSD дисктеринен блокторду алып салууда TRIM буйругун колдонууга мүмкүндүк берүүчү своп пейджер кодуна BIO_DELETE операциясын колдоо алардын иштөө мөөнөтүн көбөйтүү үчүн кошулду.
  • Аппараттык колдоо
    • Маршрутизаторлордо, шлюздарда жана тармактык сактагычта колдонууга багытталган ARMv64 Cortex-A5871 процессорлору менен ARM8 SoC Broadcom BCM57X колдоону ишке ашыруу боюнча иштер улантылууда. Отчеттук мезгилде ички жана тышкы iProc PCIe автобустарын колдоо жакшыртылды, BNXT Ethernet үчүн колдоо кошулду жана IPsecти тездетүү үчүн орнотулган крипто кыймылдаткычын колдонуу боюнча иштер жүргүзүлүүдө. HEAD филиалына коддун интеграциясы жылдын экинчи жарымында күтүлүүдө;
    • ARMv64 Cortex-A1046 процессорунун негизинде 8-бит SoC NXP LS72A колдоо боюнча иш башталды, интегралдык тармак пакеттерин иштетүү ылдамдаткыч кыймылдаткычы, 10 Гб Ethernet, PCIe 3.0, SATA 3.0 жана USB 3.0. Базалык платформаны колдоо (көп колдонуучу 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 драйвери да Linuxтан көчүрүлгөн. Mesa топтому 18.3.2 чыгаруу үчүн жаңыртылган жана devel/llvm80 ордуна devel/llvm60 портунан LLVM колдонууга которулган.
    • FreeBSD порттор дарагы 37000 2146 порттон ашты, жабылбаган PRлардын саны 7837 бойдон калууда. Отчеттук мезгилде 172 иштеп чыгуучудан 5.7 өзгөртүү киргизилген. Үч жаңы катышуучу комиссардын укуктарын алышты. Порттордогу олуттуу версия жаңыртууларынын арасында: MySQL 3.6, Python 2.5, Ruby 4.8, Samba 1.0, Julia 68.0, Firefox 75.0.3770.100, Chromium 3.6. Бардык Go порттору "USES=go" желегин колдонуу үчүн өзгөртүлгөн. Хаскелл коду үчүн колдонулган Cabal пакетинин менеджерине "USES=cabal" желеги кошулду. Катуу стек коргоо режими иштетилген. Python демейки версиясы 2.7 ордуна XNUMX болуп саналат.
    • Пайдалуу релиз даярдалды nsysctl 1.0, колдонгон /sbin/sysctl аналогун сунуштайт libxo чыгаруу жана кеңейтилген варианттарды камсыз кылуу үчүн. Nsysctl sysctl баалуулуктарынын абалын визуалдык көзөмөлдөө жана структураланган формада объекттер боюнча маалыматты көрсөтүү үчүн колдонулушу мүмкүн. XML, JSON жана HTML форматтарында чыгаруу мүмкүн;

Source: opennet.ru

Комментарий кошуу