FreeBSD 2019 жылғы XNUMX-тоқсанның орындалу барысы туралы есеп

жарияланды 2019 жылдың сәуірінен маусымына дейін FreeBSD жобасының дамуы туралы есеп. Өзгерістердің ішінде мыналарды атап өтуге болады:

  • Жалпы және жүйелі мәселелер
    • Core командасы орталықтандырылған Subversion бастапқы басқару жүйесінен орталықтандырылмаған Git жүйесіне бастапқы кодты жылжыту мүмкіндігін зерттеу үшін жұмыс тобын құру туралы шешім қабылдады.
    • Жүйені пайдалана отырып, FreeBSD ядросының fuzz тестілеуін жүргізді сызкаллер және бірқатар анықталған қателер түзетілді. 32 биттік ядросы бар жүйелерде 64 биттік ортамен үйлесімділік үшін кітапханаларды анық емес тестілеуге арналған қабат қосылды. bhyve негізіндегі виртуалды машиналарда syzkaller іске қосу мүмкіндігі іске асырылды. Келесі кезеңде жүйелік қоңырауларды тестілеуді қамтуды кеңейту, ядроны тексеру үшін LLVM дезинфекциялау құралын пайдалану, fuzzing тестілеу кезінде бұзылулар кезінде ядро ​​​​демптерін сақтау үшін netdump пайдалану және т.б.
    • Ядро деңгейінде zlib енгізуді жаңарту бойынша жұмыс басталды. Zlib кодына ядроға қатынасу үшін contrib/zlib каталогының атауы sys/contrib/zlib болып өзгертілді және zlib/crc.h файлымен қайшылықты болдырмау үшін crc.h тақырып файлының атауы да өзгертілді. zlib және инфляцияға тәуелді бұрынғы код тазартылды. Әрі қарай, қысуды қолданатын функциялардың жаңа нұсқасына біртіндеп көшіру үшін ескі және жаңа zlib-пен бір уақытта ядроны құру мүмкіндігін қамтамасыз ету жоспарлануда;
    • Linux ортасының эмуляциялық инфрақұрылымы (Linuxulator) жаңартылды. strace утилитасы сияқты Linux жөндеу құралдарына қолдаудың артуы. Порттарға linux-c7-strace пакеті қосылды, оны кейбір Linux-арнайы жалаушалар мен құрылымдарды әлі дешифрлай алмайтын стандартты truss және ktrace утилиталарының орнына Linux орындалатын файлдарын қадағалау үшін пайдалануға болады. Оған қоса, Linux Test Project орындалатын файлдары бар linux-ltp бумасы қосылды және glibc жаңа нұсқаларымен байланысты орындалатын файлдармен үйлесімділік мәселелері шешілді;
    • pmap механизмінде кешіктірілген жарамсыздандыру операцияларын орындау құлыптарсыз жұмыс істейтін кезекті өңдеу алгоритмін пайдалануға ауыстырылды, бұл параллельді картадан шығару операцияларының үлкен санын орындау кезінде масштабтау мәселелерін шешуге мүмкіндік берді;
    • execve() тобының жүйелік шақыруларын орындау кезінде vnode блоктау механизмі өзгертілді, бұл бір файл үшін execve() бір уақытта орындаған кезде (мысалы, параллелизациямен құрастыру операцияларын орындау кезінде) жоғары тиімділікке қол жеткізуге мүмкіндік берді. компиляторды іске қосу);
  • Қауіпсіздік
    • bhyve гипервизоры қонақтық орталардың бір хосттан екіншісіне Live көшіруіне қолдау көрсетуді және қонақтық жүйені тоқтатып, күйді файлға сақтауға және одан кейін орындауды жалғастыруға мүмкіндік беретін Сақтау/қалпына келтіру функционалдығын жақсартуды жалғастырады.
    • libvdsk кітапханасын пайдалану арқылы bhyve QCOW2 пішіміндегі диск кескіндерін қолдауды қосты. Жұмыс істеу үшін орнату қажет
      арнайы өзгертілген bhyve нұсқасы, ол libvdsk негізіндегі файл операциясын өңдеушілерді пайдалану үшін түрлендірілді. Есепті кезеңде libvdsk сонымен қатар жаңа пішімдерді қолдауды біріктіруді жеңілдету, оқу және жазу өнімділігін жақсарту және Copy-On-Write қолдауын қосу жұмыстарын жүргізді. Қалған міндеттердің ішінде libvdsk-ті bhyve негізгі құрылымына біріктіру атап өтілді;

    • Порттарға трафик туралы ақпаратты жинау жүйесі қосылды
      Мальтрейл, бұл зиянды желі сұраулары үшін тұзақтарды жасауға (қара тізімдердегі IP және домендер тексеріледі) және шабуыл әрекеттерін кейіннен блоктау немесе талдау үшін анықталған әрекет туралы ақпаратты орталықтандырылған серверге жіберуге мүмкіндік береді;

    • Порттарға шабуылдарды анықтау, журналдарды талдау және файлдың тұтастығын бақылау үшін платформалар қосылды. Вазух (біріктіруге қолдау көрсететін Ossec шанышқысы ELK-стек);
  • Желілік ішкі жүйе
    • ena драйвері EC2 түйіндері арасында 2 Гбит/с жылдамдықпен байланысты ұйымдастыру үшін Elastic Compute Cloud (EC2) инфрақұрылымында пайдаланылатын ENAv25 (Elastic Network Adapter) желілік адаптерлерінің екінші буынын қолдау үшін жаңартылды. NETMAP қолдауы ena драйверіне қосылды.
    • FreeBSD HEAD CAM құрылымына негізделген және құрылғыларды SDIO (Secure Digital I/O) интерфейсімен қосуға мүмкіндік беретін жаңа MMC/SD стегін қабылдайды. Мысалы, 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 операциясын орындау ғана қалады. NFSv4.2 қолдауы FreeBSD 13 үшін жоспарланған;

  • Сақтау және файлдық жүйелер
    • Пайдаланушы кеңістігінде файлдық жүйелерді іске асыруды жасауға мүмкіндік беретін 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 Гб 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 қолдау кіреді. Жұмыстың аяқталуы және HEAD филиалына қосылуы 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 ядросынан тасымалданған. Бұл драйвер эксперименталды болып саналады және порттар тармағына graphics/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 пішімінде шығаруға болады;

Ақпарат көзі: opennet.ru

пікір қалдыру