FreeBSD Q2019 XNUMX edistymisraportti

julkaistu raportti FreeBSD-projektin kehityksestä huhti-kesäkuussa 2019. Muutosten joukossa voimme huomata:

  • Yleiset ja systeemiset ongelmat
    • Core-tiimi päätti perustaa työryhmän tutkimaan mahdollisuutta siirtää lähdekoodia keskitetystä Subversion-lähteenhallintajärjestelmästä hajautettuun Git-järjestelmään.
    • FreeBSD-ytimen fuzz-testaus suoritettiin järjestelmän avulla syzkaller ja useita havaittuja virheitä korjattiin. Lisätty kerros kirjastojen yhteensopivuuden testaamiseen 32-bittisen ympäristön kanssa järjestelmissä, joissa on 64-bittinen ydin. Mahdollisuus ajaa syzkalleria bhyve-pohjaisissa virtuaalikoneissa on otettu käyttöön. Seuraavassa vaiheessa on tarkoitus laajentaa järjestelmäkutsutestauksen kattavuutta, käyttää LLVM-sanitizeriä ytimen tarkistamiseen, käyttää netdumpia ytimen kaatumisten tallentamiseen fuzzing-testauksen kaatuessa jne.
    • Työ zlib-toteutuksen päivittämiseksi ydintasolla on alkanut. Ytimen pääsyä varten zlib-koodiin contrib/zlib-hakemisto nimettiin uudelleen muotoon sys/contrib/zlib, ja myös crc.h-otsikkotiedosto nimettiin uudelleen, jotta vältetään ristiriidat zlib/crc.h:n kanssa. Puhdistettu vanha koodi, joka riippui zlibistä ja täydennyksestä. Seuraavaksi aiotaan tarjota mahdollisuus rakentaa ydin samanaikaisesti vanhan ja uuden zlib:n kanssa, jotta voidaan asteittain siirtää pakkausta käyttävien toimintojen uuteen versioon;
    • Linux-ympäristön emulointiinfrastruktuuri (Linuxulator) on päivitetty. Lisätty tuki Linuxin virheenkorjaustyökaluille, kuten strace-apuohjelmalle. Portteihin on lisätty paketti linux-c7-strace, jolla voidaan jäljittää Linuxin suoritettavat tiedostot tavallisten truss- ja ktrace-apuohjelmien sijaan, jotka eivät vielä pysty purkamaan joitain Linux-kohtaisia ​​lippuja ja rakenteita. Lisäksi linux-ltp-paketti, jossa on Linux Test Project -suoritettavat tiedostot, on lisätty ja yhteensopivuusongelmat glibc:n uusiin versioihin linkitettyjen suoritustiedostojen kanssa on ratkaistu;
    • Viivästettyjen mitätöintitoimintojen toteutus pmap-mekanismissa on siirretty ilman lukkoja toimivan jonokäsittelyalgoritmin käyttöön, mikä on mahdollistanut skaalautuvuusongelmien ratkaisemisen suoritettaessa useita rinnakkaisia ​​unmap-operaatioita;
    • Mekanismia vnode:n estämiseksi execve()-perheen järjestelmäkutsujen suorittamisen aikana on muutettu, mikä on mahdollistanut tehokkuuden lisäämisen, kun execve() suoritetaan samanaikaisesti samalle tiedostolle (esimerkiksi suoritettaessa kokoonpanotoimintoja rinnakkaistoiminnolla kääntäjän käynnistämisestä);
  • Безопасность
    • Bhyve hypervisor parantaa edelleen tukea vierasympäristöjen reaaliaikaiselle siirtämiselle isännästä toiseen ja Tallenna/Palauta-toimintoa, jonka avulla voit jäädyttää vierasjärjestelmän, tallentaa tilan tiedostoon ja jatkaa sitten suorittamista.
    • Libvdsk-kirjaston avulla bhyve on lisännyt tuen levykuville QCOW2-muodossa. Asennus vaaditaan toimiakseen
      erityisesti muokattu bhyven versio, joka on muunnettu käyttämään libvdsk-pohjaisia ​​tiedostotoimintojen käsittelijöitä. Raportointikauden aikana libvdsk teki myös työtä yksinkertaistaakseen uusien muotojen tuen integrointia, parantaakseen luku- ja kirjoitussuorituskykyä sekä lisännyt Copy-On-Write-tukea. Jäljellä olevista tehtävistä mainitaan libvdsk:n integrointi bhyven päärakenteeseen;

    • Satamiin on lisätty järjestelmä liikennetietojen keräämiseksi
      Maltrail, jonka avulla voit luoda ansoja haitallisille verkkopyynnöille (IP-osoitteet ja verkkotunnukset mustilta listoilta tarkistetaan) ja lähettää tietoja havaitusta toiminnasta keskitetylle palvelimelle myöhempää hyökkäysyritysten estämistä tai analysointia varten;

    • Portteihin on lisätty alustat hyökkäysten havaitsemiseen, lokien analysointiin ja tiedostojen eheyden valvontaan Wazuh (Ossecin haarukka, joka tukee integraatiota kanssa ELK-pino);
  • Verkkoalijärjestelmä
    • ena-ohjain on päivitetty tukemaan toisen sukupolven ENAv2-verkkosovittimia (Elastinen verkkosovitin), joita käytetään Elastic Compute Cloud (EC2) -infrastruktuurissa EC2-solmujen välisen tiedonsiirron järjestämiseen jopa 25 Gb/s nopeuksilla. NETMAP-tuki on lisätty ena-ohjaimeen.
    • FreeBSD HEAD ottaa käyttöön uuden MMC/SD-pinon, joka perustuu CAM-kehykseen ja mahdollistaa laitteiden yhdistämisen SDIO-liitännällä (Secure Digital I/O). SDIO:ta käytetään esimerkiksi WiFi- ja Bluetooth-moduuleissa useissa korteissa, kuten Raspberry Pi 3:ssa. Uusi pino mahdollistaa myös CAM-rajapinnan avulla SD-komentojen lähettämisen käyttäjätilassa olevista sovelluksista, mikä mahdollistaa laitteen luomisen. ajurit, jotka toimivat käyttäjätasolla. Työ on alkanut luoda ajureita Broadcomin langattomille siruille, jotka toimivat FullMAC-tilassa (sirupuolella se käyttää omaa käyttöjärjestelmäänsä langattoman 802.11-pinon toteutuksin);
    • NFSv4.2:n (RFC-7862) käyttöönotto FreeBSD:lle on meneillään. Uusi NFS-versio lisää tuen posix_fadvise-, posix_fallocate-funktioille, SEEKHOLE/SEEKDATA-tiloille lseekissä ja tiedoston osien paikalliseen kopioimiseen palvelimella (ilman siirtoa asiakkaalle).

      FreeBSD tarjoaa tällä hetkellä perustuen LayoutError-, IOAdvise-, Alllocate- ja Copy-operaatioille. Jäljelle jää vain toteuttaa Seek-toiminto, joka vaaditaan lseek(SEEKHOLE/SEEKDATA)-toiminnon käyttämiseksi NFS:n kanssa. NFSv4.2-tuki on suunniteltu FreeBSD 13:lle;

  • Tallennus- ja tiedostojärjestelmät
    • Projekti FUSE (File system in USERspace) -alijärjestelmän ajurin uudistamiseksi, joka mahdollistaa tiedostojärjestelmien toteutusten luomisen käyttäjätilassa, on loppusuoralla. Alkuperäinen toimitettu ohjain on vanhentunut ja sisältää monia virheitä. Osana ajurien modernisointiprojektia otettiin käyttöön tuki FUSE 7.23 -protokollalle (tuettu aiempi versio 7.8, julkaistu 11 vuotta sitten), koodi lisättiin ytimen puolen käyttöoikeuksien tarkistamiseksi (“-o default_permissions”), kutsu VOP_MKNOD, VOP_BMAP ja VOP_ADVLOCK lisättiin, mahdollisuus keskeyttää FUSE-toiminnot, lisätty tuki nimeämättömille putkille ja unix-liittimille sulakkeissa, mahdollisuus käyttää kqueue:tä /dev/fuse-tiedostossa, sallittu asennusparametrien päivittäminen "mount -u" -sovelluksella, lisätty tuki. sulakkeiden vientiä varten NFS:n kautta, toteutettu RLIMIT_FSIZE-laskenta, lisätty FOPEN_KEEP_CACHE-liput ja FUSE_ASYNC_READ, merkittäviä suorituskyvyn optimointeja ja välimuistin organisaatiota on parannettu;
    • Swap-hakulaitteen koodiin on lisätty tuki BIO_DELETE-toiminnolle, jonka avulla voit käyttää TRIM-komentoa poistaessasi lohkoja SSD-asemilta niiden käyttöiän pidentämiseksi.
  • Laitteistotuki
    • Työ jatkuu ARM64 SoC Broadcom BCM5871X -tuen toteuttamiseksi ARMv8 Cortex-A57 -prosessoreilla, jotka on tarkoitettu käytettäväksi reitittimissä, yhdyskäytävissä ja verkkotallennustilassa. Raportointikauden aikana parannettiin sisäisten ja ulkoisten iProc PCIe -väylien tukea, lisättiin tuki BNXT Ethernetille ja työskennellään sisäänrakennetun kryptomoottorin käyttämiseksi IPsecin nopeuttamiseksi. Koodin integrointi HEAD-haaraan odotetaan vuoden toisella puoliskolla;
    • Työ on alkanut tukea 64-bittiselle SoC NXP LS1046A:lle, joka perustuu ARMv8 Cortex-A72 -prosessoriin, jossa on integroitu verkkopakettien käsittelyn kiihdytysmoottori, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 ja USB 3.0. Perusalustan (monen käyttäjän SMP) ja SATA 3.0:n tuki on jo otettu käyttöön. USB 3.0-, SD/MMC- ja I2C-tuki on kehitteillä. Suunnitelmiin sisältyy tuki Ethernetille, GPIO:lle ja QSPI:lle. Töiden valmistumisen ja HEAD-toimialaan liittymisen odotetaan valmistuvan vuoden 4 neljännellä neljänneksellä.
    • Päivitetyt mlx5en- ja mlx5ib-ohjaimet Mellanox ConnectX-4 [Lx]-, ConnectX-5 [Ex]- ja ConnectX-6 [Dx] Ethernet- ja InfiniBand-sovittimille. Lisätty tuki Mellanox Socket Direct (ConnectX-6) -sovittimille, mikä mahdollistaa jopa 200 Gb/s suorituskyvyn PCIe Gen 3.0 -väylällä. Moniytimisille BlueField-siruille on lisätty tuki RShim-ohjaimelle. Portteihin on lisätty mstflint-paketti, jossa on sarja diagnostiikkaapuohjelmia Mellanox-sovittimille;
  • Sovellukset ja porttijärjestelmä
    • Grafiikkapinon komponentit on päivitetty. Drm.ko (Direct Rendering Manager) -ohjain on siirretty Linux 5.0 -ytimestä. Tätä ohjainta pidetään kokeellisena ja se on lisätty porttipuuhun nimellä graphics/drm-devel-kmod. Koska ajuri käyttää päivitettyä Linux KPI -kehystä ollakseen yhteensopiva Linux-ytimen DRM API:n kanssa, FreeBSD CURRENT vaaditaan sen suorittamiseen. VirtualBox-virtuaaligrafiikkasuorittimen vboxvideo.ko-dRM-ohjain on myös siirretty Linuxista. Mesa-paketti on päivitetty julkaisuun 18.3.2 ja siirtynyt käyttämään LLVM:ää devel/llvm80-portista devel/llvm60:n sijaan.
    • FreeBSD:n porttipuu on ylittänyt 37000 2146 portin rajan, sulkemattomien PR:iden määrä on edelleen 7837. Raportointikauden aikana tehtiin 172 muutosta 5.7 kehittäjältä. Kolme uutta osallistujaa sai sitoutumisoikeudet. Porttien merkittäviä versiopäivityksiä ovat: MySQL 3.6, Python 2.5, Ruby 4.8, Samba 1.0, Julia 68.0, Firefox 75.0.3770.100, Chromium 3.6. Kaikki Go-portit on muunnettu käyttämään "USES=go" -lippua. Lisätty "USES=cabal" -lippu Cabal-paketinhallintaan, jota käytetään Haskell-koodissa. Tiukka pinosuojaustila on käytössä. Pythonin oletusversio on 2.7 XNUMX:n sijaan.
    • Apuohjelmajulkaisu on valmisteltu nsysctl 1.0, joka tarjoaa analogin /sbin/sysctl:lle, joka käyttää libxo tulostukseen ja laajennetun vaihtoehdon tarjoamiseen. Nsysctl:n avulla voidaan visuaalisesti seurata sysctl-arvojen tilaa ja esittää tietoa objekteista jäsennellyssä muodossa. Tulostus XML-, JSON- ja HTML-muodoissa on mahdollista;

Lähde: opennet.ru

Lisää kommentti