FreeBSD 2019. aasta kolmanda kvartali arenguaruanne

avaldatud aruanne FreeBSD projekti arengu kohta juulist septembrini 2019. Muudatuste hulgas võime märkida:

  • Üldised ja süsteemsed probleemid
    • Põhimeeskond on üldiselt heaks kiitnud võimaluse lisada kood süsteemi, mida levitatakse BSD litsentsi alusel koos täiendava patendilepinguga (BSD + patent), kuid otsus lisada iga komponent selle litsentsi alusel süsteemi tuleb eraldi heaks kiita;
    • Toimus tsentraliseeritud lähtekoodide tsentraliseeritud juhtimissüsteemist Subversion detsentraliseeritud süsteemi Git lähtekoodide migratsiooni läbiviimiseks loodud töörühma esimene koosolek. Arutelu migratsiooni teostatavuse üle jätkub ja paljudes küsimustes tuleb veel otsuseid teha (näiteks mida teha contrib/-ga, kas praeguses git-hoidlas on vaja räsisid taastada ja kuidas testimist kõige paremini rakendada kohustustest);
    • NetBSD-st teisaldatud KCSAN (Kernel Concurrency Sanitizer) tööriistakomplekt, mis võimaldab tuvastada võistlustingimusi erinevatel protsessoritel töötavate tuumalõimede vahel;
    • Käimas on töö Clangi sisseehitatud assembleri (IAS) kasutamiseks GNU binutils assembleri asemel;
    • Linuxi keskkonna emuleerimise infrastruktuur (Linuxulator) on kohandatud töötama ARM64 arhitektuuriga. Rakendatud süsteemikutse "renameat2". Utiliiti strace on täiustatud, et diagnoosida Linuxulatoris töötavate Linuxi käivitatavate failide probleeme. Krahhidega seotud probleem käivitatavate failide linkimisel värske glibc-ga on lahendatud. Linuxulatori Linuxi komponentidega pordid on värskendatud versioonile CentOS 7.7;
    • Programmi Google Summer of Code raames lõpetasid õpilased edukalt kuus projekti: valmistati ette ühtse (IPv4/IPv6) ping-utiliidi juurutamine, töötati välja tööriistad tulemüüride testimiseks ja kerneli vigade tuvastamiseks (Kernel sanitizer), mac_ipacl. pakuti välja moodul, kirjutati kood virtuaalmälu tihendamiseks ja on tehtud tööd pordi ehitamise protsessi eraldamiseks kohalikust installist;
    • FreeBSD kerneli fuzzing-testimise projekt süsteemi abil areneb edasi syzkaller. Aruandeperioodil tuvastati ja kõrvaldati syzkalleri abil üle kümne vea. Syzkalleri käitamiseks bhyve-l põhinevates virtuaalsetes masinates on pühendatud eraldi server ja seda kasutatakse
      syzbot on loonud Google'i infrastruktuuri erinevate FreeBSD alamsüsteemide testimise. Korraldanud kõigi krahhide kohta teabe edastamise teenusesse backtrace.io, et lihtsustada nende rühmitamist ja analüüsi;

    • Töö on käimas zlib-i juurutamise uuendamiseks kerneli tasemel.
      Pakkimisega seotud kood on üle 1.0.4 aasta tagasi välja antud versioonilt zlib 20 üle viidud praegusesse zlib 1.2.11 koodibaasi. Juurdepääsu ühendamiseks zlib-ile on kernelile lisatud funktsioonid compress, compress2 ja uncompress. Kood, mis tagab PPP-protokolli toimimise netgraphi alamsüsteemist, on üle viidud selle teegi enda väljaande asemel zlib-i süsteemirakenduse kasutamiseks. Uude zlib-i on üle viidud ka alamsüsteemid kern_ctf.c, opencryptodflate, geom_uzip, alam_kompressor.
      if_mxge, bxe uuendatud ja ng_deflate;

    • Arendatakse uut kerneli liidest sysctlinfo, mis võimaldab leida sysctl parameetrite andmebaasist elemente, mida töödeldakse MIB (Management Information Base) kujul, ja edastada objektide kohta infot kasutajaruumi.
  • turvalisus
    • Kerneli moodul välja töötatud mac_ipacl, mis põhineb TrustedBSD MAC Frameworkil ja juurutab juurdepääsukontrollisüsteemi võrgupinu sätete jaoks vanglakeskkondade jaoks. Näiteks kasutades mac_ipacl, saab hostisüsteemi administraator takistada vanglakeskkonnas asuval juurkasutajal teatud võrguliideste jaoks IP-aadresse või alamvõrgu sätteid muutmast või määramast. Kavandatav kohustuslik läbipääsusüsteem võimaldab määrata vangla jaoks lubatud IP-aadresside ja alamvõrkude loendid, keelata teatud IP-de ja alamvõrkude installimine vanglasse või piirata parameetrite muutmist ainult teatud võrguliideste jaoks;
    • Intel annetas projektile tarkvara pinu pordi TPM 2.0 (Usaldusväärse platvormi moodul), et liidestada turvalise andmetöötluskiibiga, mida tavaliselt kasutatakse püsivara ja OS-i alglaaduri kontrollitud laadimiseks. Viru komponendid on esitatud kujul ports security/tpm2-tss, security/tpm2-tools ja security/tpm2-abrmd. Port tpm2-tss sisaldab teeke TPM2 API kasutamiseks, tpm2-tools pakub käsurea utiliite TPM-i toimingute tegemiseks ja tpm2-abrmd sisaldab TPM Access Brokeri ja Resource Manageri komponentide taustprotsessi rakendust, mis multipleksib erinevate TPM-i kasutajate päringuid. ühele seadmele. Lisaks FreeBSD-s kontrollitud käivitamisele saab TPM-i kasutada Strongswani IPseci, SSH ja TLS-i turvalisuse suurendamiseks, tehes krüptograafilisi toiminguid eraldi kiibil;
    • Amd64 arhitektuuri kernel on kohandatud alglaadimiseks W^X (write XOR execute) kaitsetehnikaga, mis tähendab, et mälulehtedele ei saa üheaegselt juurde pääseda kirjutamiseks ja täitmiseks (kerneli saab nüüd laadida käivitatavate mälulehtede abil, mille jaoks kirjutatakse on keelatud). Uus kerneli kaitsemeetod sisaldub harus HEAD ja see lisatakse FreeBSD 13.0 ja 12.2 väljalasetesse;
    • mmap ja mprotect süsteemikõnede jaoks rakendatud makro PROT_MAX(), mis võimaldab määrata edasiste muudatuste jaoks lubatud juurdepääsupiirangu lippude komplekti (PROT_READ, PROT_WRITE, PROT_EXEC). Funktsiooni PROT_MAX() abil saab arendaja keelata mälupiirkonna ülekandmise käivitatavasse kategooriasse või taotleda mälu, mis ei võimalda täitmist, kuid mida saab hiljem täitmisfailiks teisendada. Näiteks võib mälupiirkond olla kirjutamiseks avatud ainult dünaamilise linkimise või JIT-koodi genereerimise ajaks, kuid kui kirjutamine on lõpetatud, on see piiratud lugemise ja täitmisega ning tulevikus, kui see on ohustatud, siis ründaja ei saa selle mäluploki jaoks kirjutamist lubada. Lisaks PROT_MAX(ile) on realiseeritud ka sysctl vm.imply_prot_max, mis aktiveerimisel määrab kehtivate lippude komplekti esimese mmap-i väljakutse algparameetrite alusel;
    • Haavatavuste ärakasutamise vastase kaitse tõhustamiseks on lisaks aadressiruumi randomiseerimise tehnikale (ASLR) ka mehhanism, mis võimaldab juhuslikustada viiteid, mis adresseerivad algse pinu raami ja pinu paigutatud struktuure keskkonna, programmi käivitamise parameetrite ja andmetega. käivitatavate piltide jaoks ELF-vormingus;
    • Tööd on tehtud unsafe gets funktsiooni eemaldamiseks libc-st (alates C11 standardist on see funktsioon spetsifikatsioonist välja jäetud) ja seda funktsiooni veel kasutavate pordide parandamiseks. Muudatust plaanitakse pakkuda FreeBSD 13.0-s;
    • Käivitatud on eksperimentaalprojekt, mille eesmärk on luua raamistiku alusel vanglakeskkondade orkestreerimiseks tööriistu saab piltide loomiseks ja eksportimiseks, mis on rakendatud sarnaselt Dockeriga, ja draiver nomaad, mis pakub liidest rakenduste dünaamiliseks käivitamiseks vanglakeskkonnas. Kavandatud mudel võimaldab meil eraldada vanglakeskkondade loomise ja neis rakenduste juurutamise protsessid. Projekti üks eesmärke on pakkuda vahendit vanglatega manipuleerimiseks Dockeri stiilis konteineritena;
  • Salvestus- ja failisüsteemid
    • Alates NetBSD-st ja lõpetades utiliidiga "makefs". liigutatud FAT-failisüsteemi tugi (msdosfs). Ettevalmistatud muudatused võimaldavad luua FS-pilte FAT-iga ilma md-draiverit kasutamata ja juurõigusteta;
    • Lõppenud on FUSE (File system in USErspace) alamsüsteemi draiveri ümbertöötamine, mis võimaldab luua kasutajaruumis failisüsteemi teostusi. Algselt tarnitud draiver sisaldas palju vigu ja põhines FUSE 7.8-l, mis anti välja 11 aastat tagasi. Draiveri moderniseerimise projekti raames on juurutatud FUSE 7.23 protokolli tugi, lisatud on kood kerneli poole juurdepääsuõiguste kontrollimiseks (“-o default_permissions”), lisatud on kõned VOP_MKNOD, VOP_BMAP ja VOP_ADVLOCK, pakutud on FUSE toimingute katkestamise võimalus, kaitsmetesse on lisatud nimetute torude ja unixi pesade tugi, sai võimalikuks kasutada kqueue /dev/fuse jaoks, mount -u kaudu oli võimalik uuendada mount parameetreid, lisatud tugi kaitsmete eksportimiseks NFS-i kaudu rakendas RLIMIT_FSIZE arvestust, lisas lipud FOPEN_KEEP_CACHE ja FUSE_ASYNC_READ, tegi olulisi jõudluse optimeerimisi ja täiustas vahemällu korraldust. Uus draiver on lisatud pea- ja stable/12 harusse (sisaldub FreeBSD 12.1-s);
    • NFSv4.2 (RFC-7862) juurutamine FreeBSD jaoks on peaaegu lõpule viidud. Aruandeperioodil oli põhirõhk testimisel. Testid on lõpule viidud, et kontrollida ühilduvust Linuxi juurutusega, kuid pNFS-serveri testimine NFSv4.2-ga on endiselt pooleli. Üldiselt peetakse koodi juba valmis integreerimiseks FreeBSD pea-/praegustesse harudesse. NFS-i uus versioon lisab funktsioonide posix_fadvise, posix_fallocate, SEEKHOLE/SEEKDATA režiimide toe lseekis, faili osade lokaalse kopeerimise toimimisele serveris (ilma kliendile ülekandmiseta);
  • Riistvara tugi
    • Käivitatud on projekt FreeBSD jõudluse parandamiseks sülearvutites. Esimene seade, mida FreeBSD riistvaratoe osas auditeeriti, oli seitsmenda põlvkonna Lenovo X1 Carbon sülearvuti;
    • CheriBSD, FreeBSD kahvel uurimisprotsessorite arhitektuuri jaoks CHERI (Capability Hardware Enhanced RISC Instructions), mida värskendati tulevase ARM Morello protsessori toetamiseks, mis toetab Capsicumi disaini turvamudelil põhinevat CHERI mälupääsu juhtimissüsteemi. Morello kiip plaanivad ilmub 2021. aastal. CheriBSD arendajad jätkavad ka MIPS-arhitektuuril põhineva CHERI võrdlusprototüübi arendamise jälgimist;
    • Laiendatud tugi RockChip RK3399 kiipidele, mida kasutatakse RockPro64 ja NanoPC-T4 plaatides. Kõige olulisem edasiminek oli eMMC tugi ja plaadil kasutatava eMMC kontrolleri uue draiveri väljatöötamine;
    • 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
      Laiendatud on iProc PCIe tuge ja lisatud on võimalus kasutada IPseci kiirendamiseks riistvaralisi krüptooperatsioone.
      Koodi integreerimine HEAD-i haruga on oodata neljandas kvartalis;

    • Powerpc64 platvormi FreeBSD pordi väljatöötamisel on tehtud olulisi edusamme. Keskendutakse kvaliteetse jõudluse pakkumisele IBM POWER8 ja POWER9 protsessoritega süsteemides, kuid valikuliselt toetab ka vanemate Apple Power Maci, x500 ja Amiga A1222 tööd. Powerpc*/12 haru tarnitakse jätkuvalt versiooniga gcc 4.2.1 ja powerpc*/13 haru viiakse peagi üle versioonile llvm90. 33306 pordist on edukalt kokku pandud 30514;
    • FreeBSD portimine jätkub 64-bitise SoC NXP LS1046A puhul, 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. Aruandeperioodil juurutati USB 3.0, SD/MMC, I2C, DPAA ja GPIO võrguliidese tugi. Plaanis on toetada QSPI-d ja optimeerida võrguliidese jõudlust. Tööde lõpetamist ja HEAD-i harusse arvamist oodatakse 4. aasta IV kvartalis;
    • 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 ja testitud NETMAP-i tugi ning kohandatud mälupaigutust, et võimaldada LLQ-režiimi Amazon EC2 A1 keskkondades;
  • Rakendused ja pordisüsteem
    • Värskendatud graafikapinu komponendid ja xorgiga seotud pordid. USE_XORG-i ja XORG_CAT-i kasutavad pordid on viidud USES-i raamistikku, selle asemel et kutsuda bsd.xorg.mk kaudu bsd.port.mk. Sellised pordid sisaldavad nüüd oma make-failides lippu "USES=xorg". Funktsionaalsus XORG_CAT on failist bsd.xorg.mk eraldatud ja see on nüüd lubatud lipuga "USES=xorg-cat". Lisatud tööriistad xorg-portide otse genereerimiseks git-hoidlast
      freedesktop.org, mis võimaldab näiteks luua porte veel avaldamata versioonidele. Tulevikus plaanime Xorg-portide ehitamiseks ette valmistada tööriistad mesoni montaažisüsteemi kasutamiseks autotoolsi asemel.

      Tööd on tehtud vanade xorg-i portide puhastamiseks, mis on seotud komponentidega, mida enam ei toetata, näiteks on eemaldatud port x11/libXp ning pordid x11/Xxf86misc, x11-fonts/libXfontcache ja graphics/libGLw on aegunud. ;

    • Tööd on tehtud Java 11 ja uuemate väljaannete toe parandamiseks FreeBSD-s, samuti mõnede muudatuste portimiseks Java 8 harusse. Pärast selliste uute Java 11 funktsioonide nagu Java Flight Recorder, HotSpot Serviceability Agent, HotSpot Debugger tuge rakendati FreeBSD , DTrace , Javac Server , Java Sound ja SCTP puhul nihkus töö kõigi ühilduvustestide läbimise tagamisele. Katsete läbimise ebaõnnestumiste arv on vähenenud 50-lt 2-le;
    • KDE Plasma töölaud, KDE raamistikud, KDE rakendused ja Qt hoitakse ajakohasena ja värskendatakse uusimate väljaannetega;
    • Xfce desktopiga pordid on väljalaskmiseks värskendatud 4.14;
    • FreeBSD portide puu on ületanud 38000 2000 pordi piiri, sulgemata PR-de arv on veidi üle 400, millest 7340 PR-i on veel lahendamata. Aruandeperioodil tegi 169 muudatust 1.12 arendaja poolt. Kaks uut osalejat (Santhosh Raju ja Dmitri Goutnik) said volinikuõigused. Avaldatud on pkg 2.0.4 paketihalduri uus versioon, mis toetab pordipuu ülekatteid ja bsd.sites.mk puhastamist. Portide olulised versiooniuuendused on järgmised: Lazarus 9.0, LLVM 5.30, Perl11, PostgreSQL 2.6, Ruby 69.0.1, Firefox 68.1.0, Firefox-esr 76.0, Chromium XNUMX;
    • Projekti arendamine jätkub ClonOS, arenev spetsiaalne distributsioon virtuaalserveri infrastruktuuri juurutamiseks. Lahendatavate ülesannete poolest meenutab ClonOS selliseid süsteeme nagu Proxmox, Triton (Joyent), OpenStack, OpenNebula ja Amazon AWS, millest peamine erinevus on FreeBSD kasutamine ning võimalus hallata, juurutada ja hallata FreeBSD Jail konteinereid ja virtuaalsed keskkonnad, mis põhinevad Bhyve ja Xeni hüperviisoritel. Hiljutised muudatused hõlmavad toetust
      cloud-init Linuxi/BSD VM-i jaoks ja cloudbase-init Windows VM-i jaoks, alustades üleminekut natiivsete piltide kasutamisele, kasutades Jenkinsi CI-d ehituste testimiseks ja uut pkg-hoidlat installimiseks
      ClonOS pakettidest.

Allikas: opennet.ru

Lisa kommentaar