FreeBSD Q2019 XNUMX eduaruanne

avaldatud aruanne FreeBSD projekti arengu kohta 2019. aasta aprillist juunini. Muudatuste hulgas võime märkida:

  • Üldised ja süsteemsed probleemid
    • Põhimeeskond otsustas moodustada töörühma, et uurida võimalust viia lähtekood tsentraliseeritud Subversioni lähtekoodi juhtimissüsteemist detsentraliseeritud Git-süsteemi.
    • Viis läbi FreeBSD kerneli fuzz-testi, kasutades süsteemi syzkaller ja mitmed tuvastatud vead parandati. Lisatud on kiht 32-bitise kerneliga süsteemides 64-bitise keskkonnaga ühilduvuse kontrollimiseks. Rakendatud on võimalus käivitada syzkaller bhyve-põhistes virtuaalmasinates. Järgmises etapis on plaanis laiendada süsteemikutsete testimise ulatust, kasutada tuuma kontrollimiseks LLVM-i puhastusvahendit, kasutada netdump'i kerneli dumpide salvestamiseks fuzzing-testimise ajal esinevate krahhide ajal jne.
    • Töö zlib-i juurutamise uuendamisega kerneli tasemel on alanud. Kerneli juurdepääsuks zlib-koodile nimetati kataloog contrib/zlib ümber kataloogiks sys/contrib/zlib ja ka päisefail crc.h nimetati ümber, et vältida konflikti zlib/crc.h-ga. Puhastatud pärandkood, mis sõltus zlib-ist ja paisutamisest. Järgmisena on kavas pakkuda võimalust ehitada kernel samaaegselt vana ja uue zlib-iga, et järk-järgult üle kanda tihendamist kasutavate funktsioonide uude versiooni;
    • Linuxi keskkonna emulatsiooni infrastruktuuri (Linuxulator) on värskendatud. Suurenenud toetus Linuxi silumistööriistadele, nagu utiliit strace. Portidele on lisatud pakett linux-c7-strace, mida saab kasutada Linuxi käivitatavate failide jälgimiseks standardsete trussi ja ktrace utiliitide asemel, mis ei suuda veel dekodeerida mõningaid Linuxi spetsiifilisi lippe ja struktuure. Lisaks on lisatud Linuxi testprojekti käivitatavate failidega pakett linux-ltp ja lahendatud on ühilduvusprobleemid glibc uute versioonidega lingitud käivitatavate failidega;
    • Viivitatud kehtetuks tunnistamise operatsioonide realiseerimine pmap mehhanismis on viidud üle ilma lukkudeta töötava järjekorratöötluse algoritmi kasutamisele, mis on võimaldanud lahendada skaleeritavuse probleeme suure hulga paralleelsete unmap operatsioonide sooritamisel;
    • Vnode blokeerimise mehhanismi execve() perekonna süsteemikutsete täitmisel on muudetud, mis on võimaldanud saavutada suurema efektiivsuse sama faili execve() samaaegsel käivitamisel (näiteks paralleelsusega koosteoperatsioonide sooritamisel kompilaatori käivitamisest);
  • turvalisus
    • Bhyve hypervisor täiustab jätkuvalt külaliskeskkondade reaalajas migratsiooni ühest hostist teise ja funktsiooni Salvesta/Taasta, mis võimaldab külalissüsteemi külmutada, oleku faili salvestada ja seejärel täitmist jätkata.
    • Libvdsk teegi kasutamise kaudu on bhyve'ile lisatud QCOW2-vormingus kettapiltide tugi. Töötamiseks on vaja paigaldust
      spetsiaalselt modifitseeritud versiooni bhyve, mis on teisendatud kasutama libvdsk-l põhinevaid failitoimingute töötlejaid. Aruandeperioodil tegi libvdsk tööd ka uute vormingute toe integreerimise lihtsustamiseks, parandas lugemis- ja kirjutamisjõudlust ning lisas kopeerimise-kirjutamisel tuge. Ülejäänud ülesannetest märgitakse ära libvdski integreerimine bhyve põhistruktuuri;

    • Sadamatesse on lisatud liiklusinfo kogumise süsteem
      Maltrail, mis võimaldab luua pahatahtlike võrgupäringute jaoks lõkse (kontrollitakse mustade nimekirjade IP-sid ja domeene) ning saata teavet tuvastatud tegevuse kohta tsentraliseeritud serverisse rünnakukatsete järgnevaks blokeerimiseks või analüüsimiseks;

    • Portidele on lisatud platvormid rünnakute tuvastamiseks, logide analüüsimiseks ja failide terviklikkuse jälgimiseks Wazuh (Osseci kahvel, mis toetab integreerimist ELK-Stack);
  • Võrgu alamsüsteem
    • Ena draiverit on värskendatud, et toetada teise põlvkonna ENAv2 (Elastne võrguadapter) võrguadapterit, mida kasutatakse Elastic Compute Cloud (EC2) infrastruktuuris, et korraldada EC2 sõlmede vahelist sidet kiirusega kuni 25 Gb/s. Ena draiverile on lisatud NETMAP-i tugi.
    • FreeBSD HEAD võtab kasutusele uue MMC/SD pinu, mis põhineb CAM-raamistikul ja võimaldab ühendada seadmeid SDIO (Secure Digital I/O) liidesega. Näiteks kasutatakse SDIO-d WiFi ja Bluetoothi ​​moodulites paljude plaatide puhul, näiteks Raspberry Pi 3. Uus pinu võimaldab ka CAM-liidese abil saata kasutajaruumis olevatest rakendustest SD-käske, mis võimaldab luua seadmeid. draiverid, mis töötavad kasutaja tasemel. Töö on alanud FullMAC-režiimis töötavate Broadcomi traadita kiipide draiverite loomisega (kiibi poolel töötab see oma operatsioonisüsteemi 802.11 traadita virna rakendustega);
    • Töö NFSv4.2 (RFC-7862) juurutamiseks FreeBSD jaoks käib. NFS-i uus versioon lisab toe funktsioonidele posix_fadvise, posix_fallocate, SEEKHOLE/SEEKDATA režiimidele lseekis ja faili osade kohalikuks kopeerimiseks serveris (ilma kliendile ülekandmiseta).

      FreeBSD pakub praegu põhituge toimingutele LayoutError, IOAdvise, Allocate ja Copy. Jääb üle vaid rakendada lseek(SEEKHOLE/SEEKDATA) NFS-iga kasutamiseks vajalik toiming Seek. FreeBSD 4.2 jaoks on planeeritud NFSv13 tugi;

  • Salvestus- ja failisüsteemid
    • Lõpetamisel on projekt FUSE (File system in USERspace) alamsüsteemi draiveri ümbertöötamiseks, mis võimaldab luua failisüsteemide teostusi kasutajaruumis. Algselt tarnitud draiver on aegunud ja sisaldab palju vigu. Draiveri moderniseerimisprojekti raames rakendati FUSE 7.23 protokolli tugi (varem oli toetatud versioon 7.8, välja antud 11 aastat tagasi), lisati kood kerneli poole juurdepääsuõiguste kontrollimiseks (“-o default_permissions”), kõned Lisati VOP_MKNOD, VOP_BMAP ja VOP_ADVLOCK, FUSE toimingute katkestamise võimalus, lisati tugi nimetutele torudele ja unix-pesadele kaitsmetes, võimalus kasutada /dev/fuse jaoks kqueue, võimaldas uuendada mount -u kaudu ühendamise parameetreid, lisatud tugi kaitsmete eksportimiseks NFS-i kaudu, juurutatud RLIMIT_FSIZE arvestus, lisatud FOPEN_KEEP_CACHE lipud ja FUSE_ASYNC_READ, on tehtud olulisi jõudlust optimeeritud ja vahemällu on täiustatud;
    • Vahetuslehe koodile on lisatud toimingu BIO_DELETE tugi, mis võimaldab SSD-draividelt plokkide eemaldamisel kasutada käsku TRIM, et pikendada nende kasutusiga.
  • Riistvara tugi
    • Jätkub töö ARM64 SoC Broadcom BCM5871X toe juurutamiseks koos ARMv8 Cortex-A57 protsessoritega, mis on mõeldud kasutamiseks ruuterites, lüüsides ja võrgusalvestuses. Aruandeperioodil täiustati sisemiste ja väliste iProc PCIe siinide tuge, lisati BNXT Etherneti tugi ning käimas on töö sisseehitatud krüptomootori kasutamisega IPseci kiirendamiseks. Koodi integreerimine HEAD harusse on oodata aasta teisel poolel;
    • Töö on alanud 64-bitise SoC NXP LS1046A toe kallal, mis põhineb ARMv8 Cortex-A72 protsessoril, millel on integreeritud võrgupakettide töötlemise kiirendusmootor, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 ja USB 3.0. Põhiplatvormi (mitme kasutaja SMP) ja SATA 3.0 tugi on juba juurutatud. USB 3.0, SD/MMC ja I2C tugi on väljatöötamisel. Plaanid hõlmavad Etherneti, GPIO ja QSPI tuge. Tööde lõpetamist ja HEAD-i harusse arvamist oodatakse 4. aasta IV kvartalis.
    • Värskendatud mlx5en ja mlx5ib draiverid Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] ja ConnectX-6 [Dx] Etherneti ja InfiniBand adapterite jaoks. Lisatud Mellanox Socket Direct (ConnectX-6) adapterite tugi, mis võimaldab PCIe Gen 200 siinil läbilaskevõimet kuni 3.0 Gb/s. Mitmetuumaliste BlueFieldi kiipide jaoks on lisatud RShimi draiveri tugi. Portidele on lisatud pakett mstflint koos Mellanoxi adapterite diagnostikautiliitide komplektiga;
  • Rakendused ja pordisüsteem
    • Graafika pinu komponente on värskendatud. Drm.ko (Direct Rendering Manager) draiver on porditud Linuxi 5.0 tuumast. Seda draiverit peetakse eksperimentaalseks ja see on lisatud portide puusse kui graafika/drm-devel-kmod. Kuna draiver kasutab Linuxi kerneli DRM API-ga ühildumiseks värskendatud Linuxi KPI raamistikku, on FreeBSD CURRENT käivitamiseks vajalik. VirtualBoxi virtuaalse GPU jaoks mõeldud vboxvideo.ko drm-draiver on samuti Linuxist porditud. Mesa paketti on värskendatud versioonile 18.3.2 ja devel/llvm80 asemel on lülitatud LLVM-i pordist devel/llvm60.
    • FreeBSD portide puu on ületanud 37000 2146 pordi piiri, sulgemata PR-de arv on endiselt 7837. Aruandeperioodil tehti 172 muudatust 5.7 arendajalt. Kolm uut osalejat said volinikuõigused. Portide olulised versiooniuuendused on järgmised: MySQL 3.6, Python 2.5, Ruby 4.8, Samba 1.0, Julia 68.0, Firefox 75.0.3770.100, Chromium 3.6. Kõik Go pordid on teisendatud kasutama lippu "USES=go". Haskelli koodi jaoks kasutatavale Cabali paketihaldurile lisati lipp "USES=cabal". Range virnakaitserežiim on lubatud. Pythoni vaikeversioon on 2.7 asemel XNUMX.
    • Utiliidi väljaanne on koostatud nsysctl 1.0, mis pakub analoogi failile /sbin/sysctl, mis kasutab libxo väljundiks ja laiendatud valikute pakkumiseks. Nsysctli abil saab visuaalselt jälgida sysctl väärtuste olekut ja esitada teavet objektide kohta struktureeritud kujul. Võimalik on väljund XML-, JSON- ja HTML-vormingus;

Allikas: opennet.ru

Lisa kommentaar