Izveštaj o razvoju FreeBSD-a za treći kvartal 2019. godine

Objavljeno poročilo o razvoju projekta FreeBSD od julija do septembra 2019. Med spremembami izstopa:

  • Splošna in sistemska vprašanja
    • Jedro ekipe je na splošno odobrilo možnost vključitve kode, dostavljene pod BSD licenco z dodatnim sporazumom o uporabi patentov (BSD+Patent), vendar se o vključitvi vsakega komponente pod to licenco odloča ločeno;
    • Potekalo je prvo srečanje delovne skupine, ustanovljene za selitev izvornih datotek iz centraliziranega sistema za upravljanje izvorne kode Subversion v decentraliziran sistem Git. Razprava o smiselnosti migracije še poteka, številna vprašanja pa je potrebno še rešiti (na primer, kako ravnati s contrib/, ali je treba regenerirati hashe v trenutnem git repozitoriju in kako najbolje izvesti testiranje commitov);
    • Iz NetBSD je bil portiran orodjar KCSAN (Kernel Concurrency Sanitizer), ki omogoča odkrivanje stanj dirke med jedrskimi niti, ki se izvajajo na različnih CPU-jih;
    • Poteka delo na uporabi vgrajenega assemblerja v Clangu (IAS) namesto assemblerja iz GNU binutils;
    • Infrastruktura emulacije okolja Linux (Linuxulator) je bila prilagojena za delovanje na arhitekturi ARM64. Izveden je sistemski klic „renameat2“. Orodje strace je bilo izboljšano za diagnosticiranje težav pri izvršljivih datotekah Linux, ki se izvajajo v Linuxulatorju. Rešena je bila težava pri povezovanju izvršljivih datotek z novim glibc. Pristanišča z Linux komponentami za Linuxulator so bila posodobljena na CentOS 7.7;
    • V okviru programa Google Summer of Code so študenti uspešno izvedli šest projektov: pripravljena je implementacija poenotene (IPv4/IPv6) utilities ping, razviti so orodja za testiranje požarnih zidov in odkrivanje napak v jedru (Kernel sanitizer), predlagan je modul mac_ipacl, napisan je koda za stiskanje virtualne pomnilnika in izvedeno je delo na ločevanju procesa zbiranja pristanišč od lokalne namestitve;
    • Projekt za fuzzing testiranje jedra FreeBSD z uporabo sistema syzkaller. V poročevalnem obdobju je bilo s pomočjo syzkallerja odkritih in odpravljenih več kot deset napak. Za zagon syzkallerja v virtualnih strojih na osnovi bhyve je bil dodeljen posebno strežnik, ob tem pa je bilo s pomočjo
      Syzbot je vzpostavil nadzor različnih podsystemov FreeBSD v infrastrukturi Google. Organiziran je prenos informacij o vseh zrušitvah v storitev backtrace.io za poenostavitev njihovega združevanja in analize;
    • Trenutno poteka delo na posodobitvi implementacije zlib na ravni jedra.
      Koda, povezana s stiskanjem, je bila prevedena iz zlib 1.0.4, izdanega pred več kot 20 leti, na aktualno kodo zlib 1.2.11. Zaenkrat so bile dodane funkcije compress, compress2 in uncompress za enotno dostopanje do zlib v jedru. Koda, ki omogoča delovanje protokola PPP v podsistemu netgraph, je bila prevedena na uporabo sistemske implementacije zlib, namesto lastne različice te knjižnice. Na nov zlib so bile prav tako prevedene podsystems kern_ctf.c, opencryptodeflate, geom_uzip, subr_compressor,
      if_mxge, bxe updated in ng_deflate;
    • Razvija se nov vmesnik jedra sysctlinfo, ki omogoča iskanje elementov v zbirkah parametrov sysctl, obravnavanih v obliki MIB (Management Information Base), in prenos informacij o objektih v prostor uporabnika.
  • Sigurnost
    • Razvit je modul jedra mac_ipacl, temelječ na TrustedBSD MAC Framework in izvaja sistem upravljanja dostopa do nastavitev omrežnega sklada za jail-okolja. Na primer, s pomočjo mac_ipacl lahko skrbnik gostiteljske sistema prepreči uporabniku root v jail-okolju, da spreminja ali nastavlja IP naslove ali parametre podmrež za določene omrežne vmesnike. Predlagani sistem mandatnega upravljanja dostopa omogućava določa sezname IP naslovov in podmrež, dovoljenih za Jail, prepoveduje namestitev določenih IP in podmrež v Jail ali omejuje spremembo parametrov samo za določene omrežne vmesnike;
    • Podjetje Intel je projektu predalo port programske skladbe TPM 2.0 (Trusted Platform Module) za interakcijo s čipom za varne izračune, ki se običajno uporablja za preverjeno nalaganje programske opreme in zagonskega nalagalnika operacijskega sistema. Komponente sklada so predstavljene v obliki portov securtity/tpm2-tss, security/tpm2-tools in security/tpm2-abrmd. Port tpm2-tss vključuje knjižnice za uporabo API TPM2, tpm2-tools ponuja ukazne vrstice za izvajanje operacij s TPM, medtem ko tpm2-abrmd vsebuje ozadju proces z implementacijo komponent TPM Access Broker in Resource Manager, ki multiplexira zahteve različnih uporabnikov TPM na eno napravo. Poleg preverjenega nalaganja se lahko TPM v FreeBSD uporablja tudi za povečanje varnosti Strongswan IPsec, SSH in TLS z izvajanjem kriptografskih operacij na ločenem čipu;
    • Jedro za arhitekturo amd64 je prilagojeno za nalaganje z uporabo tehnike zaščite W^X (write XOR execute), kar pomeni, da strani pomnilnika ne morejo biti hkrati dostopne za pisanje in izvajanje (jedro se zdaj lahko nalaga z uporabo izvedbenih strani pomnilnika, za katere je pisanje prepovedano). Novi zaščitni način je vključen v vejo HEAD in bo del izdaj FreeBSD 13.0 in 12.2;
    • Za sistemske klice mmap in mprotect je realiziran makro PROT_MAX(), ki omogoča določitev dovoljene skupine zastavic omejitev dostopa pri nadaljnjih spremembah (PROT_READ, PROT_WRITE, PROT_EXEC). Z uporabo PROT_MAX() lahko razvijalec prepove prehod območja pomnilnika v kategorijo izvajalnega ali zahteva pomnilnik, ki ne dovoljuje izvajanja, a se ga lahko kasneje spremeni v izvajalnega. Na primer, območje pomnilnika je lahko odprto za pisanje samo med dinamičnim povezovanjem ali generiranjem JIT kode, toda po končanem pisanju je omejeno le na branje in izvajanje, in v primeru kompromitacije napadalec ne more dovoliti pisanja za ta blok pomnilnika. Poleg PROT_MAX() je tudi implementirana sysctl vm.imply_prot_max, pri čemer se nabor dovoljenih zastavic določa na podlagi prvotnih parametrov prvega klica mmap;
    • Da bi povećali zaštitu od iskorištavanja ranjivosti, pored tehnike randomizacije adresnog prostora (ASLR), predložen je mehanizam randomizacije pomeraja pokazivača, koji se odnosi na inicialni okvir steka i strukture smeštene u steku koje sadrže informacije o okruženju, parametrima pokretanja programa i podacima za izvršne slike u ELF formatu;
    • Obavljen je posao na uklanjanju nesigurne funkcije gets iz libc (od C11 standarda ova funkcija je isključena iz specifikacije) i podešavanju portova koji još uvek koriste ovu funkciju. Promenu je planirano uvesti u FreeBSD 13.0;
    • Pokrenut je eksperimentalni projekat za kreiranje sredstava za orkestraciju jail okruženja na osnovu framework-a pot za kreiranje i eksportovanje slika, realizovanog po analogiji sa Docker-om, i drajvera nomad, koji pruža interfejs za dinamičko pokretanje aplikacija u jail okruženju. Predloženi model omogućava odvajanje procesa kreiranja jail okruženja i implementacije aplikacija u njima. Jedan od ciljeva projekta je pružanje sredstva za manipulaciju jail-ima kao kontejnerima u stilu Dockera;
  • Sistemi skladištenja i fajlsistemi
    • Iz NetBSD u alat „makefs“ preneta je podrška za fajlsistem FAT (msdosfs). Pripremljene izmene omogućavaju kreiranje slika FS sa FAT bez korišćenja drajvera md i bez privilegija root;
    • Završena je revizija FUSE (File system in USErspace) vozača, koji omogućava implementaciju datotečnih sustava u korisničkom prostoru. Izvorni vozač imao je mnogo grešaka i bio je temeljen na verziji FUSE 7.8, objavljenoj prije 11 godina. U okviru projekta modernizacije vozača podržana je verzija protokola FUSE 7.23, dodan je kod za provjeru prava pristupa na strani jezgre („-o default_permissions”), dodani su pozivi VOP_MKNOD, VOP_BMAP i VOP_ADVLOCK, omogućena je mogućnost prekidanja FUSE operacija, dodana je podrška za neimenovane kanale i unix sokete u fusefs-u, omogućena je upotreba kqueue za /dev/fuse, dozvoljeno je ažuriranje parametara montiranja putem „mount -u”, dodana je podrška za izvoz fusefs putem NFS-a, implementirano je praćenje RLIMIT_FSIZE, dodane su oznake FOPEN_KEEP_CACHE i FUSE_ASYNC_READ, izvršene su značajne optimizacije performansi i poboljšana je organizacija keširanja. Novi vozač uključen je u grane head i stable/12 (postao je deo FreeBSD 12.1);
    • Dovršava se rad na implementaciji NFSv4.2 (RFC-7862) za FreeBSD. Tokom izveštajnog perioda fokus je bio na testiranju. Testovi za proveru kompatibilnosti sa implementacijom u Linux-u su završeni, ali je testiranje rada pNFS servera sa NFSv4.2 još uvek u toku. Kod se u opštem smislu već razmatra kao pripremljen za integraciju u grane FreeBSD head/current. U novoj verziji NFS dodata je podrška za funkcije posix_fadvise, posix_fallocate, režime SEEKHOLE/SEEKDATA u lseek-u, operacije lokalnog kopiranja delova datoteke na serveru (bez slanja klijentu);
  • Podrška za hardver
    • Pokrenut je projekat za poboljšanje rada FreeBSD na laptopovima. Prvi uređaj za koji je izvršen audit podrške hardveru u FreeBSD-u bio je laptop Lenovo X1 Carbon sedme generacije;
    • CheriBSD, fork FreeBSD-a za istraživačku procesorsku arhitekturu CHERI (Upute za RISC s poboljšanom mogućnošću), ažurirano za podršku nadolazećem ARM Morello procesoru, koji će podržavati sistem za upravljanje memorijskim pristupom CHERI, koji se temelji na zaštitnom modelu projekta Capsicum. Čip Morello nameravajo će biti objavljen 2021. godine. Razvijatelji CheriBSD-a takođe nastavljaju da prate razvoj referentnog prototipa CHERI zasnovanog na MIPS arhitekturi;
    • Podpora čipov RockChip RK3399, uporabljenih na ploščah RockPro64 in NanoPC-T4, je bila razširjena. Najpomembnejša izboljšava je podpora eMMC in razvoj novega gonilnika za krmilnik eMMC, ki se uporablja na plošči;
    • Delo na implementaciji podpore za ARM64 SoC Broadcom BCM5871X s procesorji ARMv8 Cortex-A57, namenjenimi ruterjem, prehodom in omrežnimi shrambami, se nadaljuje. V poročevalnem obdobju
      je bila razširjena podpora za iProc PCIe in dodana možnost uporabe strojne kriptografije za pospeševanje delovanja IPsec.
      Integracija kode v glavno vejo se pričakuje v četrtem četrtletju;
    • Zaznani so znatni dosežki pri razvoju portiranja FreeBSD za platformo powerpc64. Glavna pozornost je namenjena zagotavljanju kakovostnega delovanja na sistemih s procesorji IBM POWER8 in POWER9, vendar se opcijsko podpira tudi delovanje na starejših Apple Power Mac, x500 in Amiga A1222. Veja powerpc*/12 še naprej prihaja z gcc 4.2.1, veja powerpc*/13 pa bo kmalu prenesena na llvm90. Od 33306 portov se uspešno zgradi 30514;
    • Portiranje FreeBSD za 64-bitni SoC NXP LS1046A na osnovi procesorja ARMv8 Cortex-A72 z vgrajenim motorjem za pospeševanje obdelave omrežnih paketov, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 in USB 3.0 se nadaljuje. V poročevalnem obdobju je bila implementirana podpora za USB 3.0, SD/MMC, I2C, omrežni vmesnik DPAA in GPIO. V načrtu je podpora za QSPI in optimizacija zmogljivosti omrežnega vmesnika. Zaključek dela in vključitev v glavno vejo se pričakuje v četrtem četrtletju 2019;
    • Gonilnik ena je bil posodobljen s podporo za drugo generacijo omrežnih adapterjev ENAv2 (Elastic Network Adapter), ki se uporabljajo v infrastrukturi Elastic Compute Cloud (EC2) za povezovanje med vozlišči EC2 hitrostmi do 25 Gb/s. V gonilnik ena je bila dodana in preizkušena podpora za NETMAP, izvedena pa je bila tudi prilagoditev razporeditve pomnilnika za vključitev načina LLQ v okoljih Amazon EC2 A1;
  • Aplikacije in sistem portov
    • Komponente grafičnega sklada in porti, povezani z xorg, so bili posodobljeni. Porti, ki uporabljajo USE_XORG in XORG_CAT, so bili preneseni na okvir USES namesto klicanja bsd.xorg.mk preko bsd.port.mk. Takšni porti zdaj vključujejo zastavico „USES=xorg“ v make-dokumentih. Funkcionalnost XORG_CAT je bila ločena iz bsd.xorg.mk in zdaj se aktivira z zastavico „USES=xorg-cat“. Dodano je orodje za neposredno oblikovanje xorg portov iz git repozitorija.
      freedesktop.org, kar omogoča oblikovanje paketov za še neobjavljene različice. V prihodnje je načrtovana priprava orodij za uporabo sistemov za sestavljanje meson namesto autotools za sestavljanje paketov xorg.

      Opravljeno je čiščenje starih paketov xorg, povezanih z že nepodprtimi komponentami, na primer, odstranjen je bil paket x11/libXp, medtem ko so paketi x11/Xxf86misc, x11-fonts/libXfontcache in graphics/libGLw prešli v kategorijo zastare;

    • Opravljeno je bilo delo na izboljšanju podpore za Java 11 in novejše izdaje v FreeBSD, ter na prenosu nekaterih sprememb v veji Java 8. Po tem, ko je bila za FreeBSD realizirana podpora za nove funkcije Java 11, kot so Java Flight Recorder, HotSpot Serviceability Agent, HotSpot Debugger, DTrace, Javac Server, Java Sound in SCTP, se je delo preusmerilo na zagotavljanje uspešnega izvajanja vseh testov za združljivost. Število napak pri izvajanju testov se je zmanjšalo s 50 na 2;
    • Delovna površina KDE Plasma, KDE Frameworks, KDE Applications in Qt je ostala posodobljena in je bila nadgrajena na najnovejše različice;
    • Paketi delovne površine Xfce so bili posodobljeni na izdajo 4.14;
    • Drevo paketov FreeBSD je preseglo mejo 38000 paketov, število odprtih PR nekoliko presega 2000, od katerih je 400 PR še nerazrešenih. V poročevalnem obdobju je bilo izvedenih 7340 sprememb s strani 169 razvijalcev. Dva nova sodelavca (Santhosh Raju in Dmitri Goutnik) sta prejela pravice za zavezo. Objavljena je nova izdaja upravitelja paketov pkg 1.12, ki podpira prevleke v drevesu paketov in čiščenje bsd.sites.mk. Med pomembnimi posodobitvami različic v paketih izstopajo: 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;
    • Razvoj projekta se nadaljuje ClonOS, razvijajočega specializirana distribucija za uvajanje infrastrukture virtualnih strežnikov. Glede nalog, ki jih rešuje, ClonOS spominja na sisteme, kot so Proxmox, Triton (Joyent), OpenStack, OpenNebula in Amazon AWS, glavna razlika pa je uporaba FreeBSD ter možnost upravljanja, uvajanja in vodenja Jail-kontejnerjev FreeBSD in virtualnih okolij na podlagi hipervizorjev Bhyve in Xen. Med nedavnimi spremembami izstopa podpora
      cloud-init za Linux/BSD VM in cloudbase-init za Windows VM, začetek prehoda na uporabo lastnih slik, vključitev Jenkins CI za testiranje zgradb ter nov pkg-repozitorij za namestitev
      ClonOS iz paketov.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster