FreeBSD attÄ«stÄ«bas pārskats par 2020. gada pirmo ceturksni

publicēts ziņojums par FreeBSD projekta attīstību no 2020. gada janvāra līdz martam. Starp izmaiņām mēs varam atzīmēt:

  • VispārÄ«gi un sistēmas jautājumi
    • No FreeBSD-CURRENT avota koka tika noņemta GCC kompilatoru kopa, kā arÄ« neizmantotās gperf, gcov un gtc (devicetree kompilators) utilÄ«tas. Visas platformas, kas neatbalsta Clang, ir pārslēgtas uz ārējo veidoÅ”anas rÄ«ku izmantoÅ”anu, kas instalēti no portiem. Bāzes sistēma nosÅ«tÄ«ja novecojuÅ”u GCC 4.2.1 versiju, un jaunāku versiju integrācija nebija iespējama, jo 4.2.2 pāreja uz GPLv3 licenci, kas tika uzskatÄ«ta par nepiemērotu FreeBSD bāzes komponentiem. PaÅ”reizējos GCC laidienus, tostarp GCC 9, joprojām var instalēt no pakotnēm un portiem.
    • Linux vides emulācijas infrastruktÅ«ra (Linuxulator) ir pievienojusi atbalstu sendfile sistēmas izsaukumam, TCP_CORK režīmam (nepiecieÅ”ams nginx) un karodziņam MAP_32BIT (atrisina problēmu ar pakotņu palaiÅ”anu ar Mono no Ubuntu Bionic). Problēmas ar DNS izŔķirtspēju, izmantojot glibc, kas jaunākas par 2.30 (piemēram, no CentOS 8), ir atrisinātas.
      Nepārtrauktās integrācijas infrastruktÅ«ra nodroÅ”ina iespēju palaist LTP (Linux Testing Project) darbus, kuros darbojas Linuxulator, lai pārbaudÄ«tu koda uzlabojumus Linux atbalstam. Aptuveni 400 testu neizdodas un ir jālabo (dažas kļūdas izraisa kļūdaini pozitÄ«vi rezultāti, dažām ir nepiecieÅ”ami nenozÄ«mÄ«gi labojumi, bet ir arÄ« citi, kuru laboÅ”anai ir jāpievieno atbalsts jauniem sistēmas izsaukumiem). Ir veikts darbs, lai notÄ«rÄ«tu Linuxulator kodu un vienkārÅ”otu atkļūdoÅ”anu. Ir sagatavoti ielāpi ar paplaÅ”ināto atribÅ«tu un fexecve sistēmas izsaukuma atbalstu, bet vēl nav pārskatÄ«ti.

    • Turpinās avota kodu migrācijas veikÅ”anai no centralizētās avota kontroles sistēmas Subversion uz decentralizēto sistēmu Git izveidotās darba grupas sēdes. Tiek gatavots ziņojums ar priekÅ”likumiem migrācijai.
    • Š’ rtld (izpildlaika saistÄ«tājs) uzlabots tieŔās izpildes režīms (ā€œ/libexec/ld-elf.so.1 {path} {arguments}ā€).
    • FreeBSD kodola izplÅ«des testÄ“Å”anas projekts, izmantojot sistēmu syzkaller, turpina attÄ«stÄ«ties. Pārskata periodā tika novērstas problēmas tÄ«kla stekā un kodā darbam ar failu deskriptoru tabulām, kas identificētas, izmantojot syzkaller. Pēc kļūdu diagnostikas SCTP stekam ir pievienotas izmaiņas, lai atvieglotu atkļūdoÅ”anu. Stress2 kopai ir pievienoti noteikumi, lai identificētu iespējamās regresijas. Pievienots atbalsts jaunu sistēmas izsaukumu fuzz testÄ“Å”anai, tostarp copy_file_range(), __realpathat() un Capsicum apakÅ”sistēmas izsaukumiem. Turpinās darbs, lai Linux emulācijas slāni pārklātu ar izplÅ«des testÄ“Å”anu. Mēs analizējām un novērsām jaunākajos Coverity Scan pārskatos norādÄ«tās kļūdas.
    • Nepārtrauktās integrācijas sistēma ir pārgājusi uz visu galvas zaru testu izpildi, tikai izmantojot clang/lld. Pārbaudot RISC-V, tiek nodroÅ”ināta pilnÄ«ga diska attēla veidoÅ”ana, lai veiktu testus QEMU, izmantojot OpenSBI. Pievienoti jauni uzdevumi attēlu un powerpc64 virtuālo maŔīnu testÄ“Å”anai (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • Notiek darbs pie Kyua testa komplekta pārsÅ«tÄ«Å”anas no portiem (devel/kyua) uz bāzes sistēmu, lai atrisinātu problēmas (pakotnes tiek instalētas ļoti lēni), kas rodas, izmantojot Kyua jaunām arhitektÅ«rām, kuru izstrāde tiek veikta, izmantojot emulatoru vai FPGA. Integrācija bāzes sistēmā ievērojami vienkārÅ”os iegulto platformu testÄ“Å”anu un saskarni ar nepārtrauktas integrācijas sistēmām.
    • Ir uzsākts projekts, lai optimizētu tÄ«kla tilta draivera veiktspēju ja_tilts, kas iekŔējo datu bloÄ·Ä“Å”anai izmanto vienu mutex, kas neļauj sasniegt vēlamo veiktspēju sistēmās ar lielu skaitu cietuma vidi vai virtuālo maŔīnu, kas apvienotas vienā tÄ«klā. Å ajā posmā kodam ir pievienoti testi, lai novērstu regresiju raÅ”anos darba ar slēdzenēm modernizācijas laikā. Tiek apsvērta iespēja izmantot ConcurrencyKit datu pārsÅ«tÄ«Å”anas apdarinātāju (bridge_input(), bridge_output(), bridge_forward(), ...) paralēlizÄ“Å”anai.
    • Pievienots jauns sigfastblock sistēmas izsaukums, lai ļautu pavedienam norādÄ«t atmiņas bloku ātram signālu apstrādātājam, lai uzlabotu izņēmumu apstrādātāju veiktspēju.
    • Kodols pievieno atbalstu LSE (Large System Extension) atomu instrukcijām, ko atbalsta ARMv8.1 sistēmas. Å Ä«s instrukcijas ir nepiecieÅ”amas, lai uzlabotu veiktspēju, darbojoties uz Cavium ThunderX2 un AWS Graviton 2 paneļiem. Pievienotās izmaiņas nosaka LSE atbalstu un dinamiski iespējo uz tām balstÄ«to atomu ievieÅ”anu. TestÄ“Å”anas laikā LSE izmantoÅ”ana ļāva par 15% samazināt procesora laiku, kas pavadÄ«ts kodola montāžā.
    • Ir veikta veiktspējas optimizācija un paplaÅ”ināta rÄ«kkopas funkcionalitāte izpildāmajiem failiem ELF formātā.
      Pievienots atbalsts DWARF atkļūdoÅ”anas informācijas saglabāŔanai keÅ”atmiņā, atrisinātas problēmas elfcopy/objcopy utilÄ«tprogrammās, pievienota DW_AT_ranges apstrāde,
      readelf ievieÅ” iespēju atÅ”ifrēt karogus PROTMAX_DISABLE, STKGAP_DISABLE un WXNEEDED, kā arÄ« Xen un GNU Build-ID.

  • DroŔība
    • Lai uzlabotu FreeBSD veiktspēju Azure mākoņa vidēs, notiek darbs pie HyperV Socket mehānisma atbalsta nodroÅ”ināŔanas, kas ļauj izmantot ligzdas interfeisu mijiedarbÄ«bai starp viesu sistēmu un saimniekdatora vidi, neveidojot tÄ«klu.
    • Notiek darbs pie atkārtojamu FreeBSD bÅ«vējumu nodroÅ”ināŔanas, kas ļauj nodroÅ”ināt, ka sistēmas komponentu izpildāmie faili tiek kompilēti tieÅ”i no deklarētajiem pirmkodiem un nesatur ārējas izmaiņas.
    • Elfctl utilÄ«tai ir pievienota iespēja kontrolēt papildu aizsardzÄ«bas mehānismu (ASLR, PROT_MAX, stack gap, W+X kartÄ“Å”ana) iekļauÅ”anu atseviŔķu procesu lÄ«menÄ«.
  • UzglabāŔanas un failu sistēmas
    • Notiek darbs, lai ieviestu iespēju NFS darboties pa Å”ifrētu sakaru kanālu, kura pamatā ir TLS 1.3, nevis izmantot Kerberos (sec=krb5p režīms), kas aprobežojas ar tikai RPC ziņojumu Å”ifrÄ“Å”anu un ir ieviests tikai programmatÅ«rā. Jaunā ievieÅ”ana izmanto kodola nodroÅ”ināto TLS steku, lai iespējotu aparatÅ«ras paātrinājumu. NFS over TLS kods ir gandrÄ«z gatavs testÄ“Å”anai, taču joprojām ir jāstrādā, lai atbalstÄ«tu parakstÄ«tos klientu sertifikātus un pielāgotu kodola TLS steku NFS datu sÅ«tÄ«Å”anai (saņemÅ”anas ielāpi jau ir gatavi).
  • AparatÅ«ras atbalsts
    • Notiek darbs, lai pievienotu atbalstu Ķīnas x86 CPU Hygon, kura pamatā ir AMD tehnoloÄ£ijas;
    • Kā daļa no CheriBSD, FreeBSD dakÅ”a pētniecÄ«bas procesoru arhitektÅ«rai ČERI (Capability Hardware Enhanced RISC Instructions), turpinās ARM Morello procesora atbalsta ievieÅ”ana, kas atbalstÄ«s CHERI atmiņas piekļuves kontroles sistēmu, kuras pamatā ir Capsicum projekta droŔības modelis. Morello čips plāno izlaidums 2021. gadā. PaÅ”laik darbs ir vērsts uz atbalsta pievienoÅ”anu Arm Neoverse N1 platformai, kas nodroÅ”ina Morello darbÄ«bu. Ir prezentēts sākotnējais CheriBSD ports RISC-V arhitektÅ«rai. CheriBSD izstrāde turpinās CHERI atsauces prototipam, kura pamatā ir MIPS64 arhitektÅ«ra.
    • FreeBSD pārneÅ”ana turpinās 64 bitu SoC NXP LS1046A, kuras pamatā ir ARMv8 Cortex-A72 procesors ar integrētu tÄ«kla pakeÅ”u apstrādes paātrināŔanas dzinēju, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 un USB 3.0. Å obrÄ«d tiek gatavoti draiveri QorIQ un LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI pārejai uz galveno FreeBSD sastāvu.
    • ena draiveris ir atjaunināts uz versiju 2.1.1 ar atbalstu otrās paaudzes tÄ«kla adapteriem ENAv2 (ElastÄ«gais tÄ«kla adapteris), ko izmanto Elastic Compute Cloud (EC2) infrastruktÅ«rā, lai organizētu komunikāciju starp EC2 mezgliem ar ātrumu lÄ«dz 25 Gb/ s. Tiek gatavots ENA 2.2.0 atjauninājums.
    • Powerpc64 platformas FreeBSD porta uzlabojumi turpinās. Galvenā uzmanÄ«ba tiek pievērsta kvalitatÄ«vas veiktspējas nodroÅ”ināŔanai sistēmās ar IBM POWER8 un POWER9 procesoriem. Pārskata periodā FreeBSD-CURRENT tika pārcelts uz LLVM/Clang 10.0 kompilatoru un lld saiti, nevis GCC. Pēc noklusējuma powerpc64 sistēmas izmanto ELFv2 ABI, un ELFv1 ABI atbalsts ir pārtraukts. FreeBSD-STABLE joprojām ir gcc 4.2.1. Problēmas ar virtio, aacraid un ixl draiveriem ir atrisinātas. Powerpc64 sistēmās ir iespējams palaist QEMU bez milzÄ«go lapu atbalsta.
    • Turpinās darbs, lai ieviestu atbalstu RISC-V arhitektÅ«rai. PaÅ”reizējā formā FreeBSD jau veiksmÄ«gi sāk darboties SiFive Hifive Unleashed platē, kurai ir sagatavoti draiveri
      UART, SPI un PRCI atbalsta OpenSBI un SBI 0.2 programmaparatūru. Pārskata periodā darbs bija vērsts uz migrāciju no GCC uz clang un lld.

  • Lietojumprogrammas un portu sistēma
    • FreeBSD portu kolekcija ir pārkāpusi 39 tÅ«kstoÅ”u portu slieksni, neslēgto PR skaits nedaudz pārsniedz 2400, no kuriem vēl nav sakārtoti 640 PR. Pārskata periodā veiktas 8146 izmaiņas no 173 izstrādātājiem. Četri jauni dalÄ«bnieki saņēma apņemÅ”anās tiesÄ«bas (Loiks Bartoleti, Mikaels Urankars, Kails Evanss, Lorenco Salvadore). Pievienots USES=qca karodziņŔ un noņemts USES=zope karogs (nesaderÄ«bas ar Python 3 dēļ). Notiek darbs pie Python 2.7 noņemÅ”anas no portu koka ā€“ visi uz Python 2 balstÄ«tie porti ir jāpārnes uz Python 3 vai arÄ« tie tiks noņemti. Pkg pakotņu pārvaldnieks ir atjaunināts, lai atbrÄ«votu 1.13.2.
    • Atjaunināti grafikas steka komponenti un ar xorg saistÄ«tie porti.
      X.org serveris ir atjaunināts uz versiju 1.20.8 (iepriekÅ” piegādāts 1.18 filiālei), kas ļāva FreeBSD pēc noklusējuma izmantot udev/evdev aizmugursistēmu ievades ierīču apstrādei. Mesa pakotne ir pārslēgta, lai pēc noklusējuma izmantotu paplaÅ”inājumu DRI3, nevis DRI2. Notiek darbs, lai saglabātu grafikas draiverus, ievades ierīču steku un drm-kmod komponentus (portu, kas nodroÅ”ina amdgpu, i915 un radeon DRM moduļu darbÄ«bu, izmantojot linuxkpi ietvaru saderÄ«bai ar Linux kodola tieŔās renderÄ“Å”anas pārvaldnieku) aktuāls.

    • KDE Plasma darbvirsma, KDE Frameworks, KDE lietojumprogrammas un Qt tiek atjauninātas un atjauninātas lÄ«dz jaunākajām versijām. Portiem ir pievienota jauna aplikācija kstars (zvaigžņu atlants).
    • Ir veikts darbs, lai novērstu regresÄ«vās izmaiņas xfwm4 logu pārvaldniekā, kas parādÄ«jās pēc Xfce atjaunināŔanas uz versiju 4.14 (piemēram, artefakti parādÄ«jās, dekorējot logus).
    • Wine ports ir atjaunināts, lai atbrÄ«votu Wine 5.0 (iepriekÅ” tika piedāvāta versija 4.0.3).
    • Sākot ar versiju 1.14, Go valodas kompilators pievienoja oficiālu atbalstu ARM64 arhitektÅ«rai FreeBSD 12.0.
    • OpenSSH bāzes sistēmā ir atjaunināts, lai atbrÄ«votu versiju 7.9p1.
    • Sysctlmibinfo2 bibliotēka ir ieviesta un ievietota portos (devel/libsysctlmibinfo2), nodroÅ”inot API piekļuvei sysctl MIB un sysctl nosaukumu tulkoÅ”anai objektu identifikatoros (OID).
    • Ir izveidots izplatÄ«Å”anas atjauninājums NomadBSD 1.3.1, kas ir FreeBSD izdevums, kas pielāgots lietoÅ”anai kā pārnēsājama darbvirsma, kuru var sāknēt no USB diska. Grafiskās vides pamatā ir logu pārvaldnieks Openbox. Izmanto piedziņu montāžai DSBMD (tiek atbalstÄ«ts montāžas CD9660, FAT, HFS+, NTFS, Ext2/3/4), lai konfigurētu bezvadu tÄ«klu - wifimgrun lai kontrolētu skaļumu - DSBMixer.
    • Sākās strādāt par pilnÄ«gas dokumentācijas rakstÄ«Å”anu cietuma vides pārvaldniekam var. IzlaiÅ”anai tiek gatavots Pot 0.11.0, kurā bÅ«s iekļauti rÄ«ki tÄ«kla steka pārvaldÄ«bai.

Avots: opennet.ru

Pievieno komentāru