FreeBSD Q2019 XNUMX Progresraporto

eldonita raporto pri la disvolviĝo de la projekto FreeBSD de aprilo ĝis junio 2019. Inter la ŝanĝoj ni povas noti:

  • Ĝeneralaj kaj ĉieaj aferoj
    • La Core-teamo decidis establi laborgrupon por esplori la eblecon movi fontkodon de la centralizita Subversion fontkontrolsistemo al la malcentralizita Git-sistemo.
    • Faris fuztestadon de la FreeBSD-kerno uzante la sistemon syzkaller kaj kelkaj identigitaj eraroj estis korektitaj. Aldonita tavolo por fuziga testado de bibliotekoj por kongruo kun 32-bita medio sur sistemoj kun 64-bita kerno. La kapablo ruli syzkaller en bhyve-bazitaj virtualaj maŝinoj estis efektivigita. En la sekva etapo, estas planite vastigi la kovradon de sistema voka testado, uzi LLVM-malpurigilon por kontroli la kernon, uzi netdump por ŝpari kern-rubaĵojn dum kraŝoj dum fuzz-testado, ktp.
    • Laboro komenciĝis pri ĝisdatigo de la zlib-efektivigo ĉe la kernnivelo. Por kerna aliro al zlib-kodo, la dosierujo contrib/zlib estis renomita al sys/contrib/zlib, kaj la crc.h-kapa dosiero ankaŭ estis renomita por eviti konflikton kun zlib/crc.h. Purigis heredan kodon kiu dependis de zlib kaj ŝveligi. Poste, estas planite provizi la kapablon konstrui la kernon samtempe kun la malnova kaj nova zlib por la laŭpaŝa translokigo al la nova versio de funkcioj kiuj uzas kunpremadon;
    • La Linukso-media emula infrastrukturo (Linuxulator) estis ĝisdatigita. Pliigita subteno por Linukso-sencimigaj iloj kiel ekzemple la strace ilo. La pakaĵo linux-c7-strace estis aldonita al la havenoj, kiuj povas esti uzataj por spuri Linuksajn plenumeblajn dosierojn anstataŭ la normaj truss kaj ktrace-utiloj, kiuj ankoraŭ ne povas deĉifri kelkajn Linuksajn specifajn flagojn kaj strukturojn. Krome, la pako linux-ltp kun realigeblaj Linukso Test Project estis aldonita kaj kongruaj problemoj kun ruligeblaj ligitaj kun novaj versioj de glibc estis solvitaj;
    • La efektivigo de prokrastitaj malvalidaj operacioj en la pmap-mekanismo estis transdonita al la uzo de vosta prilaborado-algoritmo, kiu funkcias sen seruroj, kio ebligis solvi skaleblajn problemojn kiam oni faras grandan nombron da paralelaj malmapaj operacioj;
    • La mekanismo por bloki vnode dum la ekzekuto de sistemaj vokoj de la familio execve() estis ŝanĝita, kio ebligis atingi pliigitan efikecon dum samtempe ekzekuto de execve() por la sama dosiero (ekzemple, kiam oni plenumas asemblajn operaciojn kun paraleligo. de la lanĉo de la kompililo);
  • Sekureco
    • La bhyve-hiperviziero daŭre plibonigas subtenon por Viva migrado de gastaj medioj de unu gastiganto al alia kaj la funkcion Konservi/Restarigi, kiu ebligas al vi frostigi la gastsistemon, konservante la staton al dosiero, kaj poste rekomenci ekzekuton.
    • Per la uzo de la libvdsk-biblioteko, bhyve aldonis subtenon por diskobildoj en la formato QCOW2. Postulas instaladon por funkcii
      speciale modifita versio de bhyve, kiu estis konvertita por uzi dosieroperaciajn traktilojn bazitajn sur libvdsk. Dum la raporta periodo, libvdsk ankaŭ faris laboron por simpligi la integriĝon de subteno por novaj formatoj, plibonigis legadon kaj skriban rendimenton, kaj aldonis subtenon por Copy-On-Write. El la ceteraj taskoj, la integriĝo de libvdsk en la ĉefa strukturo de bhyve estas notita;

    • Sistemo por kolekti trafikinformojn estis aldonita al la havenoj
      Maltrail, kiu permesas krei kaptilojn por malicaj retaj petoj (IP-oj kaj domajnoj de nigraj listoj estas kontrolitaj) kaj sendi informojn pri detektita agado al centralizita servilo por posta blokado aŭ analizo de atakprovoj;

    • Platformoj estis aldonitaj al la havenoj por detekti atakojn, analizi protokolojn kaj monitori dosierintegrecon Wazuh (forko de Ossec kun subteno por integriĝo kun ELK-Stako);
  • Reta subsistemo
    • La ena ŝoforo estis ĝisdatigita por subteni la duan generacion de retaj adaptiloj ENAv2 (Elastic Network Adapter) uzataj en la infrastrukturo Elastic Compute Cloud (EC2) por organizi komunikadon inter EC2-nodoj je rapidoj de ĝis 25 Gb/s. NETMAP-subteno estis aldonita al la ena ŝoforo.
    • FreeBSD HEAD adoptas novan MMC/SD-stakon, bazitan sur la kadro CAM kaj ebligante vin konekti aparatojn kun interfaco SDIO (Secure Digital I/O). Ekzemple, SDIO estas uzata en WiFi kaj Bluetooth-moduloj por multaj tabuloj, kiel la Raspberry Pi 3. La nova stako ankaŭ permesas la CAM-interfacon esti uzata por sendi SD-komandojn de aplikoj en uzantspaco, kio ebligas krei aparaton. ŝoforoj kiuj funkcias ĉe la uzantnivelo. Laboro komenciĝis pri kreado de ŝoforoj por Broadcom sendrataj blatoj funkciigantaj en FullMAC-reĝimo (sur la blatflanko ĝi funkcias ŝajnon de sia propra operaciumo kun efektivigoj de sia sendrata stako 802.11);
    • Laboro okazas por efektivigi NFSv4.2 (RFC-7862) por FreeBSD. La nova versio de NFS aldonas subtenon por la funkcioj posix_fadvise, posix_fallocate, modoj SEEKHOLE/SEEKDATA en lseek, kaj la funkciadon de loka kopiado de partoj de dosiero sur la servilo (sen translokigo al la kliento).

      FreeBSD nuntempe disponigas bazan subtenon por la LayoutError, IOAdvise, Allocate kaj Kopiaj operacioj. Restas nur efektivigi la Seek-operacion necesan por uzi lseek(SEEKHOLE/SEEKDATA) kun NFS. Subteno de NFSv4.2 estas planita por FreeBSD 13;

  • Stokado kaj dosiersistemoj
    • La projekto por reverki la ŝoforon por la subsistemo FUSE (Dosiersistemo en USErspace), kiu permesas krei efektivigojn de dosiersistemoj en uzantspaco, preskaŭ finiĝas. La origine provizita pelilo estas malmoderna kaj enhavas multajn cimojn. Kiel parto de la ŝoforo moderniga projekto, subteno por la FUSE 7.23 protokolo estis efektivigita (antaŭe versio 7.8, publikigita antaŭ 11 jaroj estis subtenata), kodo estis aldonita por kontroli alirrajtojn ĉe la kerno flanko ("-o default_permissions"), vokoj al VOP_MKNOD, VOP_BMAP kaj VOP_ADVLOCK estis aldonitaj, la kapablo interrompi FUSE-operaciojn, aldonis subtenon por nenomitaj pipoj kaj uniksaj ingoj en fusefs, la kapablo uzi kqueue por /dev/fuse, permesis ĝisdatigi muntajn parametrojn per "mount -u", aldonis subtenon. por eksporti fusefs per NFS, efektivigis RLIMIT_FSIZE kontadon, aldonis FOPEN_KEEP_CACHE-flagojn kaj FUSE_ASYNC_READ, signifaj agado-optimumigoj estis faritaj kaj konservado de organizo estis plibonigita;
    • Subteno por la operacio BIO_DELETE estis aldonita al la interŝanĝa paginarkodo, kiu ebligas al vi uzi la TRIM-komandon kiam vi forigas blokojn de SSD-diskoj por pliigi ilian funkcidaŭron.
  • Aparataro subteno
    • Laboro daŭre efektivigas subtenon por ARM64 SoC Broadcom BCM5871X kun ARMv8 Cortex-A57-procesoroj, celitaj al uzo en enkursigiloj, enirejoj kaj retstokado. Dum la raporta periodo, subteno por internaj kaj eksteraj iProc PCIe-busoj estis plibonigita, subteno por BNXT Ethernet estis aldonita, kaj laboro estas survoja por uzi la enkonstruitan kriptan motoron por akceli IPsec. Integriĝo de la kodo en la branĉo HEAD estas atendita en la dua duono de la jaro;
    • Laboro komenciĝis pri subteno por la 64-bita SoC NXP LS1046A bazita sur la ARMv8 Cortex-A72-procesoro kun integra retpaka proceso-akcelmotoro, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 kaj USB 3.0. Subteno por la baza platformo (multi-uzanta SMP) kaj SATA 3.0 jam estis efektivigita. Subteno por USB 3.0, SD/MMC kaj I2C estas evoluanta. La planoj inkluzivas subtenon por Ethernet, GPIO kaj QSPI. Finiĝo de laboro kaj inkludo en la branĉo HEAD estas atendataj en la 4-a kvarono de 2019.
    • Ĝisdatigitaj mlx5en kaj mlx5ib-ŝoforoj por Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex], kaj ConnectX-6 [Dx] Ethernet kaj InfiniBand-adaptiloj. Aldonita subteno por Mellanox Socket Direct (ConnectX-6) adaptiloj, permesante trairon de ĝis 200Gb/s sur la buso PCIe Gen 3.0. Por plurkernaj blatoj BlueField, subteno por la ŝoforo RShim estis aldonita. La pako mstflint kun aro da diagnozaj iloj por Mellanox-adaptiloj estis aldonita al la havenoj;
  • Aplikoj kaj havena sistemo
    • Grafikaj stakkomponentoj estis ĝisdatigitaj. La ŝoforo drm.ko (Direct Rendering Manager) estis portita de la Linukso 5.0-kerno. Ĉi tiu pelilo estas konsiderita eksperimenta kaj estis aldonita al la arbo de havenoj kiel graphics/drm-devel-kmod. Ĉar la ŝoforo uzas la ĝisdatigitan Linuksan KPI-kadron por esti kongrua kun la Linukso-kerno DRM API, FreeBSD CURRENT estas postulata por funkcii. La vboxvideo.ko drm-ŝoforo por la VirtualBox virtuala GPU ankaŭ estis adaptita de Linukso. Mesa pako estis ĝisdatigita por liberigi 18.3.2 kaj ŝanĝis por uzi LLVM de la haveno devel/llvm80 anstataŭ devel/llvm60.
    • La arbo de havenoj de FreeBSD superis 37000 havenojn, la nombro da nefermitaj PRoj restas ĉe 2146. Dum la raporta periodo, 7837 ŝanĝoj estis faritaj de 172 programistoj. Tri novaj partoprenantoj ricevis kommit-rajtojn. Inter la signifaj versio-ĝisdatigoj en la havenoj estas: MySQL 5.7, Python 3.6, Ruby 2.5, Samba 4.8, Julia 1.0, Firefox 68.0, Chromium 75.0.3770.100. Ĉiuj Go-havenoj estis konvertitaj por uzi la flagon "USES=go". Aldonita "USES=cabal" flago al la pakaĵmanaĝero Cabal uzata por Haskell-kodo. Strikta staka protektoreĝimo estas ebligita. La defaŭlta versio de Python estas 3.6 anstataŭ 2.7.
    • La util-eldono estis preta nsysctl 1.0, kiu ofertas analogon al /sbin/sysctl kiu uzas libxo por eligo kaj provizi vastigitan aron da opcioj. Nsysctl povas esti uzata por vide monitori la staton de sysctl-valoroj kaj prezenti informojn pri objektoj en strukturita formo. Eligo en XML, JSON kaj HTML-formatoj eblas;

fonto: opennet.ru

Aldoni komenton