FreeBSD Garapenari buruzko Txostena 2020ko QXNUMX

argitaratua FreeBSD proiektuaren garapenari buruzko txostena 2020ko urtarriletik martxora. Aldaketen artean honako hauek nabarmendu ditzakegu:

  • Gai orokorrak eta sistemikoak
    • FreeBSD-CURRENT iturburu-zuhaitzetik GCC konpiladore multzoa kendu zen, baita erabili gabeko gperf, gcov eta gtc (devicetree konpilatzailea) utilitateak ere. Clang onartzen ez duten plataforma guztiak portuetatik instalatutako kanpoko eraikuntza tresnak erabiltzera aldatu dira. Oinarrizko sistemak GCC 4.2.1 bertsio zaharkitu bat bidali zuen, eta bertsio berrien integrazioa ezin izan zen 4.2.2 GPLv3 lizentziara igaro baitzen, FreeBSD oinarrizko osagaietarako desegokia zelako. GCCren egungo bertsioak, GCC 9 barne, paketeetatik eta ataketatik instala daitezke oraindik.
    • Linux ingurunearen emulazio azpiegiturak (Linuxulator) sendfile sistema deirako laguntza gehitu du, TCP_CORK modua (beharrezkoa nginx-erako) eta MAP_32BIT bandera (Ubuntu Bionic-etik Mono-rekin paketeak abiarazteko arazoa konpontzen du). DNS ebazteko arazoak konpondu dira glibc 2.30 baino berriagoa erabiltzean (adibidez, CentOS 8tik).
      Etengabeko integrazio-azpiegiturak Linuxulator exekutatzen duten LTP (Linux Testing Project) lanak exekutatzeko aukera eskaintzen du, kodean Linux-en laguntzarako egindako hobekuntzak probatzeko. 400 proba inguruk huts egiten dute eta konpondu behar dute (akats batzuk positibo faltsuek eragindakoak dira, batzuk konponketa hutsalak behar dituzte, baina badira sistema dei berrietarako laguntza gehitzea eskatzen dutenak konpontzeko). Lan egin da Linuxulator kodea garbitzeko eta arazketa errazteko. Atributu hedatuak eta fexecve sistema-deiak onartzen dituzten adabakiak prestatu dira, baina oraindik ez dira berrikusi.

    • Iturburu-kodeen migrazioa burutzeko sortutako lantaldearen bilerek aurrera jarraitzen dute Subversion iturburu-kontrol sistema zentralizatutik Git sistema deszentralizatura. Migraziorako proposamenekin txosten bat prestatzen ari da.
    • Π’ rtld (exekuzio-denborako estekatzailea) zuzeneko exekuzio modua hobetu da ("/libexec/ld-elf.so.1 {bidea} {argumentuak}").
    • Syzkaller sistema erabiliz FreeBSD nukleoaren proba nahasietarako proiektuak garatzen jarraitzen du. Txostenaren aldian, syzkaller erabiliz identifikatutako fitxategi deskribatzaileen taulekin lan egiteko sareko pila eta kodean arazoak ezabatu ziren. Errore-diagnostikoa egin ondoren, aldaketak gehitu dira SCTP pilara arazketa errazteko. Stres2 multzoari arauak gehitu zaizkio erregresio posibleak identifikatzeko. Sistema dei berrien fuzz probak egiteko laguntza gehitu da, copy_file_range(), __realpathat() eta Capsicum azpisistemako deiak barne. Lanak jarraitzen du Linux emulazio geruza fuzz testekin estaltzen. Coverity Scan-en azken txostenetan adierazitako akatsak aztertu eta ezabatu ditugu.
    • Etengabeko integrazio-sistema buru-adarraren proba guztiak clang/lld erabiliz soilik exekutatzeko aldatu da. RISC-V probak egitean, diskoaren irudi osoa sortzea ziurtatzen da QEMUn probak egiteko OpenSBI erabiliz. Irudiak eta powerpc64 makina birtualak probatzeko zeregin berriak gehitu dira (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • Kyua proba-multzoa portuetatik (devel/kyua) oinarrizko sistemara transferitzeko lanak egiten ari dira (paketeak oso poliki instalatzen dira) arkitektura berrietan Kyua erabiltzean sortzen diren arazoak konpontzeko (paketeak oso poliki instalatzen dira), eta horien garapena emuladore baten bidez edo emuladore baten bidez egiten da. FPGA. Oinarrizko sisteman integratzeak plataforma txertatuen probak eta etengabeko integrazio sistemekin interfazea erraztuko ditu.
    • Sareko zubi-gidariaren errendimendua optimizatzeko proiektu bat jarri da abian bada_zubia, barneko datuak blokeatzeko mutex bakarra erabiltzen duena, eta horrek ez du baimentzen nahi den errendimendua lortzen sare bakarrean bateratutako kartzela-ingurune edo makina birtualen kopuru handia duten sistemetan. Fase honetan, probak gehitu zaizkio kodeari, sarrailekin lan egiteko modernizazioan erregresioak gerta ez daitezen. Datu-transferentzia-kudeatzaileak (bridge_input(), bridge_output(), bridge_forward(), ...) paralelizatzeko ConcurrencyKit erabiltzeko aukera aztertzen ari da.
    • Sigfastblock sistema dei berri bat gehitu da hari bati memoria bloke bat zehaztea seinale-kudeatzaile azkarrerako salbuespen-kudeatzaileen errendimendua hobetzeko.
    • Nukleoak ARMv8.1 sistemek onartzen duten LSE (Large System Extension) instrukzio atomikoetarako euskarria gehitzen du. Argibide hauek beharrezkoak dira errendimendua hobetzeko Cavium ThunderX2 eta AWS Graviton 2 plaketan exekutatzen ari zarenean. Gehitutako aldaketek LSE laguntza detektatzen dute eta horietan oinarritutako inplementazio atomikoa modu dinamikoan gaitzen dute. Probetan zehar, LSE erabiltzeak nukleoa muntatzean igarotako prozesadorearen denbora % 15 murriztea ahalbidetu zuen.
    • Errendimenduaren optimizazioa egin da eta tresna-kitaren funtzionaltasuna ELF formatuan dauden fitxategi exekutagarrietarako zabaldu da.
      DWARF arazketa-informazioa gordetzeko laguntza gehitu da, elfcopy/objcopy utilitateetan arazoak konpondu dira, DW_AT_ranges prozesatzea gehitu da,
      readelf-ek PROTMAX_DISABLE, STKGAP_DISABLE eta WXNEEDED banderak deskodetzeko gaitasuna ezartzen du, baita Xen eta GNU Build-ID ere.

  • Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ
    • FreeBSD-ren errendimendua hobetzeko Azure hodei-inguruneetan, HyperV Socket mekanismoari euskarria emateko lanean ari dira, sistema gonbidatuaren eta ostalari-ingurunearen arteko elkarrekintzarako socket interfazea erabiltzeko aukera ematen baitu sarerik ezarri gabe.
    • FreeBSD-ren eraikuntza errepikagarriak eskaintzeko lanak egiten ari dira, sistemaren osagaien fitxategi exekutagarriak deklaratutako iturburu-kodeetatik zehatz-mehatz konpilatzen direla eta kanpoko aldaketarik ez dutela ziurtatzea.
    • Elfctl erabilgarritasunari babes-mekanismo gehigarriak (ASLR, PROT_MAX, pila-hutsunea, W+X mapak) prozesu indibidualetan sartzea kontrolatzeko gaitasuna gehitu zaio.
  • Biltegiratze- eta fitxategi-sistemak
    • Lan egiten ari da NFS-k TLS 1.3-n oinarritutako enkriptatutako komunikazio kanal batean funtzionatzeko gaitasuna ezartzeko, Kerberos (sec=krb5p modua) erabili beharrean, RPC mezuak soilik enkriptatzera mugatzen dena eta softwarean soilik inplementatzen dena. Inplementazio berriak nukleoak emandako TLS pila erabiltzen du hardware azelerazioa gaitzeko. TLS bidezko NFS kodea ia probatzeko prest dago, baina oraindik lana behar du sinatutako bezeroen ziurtagiriak onartzeko eta nukleoko TLS pila egokitzeko NFS datuak bidaltzeko (jasotzeko adabakiak prest daude dagoeneko).
  • Hardware laguntza
    • AMD teknologietan oinarritutako x86 CPU Hygon txinatarrari euskarria gehitzeko lanak egiten ari dira;
    • CheriBSD, ikerketa-prozesadore arkitekturarako FreeBSD-ren sardexka bat CHERI (Capability Hardware Enhanced RISC Instructions), ARM Morello prozesadorearen euskarria inplementatzen jarraitzen du, zeinak CHERI memoria sarbide kontrolatzeko sistema onartzen duen Capsicum proiektuaren segurtasun ereduan oinarrituta. Morello txipa planifikatzen ari dira 2021ean kaleratu. Gaur egun Morellok boterea duen Arm Neoverse N1 plataformarako euskarria gehitzera bideratzen da lana. CheriBSD-ren hasierako ataka RISC-V arkitekturarako aurkeztu da. CheriBSD garapenak jarraitzen du MIPS64 arkitekturan oinarritutako CHERI erreferentziako prototipoarentzat.
    • FreeBSD porturatzeak jarraitzen du 64 biteko SoC NXP LS1046A ARMv8 Cortex-A72 prozesadorean oinarritutako sare-paketeen azelerazio-motor integratua, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 eta USB 3.0. Gaur egun, QorIQ eta LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI kontrolatzaileak FreeBSD konposizio nagusira transferitzeko prestatzen ari dira.
    • Ena kontrolatzailea 2.1.1 bertsiora eguneratu da Elastic Compute Cloud (EC2) azpiegituran erabiltzen diren ENAv2 (Elastic Network Adapter) sare-egokitzaileen bigarren belaunaldirako laguntzarekin, EC2 nodoen arteko komunikazioa 25 Gb/ arteko abiaduran antolatzeko. s. ENA 2.2.0 eguneratzea prestatzen ari da.
    • Powerpc64 plataformarako FreeBSD ataka hobetzen jarraitzen dute. IBM POWER8 eta POWER9 prozesadoreak dituzten sistemetan kalitatezko errendimendua eskaintzea da arreta. Txostenaren aldian, FreeBSD-CURRENT transferitu zen GCCren ordez LLVM/Clang 10.0 konpilatzailea eta lld estekatzailea erabiltzeko. Lehenespenez, powerpc64 sistemek ELFv2 ABI erabiltzen dute eta ELFv1 ABIrako laguntza eten egin da. FreeBSD-STABLE-k gcc 4.2.1 du oraindik. Virtio, aacraid eta ixl gidarien arazoak konpondu dira. Powerpc64 sistemetan QEMU exekutatu daiteke Huge Pages laguntzarik gabe.
    • Lanak jarraitzen du RISC-V arkitekturarako euskarria ezartzeko. Oraingo moduan, FreeBSD dagoeneko arrakastaz abiarazten da SiFive Hifive Unleashed taulan, eta horretarako gidariak prestatu dira.
      UART, SPI eta PRCI, OpenSBI eta SBI 0.2 firmwarea onartzen dute. Txostenaren aldian, lana GCCtik clang eta lld-era migrazioan zentratu zen.

  • Aplikazioak eta portu-sistema
    • FreeBSD portuen bildumak 39 mila porturen atalasea gainditu du, itxi gabeko PR kopurua 2400 baino apur bat gainditzen du, eta horietatik 640 PR oraindik ez dira sailkatu. Txostenaren aldian, 8146 aldaketa egin ziren 173 garatzaileengandik. Lau parte hartzaile berriek konpromisoa hartzeko eskubideak jaso zituzten (LoΓ―c Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). USES=qca bandera gehitu eta USES=zope bandera kendu da (Python 3-rekin bateraezintasuna dela eta). Python 2.7 portuen zuhaitzetik kentzeko lanak egiten ari dira - Python 2-n oinarritutako ataka guztiak Python 3-ra eraman behar dira edo kendu egingo dira. pkg pakete kudeatzailea 1.13.2 kaleratzeko eguneratu da.
    • Grafiko pilaren osagaiak eta xorg erlazionatutako atakak eguneratuak.
      X.org zerbitzaria 1.20.8 bertsiora eguneratu da (lehen 1.18 adarrean bidalia), eta horri esker FreeBSD-k udev/evdev backend-a lehenetsi zuen sarrerako gailuak kudeatzeko. Mesa paketea lehenespenez DRI3 luzapena erabiltzeko ordez DRI2 aldatu da. Kontrolatzaile grafikoak, sarrerako gailu pila eta drm-kmod osagaiak (amdgpu, i915 eta radeon DRM moduluen funtzionamendua ahalbidetzen duen ataka bat, Linux nukleoaren Direct Rendering Manager-arekin bateragarri izateko linuxkpi esparrua erabiliz) mantentzeko lanak egiten ari dira. eguneratuta.

    • KDE Plasma mahaigaina, KDE Frameworks, KDE Aplikazioak eta Qt eguneratuta eta azken bertsioetara eguneratzen dira. Aplikazio berri bat kstars (star atlas) gehitu da portuetara.
    • Xfce 4 bertsiora eguneratu ondoren agertutako xfwm4.14 leiho-kudeatzailean aldaketa atzerakoiak ezabatzeko lana egin da (adibidez, leihoak apaintzerakoan artefaktuak agertzen ziren).
    • Wine ataka eguneratu da Wine 5.0 askatzeko (aurretik 4.0.3 eskaintzen zen).
    • 1.14 bertsiotik hasita, Go hizkuntza-konpilatzaileak laguntza ofiziala gehitu zuen ARM64 arkitekturarako FreeBSD 12.0rako.
    • Oinarrizko sistemako OpenSSH eguneratu da 7.9p1 askatzeko.
    • Sysctlmibinfo2 liburutegia inplementatu eta portuetan jarri da (devel/libsysctlmibinfo2), sysctl MIBra atzitzeko API bat eskainiz eta sysctl izenak objektu-identifikatzaileetara (OID) itzultzeko.
    • Banaketa eguneratzea sortu da NomadBSD 1.3.1, hau da, FreeBSDren edizio bat USB disko batetik abiarazteko mahaigain eramangarri gisa erabiltzeko egokitua. Ingurune grafikoa leiho kudeatzaile batean oinarritzen da Openbox. Unitateak muntatzeko erabiltzen da DSBMD (CD9660, FAT, HFS+, NTFS, Ext2/3/4 muntatzea onartzen da), haririk gabeko sare bat konfiguratzeko - wifimgr, eta bolumena kontrolatzeko - DSBMixer.
    • Hasita lan Kartzelako inguruneko kudeatzailearentzat dokumentazio osoa idaztean pot. Pot 0.11.0 askatzeko prestatzen ari da, sareko pila kudeatzeko tresnak barne hartuko dituena.

Iturria: opennet.ru

Gehitu iruzkin berria