FreeBSD Q2019 XNUMX Izvještaj o napretku

objavljeno izvještaj o razvoju FreeBSD projekta od aprila do juna 2019. Među promjenama možemo primijetiti:

  • Opća i sistemska pitanja
    • Glavni tim je odlučio da osnuje radnu grupu koja će istražiti mogućnost premeštanja izvornog koda sa centralizovanog Subverzionog sistema za kontrolu izvora na decentralizovani Git sistem.
    • Sprovedeno fuzz testiranje FreeBSD kernela koristeći sistem syzkaller i ispravljen je niz identifikovanih grešaka. Dodan sloj za fuzzing testiranje biblioteka za kompatibilnost sa 32-bitnim okruženjem na sistemima sa 64-bitnim kernelom. Implementirana je mogućnost pokretanja syzkallera u virtuelnim mašinama baziranim na bhyve. U sljedećoj fazi planirano je proširenje pokrivenosti testiranjem sistemskih poziva, korištenje LLVM sanitizer-a za provjeru kernela, korištenje netdump-a za spremanje dumpova kernela tokom rušenja tokom fuzzing testiranja itd.
    • Počeo je rad na ažuriranju zlib implementacije na nivou kernela. Za pristup kernelu zlib kodu, direktorij contrib/zlib je preimenovan u sys/contrib/zlib, a datoteka zaglavlja crc.h je također preimenovana kako bi se izbjegao sukob sa zlib/crc.h. Očišćeni naslijeđeni kod koji je ovisio o zlib i inflate. Zatim je planirano da se obezbedi mogućnost izgradnje kernela istovremeno sa starim i novim zlib-om za postepeni prelazak na novu verziju funkcija koje koriste kompresiju;
    • Infrastruktura emulacije Linux okruženja (Linuxulator) je ažurirana. Povećana podrška za Linux alate za otklanjanje grešaka kao što je pomoćni program strace. Portovima je dodat paket linux-c7-strace koji se može koristiti za praćenje Linux izvršnih datoteka umjesto standardnih uslužnih programa truss i ktrace, koji još ne mogu dekodirati neke zastavice i strukture specifične za Linux. Osim toga, dodat je linux-ltp paket sa izvršnim datotekama Linux Test Project i riješeni su problemi kompatibilnosti s izvršnim datotekama povezanim s novim verzijama glibc-a;
    • Implementacija odloženih operacija nevaljanja u pmap mehanizmu prebačena je na korištenje algoritma za obradu reda čekanja koji radi bez zaključavanja, što je omogućilo rješavanje problema skalabilnosti pri izvođenju velikog broja paralelnih operacija uklanjanja mape;
    • Me pokretanja kompajlera);
  • Sigurnost
    • Hipervizor bhyve nastavlja da poboljšava podršku za Live migraciju gostujućih okruženja sa jednog hosta na drugi i funkciju Save/Restore, koja vam omogućava da zamrznete gostujući sistem, sačuvate stanje u fajlu, a zatim nastavite sa izvršavanjem.
    • Kroz korištenje biblioteke libvdsk, bhyve je dodao podršku za slike diska u formatu QCOW2. Za rad je potrebna instalacija
      posebno modificirana verzija bhyve, koja je konvertovana da koristi rukovaoce operacijama na bazi libvdsk-a. Tokom perioda izveštavanja, libvdsk je takođe radio na pojednostavljenju integracije podrške za nove formate, poboljšanim performansama čitanja i pisanja i dodao podršku za Copy-On-Write. Od preostalih zadataka, primećuje se integracija libvdsk-a u glavnu strukturu bhyve-a;

    • Lukama je dodat sistem za prikupljanje saobraćajnih informacija
      Maltrail, koji vam omogućava da kreirate zamke za zlonamerne mrežne zahteve (proveravaju se IP-ovi i domeni sa crnih lista) i šalje informacije o otkrivenoj aktivnosti centralizovanom serveru za naknadno blokiranje ili analizu pokušaja napada;

    • Portovima su dodane platforme za otkrivanje napada, analizu dnevnika i praćenje integriteta fajlova Wazuh (fork of Ossec sa podrškom za integraciju sa ELK-Stack);
  • Mrežni podsistem
    • Ena drajver je ažuriran kako bi podržao drugu generaciju ENAv2 (Elastic Network Adapter) mrežnih adaptera koji se koriste u infrastrukturi Elastic Compute Cloud (EC2) za organizaciju komunikacije između EC2 čvorova pri brzinama do 25 Gb/s. NETMAP podrška je dodata ena drajveru.
    • FreeBSD HEAD usvaja novi MMC/SD stek, zasnovan na CAM okviru i omogućava vam povezivanje uređaja sa SDIO (Secure Digital I/O) interfejsom. Na primjer, SDIO se koristi u WiFi i Bluetooth modulima za mnoge ploče, kao što je Raspberry Pi 3. Novi stek također omogućava korištenje CAM sučelja za slanje SD komandi iz aplikacija u korisničkom prostoru, što omogućava kreiranje uređaja drajveri koji rade na nivou korisnika. Počeo je rad na kreiranju drajvera za Broadcom bežične čipove koji rade u FullMAC režimu (na strani čipa pokreće privid sopstvenog operativnog sistema sa implementacijom svog 802.11 bežičnog steka);
    • U toku je rad na implementaciji NFSv4.2 (RFC-7862) za FreeBSD. Nova verzija NFS-a dodaje podršku za funkcije posix_fadvise, posix_fallocate, SEEKHOLE/SEEKDATA modove u lseek-u i operaciju lokalnog kopiranja dijelova datoteke na serveru (bez prijenosa na klijenta).

      FreeBSD trenutno pruža osnovnu podršku za operacije LayoutError, IOAdvise, Allocate i Copy. Sve što ostaje je implementirati operaciju traženja koja je potrebna za korištenje lseek(SEEKHOLE/SEEKDATA) sa NFS-om. Planirana je podrška za NFSv4.2 za FreeBSD 13;

  • Skladištenje i sistemi datoteka
    • Projekat prerade drajvera za podsistem FUSE (File system in USErspace) koji omogućava kreiranje implementacija sistema datoteka u korisničkom prostoru je pri kraju. Originalno isporučeni drajver je zastario i sadrži mnogo grešaka. Kao dio projekta modernizacije drajvera, implementirana je podrška za protokol FUSE 7.23 (prethodna verzija 7.8, objavljena prije 11 godina bila je podržana), dodat je kod za provjeru prava pristupa na strani kernela (“-o default_permissions”), pozivi na Dodani su VOP_MKNOD, VOP_BMAP i VOP_ADVLOCK, mogućnost prekidanja FUSE operacija, dodata podrška za neimenovane cijevi i unix utičnice u fusefovima, mogućnost korištenja kqueue za /dev/fuse, dozvoljeno ažuriranje parametara montiranja preko "mount -u", dodata podrška za izvoz fusefova preko NFS-a, implementirano računovodstvo RLIMIT_FSIZE, dodane oznake FOPEN_KEEP_CACHE i FUSE_ASYNC_READ, napravljene su značajne optimizacije performansi i poboljšana organizacija keširanja;
    • Podrška za operaciju BIO_DELETE dodana je kodu swap pejdžera, što vam omogućava da koristite naredbu TRIM kada uklanjate blokove sa SSD diskova kako biste produžili njihov vijek trajanja.
  • Hardverska podrška
    • Nastavlja se rad na implementaciji podrške za ARM64 SoC Broadcom BCM5871X sa ARMv8 Cortex-A57 procesorima, koji imaju za cilj upotrebu u ruterima, gatewayima i mrežnim pohranama. Tokom izvještajnog perioda poboljšana je podrška za interne i eksterne iProc PCIe sabirnice, dodata je podrška za BNXT Ethernet, a radi se na korištenju ugrađenog kripto motora za ubrzanje IPsec-a. Integracija koda u HEAD granu se očekuje u drugoj polovini godine;
    • Počeli su radovi na podršci za 64-bitni SoC NXP LS1046A baziran na ARMv8 Cortex-A72 procesoru sa integrisanim motorom za ubrzanje obrade mrežnih paketa, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 i USB 3.0. Podrška za osnovnu platformu (multi-user SMP) i SATA 3.0 je već implementirana. Podrška za USB 3.0, SD/MMC i I2C je u razvoju. Planovi uključuju podršku za Ethernet, GPIO i QSPI. Završetak radova i uključivanje u HEAD filijalu očekuje se u 4. kvartalu 2019. godine.
    • Ažurirani drajveri mlx5en i mlx5ib za Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] i ConnectX-6 [Dx] Ethernet i InfiniBand adaptere. Dodata podrška za Mellanox Socket Direct (ConnectX-6) adaptere, omogućavajući protok do 200Gb/s na PCIe Gen 3.0 magistrali. Za BlueField čipove sa više jezgara, dodata je podrška za RShim drajver. Portovima je dodat paket mstflint sa skupom dijagnostičkih uslužnih programa za Mellanox adaptere;
  • Aplikacije i sistem portova
    • Komponente grafičkog steka su ažurirane. Drm.ko (Direct Rendering Manager) drajver je prenet sa Linux 5.0 kernela. Ovaj drajver se smatra eksperimentalnim i dodat je stablu portova kao graphics/drm-devel-kmod. Pošto drajver koristi ažurirani Linux KPI okvir da bi bio kompatibilan sa DRM API-jem jezgra Linuxa, potreban je FreeBSD CURRENT za pokretanje. Vboxvideo.ko drm drajver za VirtualBox virtuelni GPU je takođe prenet sa Linuxa. Mesa paket je ažuriran na izdanje 18.3.2 i prebačen na korištenje LLVM sa porta devel/llvm80 umjesto devel/llvm60.
    • FreeBSD stablo portova je premašilo 37000 portova, broj nezatvorenih PR-ova je ostao na 2146. Tokom izvještajnog perioda napravljeno je 7837 promjena od 172 programera. Tri nova učesnika su dobila prava počinioca. Među značajnim ažuriranjima verzija na portovima su: MySQL 5.7, Python 3.6, Ruby 2.5, Samba 4.8, Julia 1.0, Firefox 68.0, Chromium 75.0.3770.100. Svi Go portovi su konvertovani da koriste oznaku "USES=go". Dodata "USES=cabal" zastavica u menadžer paketa Cabal koji se koristi za Haskell kod. Omogućen je strogi režim zaštite steka. Zadana verzija Pythona je 3.6 umjesto 2.7.
    • Uslužno izdanje je pripremljeno nsysctl 1.0, koji nudi analogni /sbin/sysctl koji koristi libxo za izlaz i pružanje proširenog skupa opcija. Nsysctl se može koristiti za vizualno praćenje stanja sysctl vrijednosti i predstavljanje informacija o objektima u strukturiranom obliku. Moguć je izlaz u XML, JSON i HTML formatima;

izvor: opennet.ru

Dodajte komentar