FreeBSD arengu raport kolmanda kvartali 2019. aastast

Avaldatud FreeBSD projekti aruanne juulist kuni septembrini 2019. aasta. Muudatused hõlmavad muuhulgas järgmist:

  • Üldised ja süsteemiküsimused
    • Kernimeeskond heaks kiitis võimaluse, et süsteemi võib lisada kood, mis on välja antud BSD litsentsi ja täiendava patentide kasutamise kokkuleppe alusel (BSD+Patent), kuid iga selle litsentsi alusel oleva komponendi lisamiseks süsteemi peab otsus olema eraldi kinnitatud;
    • Leidis aset esimene koosolek töörühmas, mis loodi allikate migreerimise läbiviimiseks keskse allikahaldussüsteemi Subversion'ist detsentraliseeritud süsteemi Git. Arutelu migreerimise otstarbekuse üle jätkub, paljude küsimuste osas tuleb veel lahendusi leida (nt kuidas käituda contrib/iga, kas on vajalik uuesti genereerida hashid praeguses git-repos ja kuidas parimal viisil testida commit’e);
    • NetBSD-st portitud KCSAN (Kernel Concurrency Sanitizer) tööriistakomplekt, mis võimaldab tuvastada, kas tuumaprotsesside vahel, mida täidetakse erinevates CPU-des, tekivad võidujooksu olukorrad;
    • Tööd tehakse Clang'i sisseehitatud assembleri (IAS) kasutuselevõtu nimel, selle asemel, et kasutada GNU binutils'i assemblerit;
    • Linuxi keskkonnale emuleerimise infrastruktuur (Linuxulator) on kohandatud ARM64 arhitektuuri tööks. Tehtud on süsteemikõne „renameat2“. Strace utiliit on täiustatud Linuxi täitmisfailide probleemide diagonaalimiseks, mida käitatakse Linuxulatoris. Lahendatud on probleem, kus täitmisfailide sidumine värske glibc-ga põhjustas tõrkeid. Linuxi komponentidega portid Linuxulatorile on uuendatud CentOS 7.7 versioonini;
    • Google’i suveprogrammi raames on tudengid edukalt ellu viinud kuus projekti: on valmistatud ühtne (IPv4/IPv6) pingutiliit, arendatud tööriistu tulemüüride testimiseks ja süsteemi vigade leidmiseks (Kernel sanitizer), pakutud välja mac_ipacl moodul, kirjutatud kood virtuaalse mälu tihendamiseks ja lõpetatud portside kogumise protsessi eraldamise töö kohalikust installatsioonist;
    • FreeBSD tuuma fuzzing-testimise projekt jätkab arengut kasutades süsteemi syzkaller. Aruandeperioodi jooksul on syzkalleriga avastatud ja kõrvaldatud üle kümne vea. Syzkaller'i käitamiseks bhyve põhiste virtuaalmasinate juures on eraldatud eraldi server ja selle abil
      syzbot on korraldatud erinevate FreeBSD alamsüsteemide kontrollimine Google'i infrastruktuuris. Teavet kõigi tõrgete kohta edastatakse teenusesse backtrace.io, et lihtsustada nende rühmitamist ja analüüsi;
    • Tööd tehakse zlib rakenduse värskendamiseks tuumatasandil.
      Suruge all oleva koodi on tõlgitud zlib 1.0.4 versioonilt, mis ilmus enam kui 20 aastat tagasi, kaasaegse zlib 1.2.11 koodibaasi. Zlibi juurde pääsemise ühtlustamiseks on tuumale lisatud funktsioonid compress, compress2 ja uncompress. PPP protokolli toimimise tagamise kood netgraph'i allüksusest on muudetud kasutama süsteemi zlibi rakendust, mitte selle raamatukogu enda muutmist. Uuele zlib'ile on ka tõlgitud alamsüsteemid kern_ctf.c, opencryptodeflate, geom_uzip, subr_compressor,
      if_mxge, bxe updated ja ng_deflate;
    • Uut tuuma liidest arendatakse sysctlinfo, mis võimaldab leida elemente sysctl parameetrite baasis, mida töödeldakse MIB (Management Information Base) vormis, ja edastada teavet objektide kohta kasutajaruumi.
  • Turvalisus
    • On välja töötatud tuummoodul mac_ipacl, mis põhineb TrustedBSD MAC Framework'il ja rakendab juurdepääsuhalduse süsteemi võrgu stacki seadete jaoks jail-keskkondades. Näiteks saab süsteemi administraator mac_ipacl abil keelata root-kasutajal jail-keskkonnas IP-aadresse või alamvõrku seadeid teatud võrguliidestel muutmaks või määramas. Ettepanekud on seotud kohustusliku juurdepääsuhalduse süsteemiga lubab määrata IP-aadresside ja alamvõrkude nimekirjad, mis on lubatud Jailis, keelata teatud IP-aadresside ja alamvõrkude määramine Jailis või piirata parameetrite muutmist ainult teatud võrguliideste jaoks;
    • Ettevõte Intel on projekti käigus andnud programmide komplekti porti TPM 2.0 (Trusted Platform Module) interaktsioneerimise jaoks turvaliste arvutuste kiibiga, mida tavaliselt kasutatakse silumisprotsesside ja operatsioonisüsteemi laadijalitsentside kontrollimiseks. Stack komponendid on esitatud portide kujul securtity/tpm2-tss, security/tpm2-tools ja security/tpm2-abrmd. Port tpm2-tss sisaldab raamatukogusid TPM2 API kasutamiseks, tpm2-tools pakub käsurida utiliite TPM-iga seotud toimingute täitmiseks, ja tpm2-abrmd sisaldab taustaprotsessi, millel on TPM Access Broker ja Resource Manager, mis multiplexerib erinevatelt TPM kasutajatelt päringud ühele seadmele. Lisaks silumisprotsessile saab FreeBSD-s TPM-i kasutada ka Strongswan IPsec, SSH ja TLS turvamise tugevdamiseks, viies läbi krüptograafilisi operatsioone eraldi kiibil;
    • amd64 arhitektuuri jaoks kohandatud kernel on kohandatud laadimise jaoks, rakendades W^X (write XOR execute) kaitsetehnikat, mis tähendab, et mälu leheküljed ei saa olla samal ajal kirjutatavad ja täidetavad (kernel saab nüüd laadida täidetavaid mälulehekülgi, mille kirjutamine on keelatud). Uus kärne kaitsemeetod on lisatud HEAD harusse ja saab olema osa FreeBSD 13.0 ja 12.2 väljaannetest;
    • Süsteemikutsed mmap ja mprotect rakendatud makro PROT_MAX(), mis võimaldab määrata sobivad pääsulimiitide lipud (PROT_READ, PROT_WRITE, PROT_EXEC) edasise muutmise korral. PROT_MAX() abil saab arendaja keelata mälupiirkonna määramise täitmisena või nõuda mälu, mis ei luba täitmist, kuid mille hilisem muutmine on võimalik täidetavaks. Näiteks võib mälu piirkond olla kirjutamiseks avatud ainult dünaamilise sidumise või JIT-koodi genereerimise ajaks, kuid pärast kirjutamise lõppu piirdub see vaid lugemise ja täitmisega, ning edasise kompromiti korral ei saa ründaja lubada kirjutamist selle mälubloki jaoks. PROT_MAX() kõrval on rakendatud ka sysctl vm.imply_prot_max, mille aktiveerimisel määratakse lubatud lipud lähtudes esimese mmap-kutse algparameetritest;
    • Võrreldes haavatavuste ärahoidmise tehnikatega, nagu aadressiruumi randomiseerimine (ASLR), on pakutud näitajate randomiseerimise mehhanismi, mis adresseerib steki algkaadreid ja steki struktuure, mis sisaldavad keskkonnainformatsiooni, programmi käivitamisparameetreid ja ELF-formaadis täitmisfaile.
    • On tehtud tööd libc turvamata funktsiooni gets eemaldamiseks (alates C11 standardist on see funktsioon spetsifikatsioonist välja jäetud) ja sadamate kohandamiseks, mis veel kasutavad seda funktsiooni. Muudatus plaanitakse esitada FreeBSD versioonis 13.0.
    • On käivitatud katseprojekti jail-ümbrike orkestreerimise vahendite loomiseks, mis põhinevad raamistiku pot piltide loomise ja eksportimise jaoks, mis on rakendatud nagu Docker, ja draiveri nomad, mis pakub liidese dünaamiliseks rakenduste käivitamiseks jail-ümbrikes. Pakutud mudel võimaldab eristada jail-ümbrike loomise ja rakenduste juurutamise protsesse. Üks projekti eesmärke on pakkuda vahendit jailide käsitlemiseks nagu konteinerid, sarnaselt Dockerile.
  • Salvestussüsteemid ja failisüsteemid
    • NetBSD-st utiliiti "makefs" üle viidud FAT-failisüsteemi tugi (msdosfs). Valmistatud muudatused võimaldavad luua FAT failisüsteemi pilte ilma md draiveri ja juurõigusteta;
    • FUSE (failisüsteem kasutaja ruumis) draiveri ümberehitus on lõpule viidud, võimaldades luua failisüsteemide teostusi kasutaja ruumis. Algne draiver sisaldas palju vigu ja põhines 11 aastat tagasi vabastatud versioonil FUSE 7.8. Draiveri moderniseerimise projekti raames on rakendatud FUSE 7.23 protokolli tugi, lisatud kood juurdepääsu õiguste kontrollimiseks tuumas ('-o default_permissions'), lisatud VOP_MKNOD, VOP_BMAP ja VOP_ADVLOCK kutsed, tagatud FUSE operatsioonide katkestamise võimalus, lisatud tugi nimetamata kanalite ja unix-socketite jaoks fusefs-is, võimaldatud kqueue kasutamine /dev/fuse jaoks, lubatud montaažiparametrite uuendamine läbi 'mount -u', lisatud fusefs eksportimise tugi NFS kaudu, rakendatud RLIMIT_FSIZE jälgimine, lisatud FOPEN_KEEP_CACHE ja FUSE_ASYNC_READ lipud, tehtud olulisi jõudluse optimeerimisi ja parandatud vahemälu korraldust. Uus draiver on integreeritud harudesse head ja stable/12 (sisu sisaldub FreeBSD 12.1);
    • NFSv4.2 (RFC-7862) rakendamise töö FreeBSD jaoks on peaaegu lõpetatud. Aruandeperioodil keskenduti peamiselt testimisele. Testid Linuxi rakenduse ühilduvuse kontrollimiseks on lõpetatud, kuid serveri pNFS töö kontrollimine NFSv4.2-ga jätkub. Üldiselt kaalutakse koodi juba FreeBSD head/current harudesse integreerimiseks sobivana. Uues NFS versioonis on lisatud tugi funktsioonidele posix_fadvise, posix_fallocate, SEEKHOLE/SEEKDATA režiimidele lseek'is, kohalike failiosade kopeerimise operatsioon serveris (ilma kliendile edastamata);
  • Seadmese toetamine
    • Alustatud on projekti, et parandada FreeBSD toimimist sülearvutites. Esimene seade, mille rikka toetuse auditeerimine FreeBSD-s viidi läbi, oli seitsmenda põlvkonna Lenovo X1 Carbon;
    • CheriBSD, FreeBSD haru teaduslike protsessorite arhitektuuri jaoks CHERI (Capability Hardware Enhanced RISC Instructions), on uuendatud toetama tulevast ARM Morello protsessorit, mis toetab mälu juurdepääsu haldamise süsteemi CHERI, põhinedes Capsicum projekti kaitse mudelile. Morello kiip keskenduda teiste operatsioonisüsteemide ja graafikakaartide toetamisele. välja lasta 2021. aastal. CheriBSD arendajad jälgivad ka CHERI standardprototüübi edasiviimist MIPS arhitektuuri baasil;
    • RockChip RK3399 kiipide toetus on laienenud, mida kasutatakse RockPro64 ja NanoPC-T4 platvormidel. Olulisim uuendus on eMMC toe lisamine ja uue draiveri väljatöötamine eMMC kontrollerile, mida plaadil kasutatakse;
    • Tööd ARM64 SoC Broadcom BCM5871X toe rakendamise kallal, mis sisaldab ARMv8 Cortex-A57 protsessoreid, jätkuvad, sihiks on kasutada neid ruuterites, väravates ja võrgu salvestites. Aruandeperioodil
      on iProc PCIe toetus laienenud ja lisatud on võimalus kasutada riistvara krüptograafilisi operatsioone IPsec-i töö kiirendamiseks.
      Koodi integreerimist HEAD harusse oodatakse neljandas kvartalis;
    • FreeBSD sadama arendamisel powerpc64 platvormile on saavutatud märkimisväärseid tulemusi. Peamine tähelepanu on suunatud kvaliteetse töö tagamisele IBM POWER8 ja POWER9 protsessoritega süsteemides, kuid valikuliselt toetatakse ka vanemate Apple Power Mac, x500 ja Amiga A1222 töötamist. Haru powerpc*/12 jätkab gcc 4.2.1 pakkumist, samas kui haru powerpc*/13 viiakse peagi üle llvm90 peale. Kokku 33306 porti, neist on edukalt koostatud 30514;
    • Jätkatud FreeBSD portimine 64-bitisele ARMv8 Cortex-A72 protsessoriga NXP LS1046A SoC-le, millega kaasneb võrgupakettide töötlemise kiiruskiirus, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 ja USB 3.0. Aruandeperioodi jooksul on lisatud USB 3.0, SD/MMC, I2C, DPAA võrguinterface'i ja GPIO tugi. Tulevikus on plaanis QSPI tugi ja võrguinterface'i jõudluse optimeerimine. Töö lõpetamine ja lisamine HEAD harusse on oodata 2019. aasta neljandasse kvartalisse;
    • Uuendatud ena draiver teise põlvkonna ENAv2 (Elastic Network Adapter) võrguadapterite toega, mida kasutatakse Elastic Compute Cloud (EC2) infrastruktuuris EC2 sõlmede vahelise ühenduse loomisel kiirusel kuni 25 Gb/s. Ena draiverisse on lisatud ja testitud NETMAP to support, samuti on kohandatud mälulayout-ide LLQ režiimi toetamiseks Amazon EC2 A1 keskkondades;
  • Rakendused ja portsüsteem
    • Uuendatud on graafikutehnikate komponente ja pordid, mis on seotud xorgiga. Pordid, mis kasutavad USE_XORG ja XORG_CAT, on ümber viidud USES raamistikku, mitte ei kutsu enam bsd.xorg.mk üles bsd.port.mk kaudu. Sarnased pordid sisaldavad nüüd make-failides lippu "USES=xorg". XORG_CAT funktsionaalsus on eraldatud bsd.xorg.mk-st ja aktiveeritakse nüüd lipuga "USES=xorg-cat". Lisatud on tööriistad xorgi pordide otse genereerimiseks git-reposiitidest.
      freedesktop.org, mis näiteks võimaldab genereerida porte veel mittevälja antud versioonide jaoks. Tulevikus on plaanis valmistada ette tööriistad, mis kasutavad mesoni ehitussüsteemi autotools'i asemel xorgi portide ehitamiseks.

      Tehtud on töö vana xorgi portide puhastamiseks, mis on seotud enam mitte toetatavate komponentidega, näiteks on eemaldatud port x11/libXp, samuti on port x11/Xxf86misc, x11-fonts/libXfontcache ja graphics/libGLw muudetud vananenuks;

    • Töötati välja Java 11 ja uuemate väljaannete tugi FreeBSD-s, samuti viidi ellu mitmete muudatuste portimine Java 8 harusse. Pärast Java 11 uute funktsioonide, nagu Java Flight Recorder, HotSpot Serviceability Agent, HotSpot Debugger, DTrace, Javac Server, Java Sound ja SCTP, toe rakendamist FreeBSD-s, keskenduti kõigi ühilduvustestide läbimise tagamisele. Testide tööhäirete arv vähenes 50-lt 2-le;
    • KDE Plasma, KDE Frameworks, KDE Applications ja Qt töölauad on ajakohased ja uuendatud kõige värskematele väljaannetele;
    • Xfce lauaarvutite portid on uuendatud väljaandesse 4.14;
    • FreeBSD portide puu on ületanud 38000 portaali, ja avatud PR-e on veidi üle 2000, millest 400 PR-i pole veel lahendatud. Aruandeperioodi jooksul tehti 7340 muudatust 169 arendajalt. Kaks uut liiget (Santhosh Raju ja Dmitri Goutnik) said committeri õigused. Avaldati uus pkg paketihalduri väljaanne 1.12, millel on tugi ülekattele portide puus ja bsd.sites.mk puhastus. Märkimisväärsed versioonide uuendused ports hõlmavad: Lazarus 2.0.4, LLVM 9.0, Perl5.30, PostgreSQL 11, Ruby 2.6, Firefox 69.0.1, Firefox-esr 68.1.0, Chromium 76.0;
    • Projekti areng jätkub ClonOS, arendav spetsialiseeritud distributsioon virtuaalserverite infrastruktuuri käivitamiseks. ClonOS lahendab sarnaseid ülesandeid nagu Proxmox, Triton (Joyent), OpenStack, OpenNebula ja Amazon AWS, kuid peamine erinevus seisneb FreeBSD kasutamises ning FreeBSD Jail-konteinerite ja hüpervisori Bhyve ja Xen põhiste virtuaalsete keskkondade haldamise, käivitamise ja juhtimise võimaluses. Viimaste muudatuste hulgas on toetuse pakkumine
      cloud-init Linuxi/BSD VM-idele ja cloudbase-init Windows VM-idele, algus üleminekule oma piltide kasutamisele, Jenkins CI kasutuselevõtt ehituste testimiseks ja uus pkg-repositoorium ClonOS-i paketina installimiseks.
      ClonOS pakettidest.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster