FreeBSD Ontwikkelingsverslag Q2019 XNUMX

gepubliseer verslag oor die ontwikkeling van die FreeBSD-projek van Julie tot September 2019. Veranderinge sluit in:

  • Algemene en stelselvrae
    • Die kernspan het oor die algemeen die insluiting van BSD-gelisensieerde kode met 'n bykomende patentooreenkoms goedgekeur (BSD+patent), maar die besluit om elke komponent onder hierdie lisensie by die stelsel in te sluit, moet afsonderlik goedgekeur word;
    • Die eerste vergadering van die werkgroep wat geskep is om die migrasie van bronkodes van die gesentraliseerde bronkodebestuurstelsel Subversion na die gedesentraliseerde stelsel Git uit te voer, het plaasgevind. Die bespreking oor die toepaslikheid van migrasie is steeds aan die gang, en baie kwessies moet nog besluit word (byvoorbeeld, hoe om bydraes te hanteer/, of hashes in die huidige git-bewaarplek geregenereer moet word, en hoe om commit-toetsing die beste te implementeer);
    • Van NetBSD oorgedra die KCSAN (Kernel Concurrency Sanitizer) gereedskapstel, wat jou toelaat om die voorkoms van rastoestande tussen kerndrade wat op verskillende SVE's loop, op te spoor;
    • Werk is aan die gang om Clang se ingeboude assembler (IAS) te gebruik in plaas van die assembler van GNU binutils;
    • Die Linux-omgewing-emulasie-infrastruktuur (Linuxulator) is aangepas om op die ARM64-argitektuur te werk. Die "renameat2"-stelseloproep is geïmplementeer. Die strace-hulpmiddel is verbeter om probleme in Linux-uitvoerbare programme wat in Linuxulator loop, te diagnoseer. Vaste ineenstorting by die koppeling van uitvoerbare programme met vars glibc. Poorte met Linux-komponente vir Linuxulator opgedateer na CentOS 7.7;
    • As deel van die Google Summer of Code-program het studente ses projekte suksesvol voltooi: 'n implementering van 'n verenigde (IPv4 / IPv6) ping-nutsding is voorberei, nutsgoed is ontwikkel om firewalls te toets en foute in die kern op te spoor (Kernel sanitizer), 'n mac_ipacl module is voorgestel, en kode is geskryf om virtuele geheue saam te pers en werk is gedoen om die proses van die bou van hawens van plaaslike installasie te skei;
    • 'n Projek om die FreeBSD-kern te fuzz-toets met behulp van die stelsel syzkaller. Gedurende die verslagdoeningstydperk is met behulp van syzkaller meer as tien foute geïdentifiseer en uitgeskakel. Om syzkaller te laat loop in virtuele masjiene gebaseer op bhyve, word 'n aparte bediener toegeken en gebruik
      syzbot kontroleer verskeie FreeBSD-substelsels in die Google-infrastruktuur. Oordrag van inligting oor alle ongelukke na die backtrace.io-diens is georganiseer om hul groepering en ontleding te vereenvoudig;

    • Werk is aan die gang om die implementering van zlib op kernvlak by te werk.
      Die kompressieverwante kode is verskuif van zlib 1.0.4, wat meer as 20 jaar gelede vrygestel is, na die huidige zlib 1.2.11-kodebasis. Die compress-, compress2- en uncompress-funksies is by die kern gevoeg om toegang tot zlib te verenig. Die kode wat die PPP-protokol vanaf die netgraph-substelsel verskaf, is oorgeskakel om die stelselimplementering van zlib te gebruik, in plaas van die oorspronklike uitgawe van hierdie biblioteek. Die substelsels kern_ctf.c, opencryptodflate, geom_uzip, subr_compressor,
      if_mxge, bxe opgedateer en ng_deflate;

    • 'n Nuwe kernkoppelvlak word ontwikkel sysctlinfo, wat jou toelaat om elemente in die sysctl-parameterbasis te vind, verwerk in die vorm van 'n MIB (Bestuursinligtingbasis), en inligting oor voorwerpe na gebruikersruimte oor te dra.
  • sekuriteit
    • Kernmodule ontwikkel mac_ipacl, gebaseer op die TrustedBSD MAC-raamwerk en die implementering van 'n toegangsbeheerstelsel tot netwerkstapelinstellings vir tronkomgewings. Byvoorbeeld, met behulp van mac_ipacl, kan 'n gasheerstelseladministrateur verhoed dat die wortelgebruiker in 'n tronkomgewing IP-adresse of subnetinstellings vir sekere netwerkkoppelvlakke verander of instel. Voorgestelde verpligte toegangsbeheerstelsel dit laat stel lyste van IP-adresse en subnette wat vir Tronk toegelaat word, verbied die installering van sekere IP's en subnette in Tronk, of beperk parameterveranderings slegs vir sekere netwerkkoppelvlakke;
    • Intel het 'n sagtewarestapelpoort aan die projek geskenk TBM 2.0 (Trusted Platform Module) vir interaksie met die veilige rekenaarskyfie, wat gewoonlik gebruik word vir geverifieerde selflaai van firmware en OS selflaaiprogram. Stapelkomponente word verskaf in die vorm van sekuriteit/tpm2-tss, sekuriteit/tpm2-gereedskap en sekuriteit/tpm2-abrmd-poorte. Die tpm2-tss-poort bevat biblioteke vir die gebruik van die TPM2 API, tpm2-tools bied opdragreëlhulpmiddels vir die uitvoering van TPM-bewerkings, en tpm2-abrmd bevat 'n agtergrondproses met die implementering van die TPM Access Broker en Resource Manager-komponente wat multipleks versoek van verskillende TPM-gebruikers op 'n enkele toestel. Benewens geverifieerde selflaai op FreeBSD, kan TPM gebruik word om Strongswan IPsec-, SSH- en TLS-sekuriteit te verbeter deur kriptografiese bewerkings op 'n aparte skyfie uit te voer;
    • Die kern vir die amd64 argitektuur is aangepas om gelaai te word deur gebruik te maak van die W^X (skryf XOR uitvoer) beskermingstegniek, wat impliseer dat geheue bladsye nie gelyktydig beskikbaar kan wees vir skryf en uitvoering nie (die kern kan nou gelaai word deur gebruik te maak van uitvoerbare geheue bladsye waarvoor skryf is gedeaktiveer). Die nuwe kernbeskermingsmetode is ingesluit in die HEAD-tak en sal deel wees van die FreeBSD 13.0- en 12.2-vrystellings;
    • Vir mmap en mprotect stelsel oproepe geïmplementeer die PROT_MAX() makro, wat dit moontlik maak om die stel toegangsbeperkingsvlae (PROT_READ, PROT_WRITE, PROT_EXEC) te bepaal wat geldig is vir verdere veranderinge. Deur PROT_MAX() te gebruik, kan 'n ontwikkelaar die oordrag van 'n geheuearea na die uitvoerbare kategorie verbied of geheue versoek wat nie uitvoering toelaat nie, maar later na uitvoerbaar oorgedra kan word. Byvoorbeeld, 'n geheue-area kan slegs oop wees vir skryf vir die duur van dinamiese koppeling of JIT-kode generering, maar nadat die skryf voltooi is, is dit slegs beperk tot lees en uitvoering, en in die toekoms, in die geval van 'n kompromie , sal die aanvaller nie skryfwerk vir hierdie geheueblok kan toelaat nie. Benewens PROT_MAX(), word sysctl vm.imply_prot_max ook geïmplementeer, wat, wanneer dit geaktiveer is, die stel geldige vlae bepaal gebaseer op die aanvanklike parameters van die eerste mmap-oproep;
    • Om die beskerming teen uitbuiting van kwesbaarhede te versterk, word, benewens die adresruimte-randomisering (ASLR) tegniek, 'n meganisme voorgestel vir die ewekansige verskuiwings van wysers wat die aanvanklike stapelraam aanspreek en strukture wat op die stapel geplaas is met inligting oor die omgewing, programbekendstellingparameters, en data vir uitvoerbare beelde in ELF-formaat;
    • Werk is gedoen om die onveilige kry-funksie van libc te verwyder (begin met die C11-standaard, hierdie funksie is uitgesluit van die spesifikasie) en om die poorte wat steeds hierdie funksie gebruik reg te stel. Die verandering word beplan om in FreeBSD 13.0 aangebied te word;
    • 'n Loodsprojek is van stapel gestuur om gereedskap te skep vir die orkestrasie van tronkomgewings gebaseer op die raamwerk pot vir die skep en uitvoer van beelde, soortgelyk aan Docker geïmplementeer, en 'n bestuurder nomade, wat 'n koppelvlak bied om toepassings dinamies in 'n tronk-omgewing te begin. Die voorgestelde model maak dit moontlik om die prosesse van die skep van tronkomgewings te skei en toepassings daarin te ontplooi. Een van die doelwitte van die projek is om 'n manier te verskaf om tronke soos Docker-styl houers te manipuleer;
  • Berging en lêerstelsels
    • Van NetBSD tot die "makefs" nut herskeduleer ondersteuning vir die FAT-lêerstelsel (msdosfs). Voorbereide veranderinge laat jou toe om FS-beelde met FAT te skep sonder om die md-bestuurder en sonder wortelvoorregte te gebruik;
    • Die FUSE (Lêerstelsel in USErspace) substelselbestuurder is herwerk, wat dit moontlik maak om implementerings van lêerstelsels in gebruikersruimte te skep. Die drywer wat oorspronklik gestuur is, het baie foute bevat en was gebaseer op FUSE 7.8 wat 11 jaar gelede vrygestel is. As deel van die bestuurder-moderniseringsprojek is ondersteuning vir die FUSE 7.23-protokol bygevoeg, kode is bygevoeg om toestemmings aan die kernkant te kontroleer ("-o default_permissions"), VOP_MKNOD, VOP_BMAP en VOP_ADVLOCK-oproepe is bygevoeg, die vermoë om onderbreking FUSE-bewerkings is bygevoeg, ondersteuning vir naamlose pype en unix-sokke is bygevoeg in fusefs, bygevoeg die vermoë om kqueue vir /dev/fuse te gebruik, opdatering van mount-parameters toegelaat via "mount -u", bygevoeg ondersteuning vir die uitvoer van fusefs via NFS , het RLIMIT_FSIZE-rekeningkunde geïmplementeer, die FOPEN_KEEP_CACHE- en FUSE_ASYNC_READ-vlae bygevoeg, aansienlike werkverrigtingoptimalisasies gemaak en kasorganisasie verbeter. Die nuwe drywer is ingesluit in die kop en stal/12 takke (ingesluit by FreeBSD 12.1);
    • Die NFSv4.2-implementering (RFC-7862) vir FreeBSD is amper voltooi. Gedurende die verslagtydperk was die fokus op toetsing. Verenigbaarheidstoetse met die Linux-implementering is voltooi, maar toetsing van die pNFS-bediener met NFSv4.2 is steeds aan die gang. Oor die algemeen word die kode reeds beskou as gereed vir integrasie in FreeBSD se hoof/huidige takke. Die nuwe weergawe van NFS voeg ondersteuning by vir die posix_fadvise, posix_fallocate-funksies, SEEKHOLE/SEEKDATA-modusse in lseek, plaaslike kopiëring van lêerdele op die bediener (sonder oordrag na die kliënt);
  • Hardeware ondersteuning
    • Het 'n projek begin om FreeBSD op skootrekenaars te verbeter. Die eerste toestel wat vir hardeware-ondersteuning in FreeBSD geoudit is, was die sewende generasie Lenovo X1 Carbon-skootrekenaar;
    • CheriBSD, 'n vurk van FreeBSD vir navorsingsverwerker-argitektuur DARLING (Capability Hardware Enhanced RISC Instructions), opgedateer om die komende ARM Morello-verwerker te ondersteun, wat CHERI se geheuetoegangsbeheerstelsel gebaseer op die Capsicum-sekuriteitsmodel sal ondersteun. Morello-skyfie beplan vrystelling in 2021. Die CheriBSD-ontwikkelaars gaan ook voort om die ontwikkeling van die CHERI-verwysingsprototipe te monitor wat op die MIPS-argitektuur gebaseer is;
    • Uitgebreide ondersteuning vir RockChip RK3399-skyfies wat in RockPro64- en NanoPC-T4-borde gebruik word. Die belangrikste verbetering was eMMC-ondersteuning en die ontwikkeling van 'n nuwe drywer vir die eMMC-beheerder wat in die bord gebruik word;
    • Werk het voortgegaan om ondersteuning vir die ARM64 SoC Broadcom BCM5871X te implementeer met ARMv8 Cortex-A57 verwerkers wat gemik is op gebruik in routers, poorte en NAS. Gedurende die verslagdoeningstydperk
      ondersteuning vir iProc PCIe uitgebrei en die vermoë bygevoeg om hardeware kriptografiese bewerkings te gebruik om IPsec te bespoedig.
      Integrasie van kode in die HOOF-tak word in die vierde kwartaal verwag;

    • Beduidende vordering is gemaak in die ontwikkeling van die FreeBSD-poort vir die powerpc64-platform. Die fokus is op die verskaffing van kwaliteit werkverrigting op stelsels met IBM POWER8 en POWER9 verwerkers, maar word opsioneel ondersteun op ouer Apple Power Macs, x500 en Amiga A1222. Die powerpc*/12-tak word steeds met gcc 4.2.1 gestuur, en die powerpc*/13-tak sal binnekort na llvm90 gemigreer word. Uit 33306 poorte is 30514 suksesvol saamgestel;
    • Die oordrag van FreeBSD na NXP LS64A 1046-bis SoC gebaseer op ARMv8 Cortex-A72 verwerker met 'n geïntegreerde netwerkpakketverwerkingversnellingsenjin, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 en USB 3.0 het voortgegaan. Gedurende die verslagtydperk is ondersteuning vir USB 3.0, SD / MMC, I2C, DPAA-netwerkkoppelvlak en GPIO geïmplementeer. Ons beplan om QSPI te ondersteun en netwerkkoppelvlakprestasie te optimaliseer. Voltooiing en insluiting in die HOOF-tak word in Q4 2019 verwag;
    • Die ena-bestuurder is opgedateer om die tweede generasie ENAv2 (Elastic Network Adapter) netwerkadapters te ondersteun wat in die Elastic Compute Cloud (EC2) infrastruktuur gebruik word om kommunikasie tussen EC2 nodusse te organiseer teen snelhede tot 25 Gb/s. NETMAP-ondersteuning by die ena-bestuurder bygevoeg en getoets, en die geheue-uitleg aangepas om LLQ-modus in Amazon EC2 A1-omgewings te aktiveer;
  • Toepassings en hawens stelsel
    • Opgedateerde grafiese stapel komponente en poorte wat verband hou met xorg. Poorte wat USE_XORG en XORG_CAT gebruik, is na die USES-raamwerk gemigreer in plaas daarvan om bsd.xorg.mk via bsd.port.mk te bel. Sulke poorte sluit nou die "USES=xorg"-vlag in hul make-lêers in. Die XORG_CAT-funksionaliteit is uit bsd.xorg.mk onttrek en is nou geaktiveer met die "USES=xorg-cat"-vlag. Bygevoeg gereedskap vir die direkte generering van xorg-poorte vanaf 'n git-bewaarplek
      freedesktop.org, wat jou byvoorbeeld toelaat om poorte te genereer vir weergawes wat nog nie vrygestel is nie. In die toekoms word daar beplan om 'n gereedskapstel voor te berei om die meson-boustelsel in plaas van outo-gereedskap te gebruik om xorg-poorte te bou.

      Werk is gedoen om ou xorg-poorte op te ruim wat gekoppel is aan komponente wat nie meer ondersteun word nie, soos om die x11/libXp-poort te verwyder en die x11/Xxf86misc-, x11-fonts/libXfontcache en graphics/libGLw-poorte te verwyder;

    • Werk is gedoen om ondersteuning vir Java 11 en nuwer vrystellings in FreeBSD te verbeter, en om 'n paar veranderinge aan die Java 8-tak oor te dra. Aangesien FreeBSD ondersteuning geïmplementeer het vir nuwe Java 11-kenmerke soos Java Flight Recorder, HotSpot Serviceability Agent, HotSpot Debugger, DTrace, Javac Server, Java Sound en SCTP, werk het verskuif om te verseker dat alle versoenbaarheidstoetse slaag. Die aantal druipes wanneer toetse geslaag word, is van 50 tot 2 verminder;
    • Die KDE Plasma-lessenaar, KDE-raamwerke, KDE-toepassings en Qt word op datum gehou en bygewerk na die jongste vrystellings;
    • Poorte met Xfce-lessenaar opgedateer om vry te stel 4.14;
    • Die FreeBSD-poortboom het die mylpaal van 38000 2000 poorte geslaag, die aantal oop PR's is effens meer as 400, waarvan 7340 PR's nog hangende is. Gedurende die verslagtydperk is 169 veranderinge deur 1.12 ontwikkelaars aangebring. Twee nuwe bydraers (Santhosh Raju en Dmitri Goutnik) het committer-regte gekry. 'n Nuwe weergawe van die pkg 2.0.4-pakketbestuurder is gepubliseer met ondersteuning vir oorleggings in die ports-boom en die skoonmaak van bsd.sites.mk. Belangrike poortweergawe-opdaterings sluit in: Lazarus 9.0, LLVM 5.30, Perl11, PostgreSQL 2.6, Ruby 69.0.1, Firefox 68.1.0, Firefox-esr 76.0, Chromium XNUMX;
    • Die ontwikkeling van die projek gaan voort ClonOS, ontwikkel 'n gespesialiseerde verspreidingskit vir die implementering van 'n virtuele bedienerinfrastruktuur. In terme van take wat opgelos moet word, lyk ClonOS soos stelsels soos Proxmox, Triton (Joyent), OpenStack, OpenNebula en Amazon AWS, waarvan die belangrikste verskil die gebruik van FreeBSD en die vermoë is om FreeBSD-tronkhouers te bestuur, ontplooi en bestuur. virtuele omgewings gebaseer op Bhyve- en Xen-hipervisors. Van die onlangse veranderinge is daar ondersteuning
      cloud-init vir Linux/BSD VM en cloudbase-init vir Windows VM, begin van oorgang na inheemse beelde, gebruik van Jenkins CI vir boutoetsing en nuwe pkg-bewaarplek vir installasie
      ClonOS vanaf pakkette.

Bron: opennet.ru

Voeg 'n opmerking