FreeBSD:n kehitysraportti Q2020 XNUMX

julkaistu raportti FreeBSD-projektin kehityksestä tammikuusta maaliskuuhun 2020. Muutosten joukossa voimme mainita:

  • Yleiset ja systeemiset ongelmat
    • Poistettiin GCC-kääntäjäsarja FreeBSD-CURRENT-lähdepuusta sekä käyttämättömät gperf-, gcov- ja gtc-apuohjelmat (devicetree-kääntäjä). Kaikki alustat, jotka eivät tue Clangia, on vaihdettu käyttämään ulkoisia rakennustyökaluja, jotka on asennettu porteista. Perusjärjestelmä toimitti GCC 4.2.1:n vanhentuneen julkaisun, ja uudempien versioiden integrointi ei ollut mahdollista, koska versiosta 4.2.2 siirtyi GPLv3-lisenssi, jota pidettiin sopimattomana FreeBSD:n peruskomponenteille. GCC:n nykyiset julkaisut, mukaan lukien GCC 9, voidaan silti asentaa paketeista ja porteista.
    • Linux-ympäristön emulointiinfrastruktuuri (Linuxulator) on lisännyt tuen sendfile-järjestelmäkutsulle, TCP_CORK-tilalle (tarvitaan nginxille) ja MAP_32BIT-lipulle (ratkaisee ongelman pakettien käynnistämisessä Ubuntu Bionicin Monon kanssa). DNS-resoluutio-ongelmat käytettäessä glibc:tä uudempaa kuin 2.30 (esimerkiksi CentOS 8:sta) on ratkaistu.
      Jatkuva integraatioinfrastruktuuri tarjoaa mahdollisuuden suorittaa LTP (Linux Testing Project) -töitä Linuxulatorilla testatakseen koodiin tehtyjä parannuksia Linuxin tukemiseksi. Noin 400 testiä epäonnistuu ja vaativat korjauksen (jotkut virheet johtuvat vääristä positiivisista tuloksista, jotkut vaativat triviaaleja korjauksia, mutta toiset vaativat tuen lisäämistä uusille järjestelmäkutsuille korjataksesi). Linuxulator-koodin puhdistamiseksi ja virheenkorjauksen yksinkertaistamiseksi on tehty töitä. Laajennettuja määritteitä ja fexecve-järjestelmäkutsua tukevat korjaustiedostot on valmisteltu, mutta niitä ei ole vielä tarkistettu.

    • Lähdekoodien siirtoa keskitetystä lähdekoodijärjestelmästä Subversionista hajautettuun Git-järjestelmään suorittavan työryhmän kokoukset jatkuvat. Muuttoehdotuksia sisältävä raportti on valmisteilla.
    • В rtld (ajonaikainen linkki) parannettu suora suoritustila ("/libexec/ld-elf.so.1 {polku} {argumentit}").
    • FreeBSD-ytimen fuzzing-testauksen projekti syzkaller-järjestelmällä kehittyy edelleen. Raportointikauden aikana poistettiin ongelmat syzkallerilla tunnistettujen tiedostojen kuvaustaulukoiden kanssa työskentelyn verkkopinossa ja koodissa. Virhediagnoosin jälkeen SCTP-pinoon on lisätty muutoksia virheenkorjauksen helpottamiseksi. Stressi2-joukkoon on lisätty säännöt mahdollisten regressioiden tunnistamiseksi. Lisätty tuki uusien järjestelmäkutsujen fuzz-testaukseen, mukaan lukien copy_file_range(), __realpathat()- ja Capsicum-alijärjestelmäkutsut. Työ jatkuu Linux-emulointikerroksen peittämiseksi fuzz-testauksella. Analysoimme ja poistimme viimeisimmissä Coverity Scan -raporteissa havaitut virheet.
    • Jatkuva integrointijärjestelmä on siirtynyt suorittamaan kaikki päähaaratestit vain clang/lld:llä. RISC-V:tä testattaessa varmistetaan täydellisen levykuvan muodostuminen QEMU-testien suorittamista varten OpenSBI:n avulla. Lisätty uusia tehtäviä kuvien ja powerpc64-virtuaalikoneiden testaukseen (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • Kyua-testipaketin siirtäminen porteista (devel/kyua) perusjärjestelmään on käynnissä ongelmien ratkaisemiseksi (paketit asennetaan hyvin hitaasti), joita syntyy käytettäessä Kyuaa uusissa arkkitehtuureissa, joiden kehitys tapahtuu emulaattorilla tai FPGA. Integrointi perusjärjestelmään yksinkertaistaa merkittävästi sulautettujen alustojen testausta ja rajapintaa jatkuvaan integrointijärjestelmiin.
    • Verkkosiltaohjaimen suorituskyvyn optimoimiseksi on käynnistetty projekti jos_silta, joka käyttää yhtä mutexia sisäisten tietojen lukitsemiseen, mikä ei salli halutun suorituskyvyn saavuttamista järjestelmissä, joissa on suuri määrä vankilaympäristöjä tai virtuaalikoneita, jotka on yhdistetty yhteen verkkoon. Tässä vaiheessa koodiin on lisätty testejä estämään regressioita lukkojen kanssa työskentelyn modernisoinnin aikana. Mahdollisuutta käyttää ConcurrencyKitiä rinnakkaisemaan tiedonsiirtokäsittelijät (bridge_input(), bridge_output(), bridge_forward(), ...) harkitaan.
    • Lisätty uusi sigfastblock-järjestelmäkutsu, joka sallii säikeen määrittää muistilohkon nopealle signaalinkäsittelijälle poikkeuskäsittelijöiden suorituskyvyn parantamiseksi.
    • Ydin lisää tuen ARMv8.1-järjestelmien tukemille LSE (Large System Extension) atomikäskyille. Näitä ohjeita tarvitaan suorituskyvyn parantamiseksi käytettäessä Cavium ThunderX2- ja AWS Graviton 2 -kortteja. Lisätyt muutokset havaitsevat LSE-tuen ja mahdollistavat dynaamisesti niihin perustuvan atomitoteutuksen. Testauksen aikana LSE:n käyttö mahdollisti ytimen kokoamiseen kuluvan prosessorin ajan lyhentämisen 15 %.
    • Suorituskyvyn optimointi on suoritettu ja työkalupakin toimintoja on laajennettu ELF-muodossa oleville suoritettaville tiedostoille.
      Lisätty tuki DWARF-virheenkorjaustietojen välimuistiin tallentamiseen, ratkaistu elfcopy/objcopy-apuohjelmien ongelmat, lisätty DW_AT_ranges -käsittelyä,
      readelf toteuttaa kyvyn purkaa PROTMAX_DISABLE-, STKGAP_DISABLE- ja WXNEEDED-liput sekä Xen- ja GNU Build-ID.

  • Безопасность
    • FreeBSD:n suorituskyvyn parantamiseksi Azure-pilviympäristöissä parhaillaan tarjotaan tukea HyperV Socket -mekanismille, joka mahdollistaa socket-rajapinnan käytön vierasjärjestelmän ja isäntäympäristön väliseen vuorovaikutukseen ilman verkkoa.
    • Parhaillaan on käynnissä FreeBSD:n toistettavien koontiversioiden tarjoaminen, mikä mahdollistaa sen, että järjestelmän komponenttien suoritettavat tiedostot on käännetty täsmälleen ilmoitetuista lähdekoodeista eivätkä sisällä ylimääräisiä muutoksia.
    • Mahdollisuus hallita lisäsuojausmekanismien (ASLR, PROT_MAX, pinoväli, W+X-kartoitus) sisällyttämistä yksittäisten prosessien tasolla on lisätty elfctl-apuohjelmaan.
  • Tallennus- ja tiedostojärjestelmät
    • Parhaillaan ollaan toteuttamassa NFS:n kykyä toimia salatulla TLS 1.3 -tietoliikennekanavalla sen sijaan, että käytettäisiin Kerberosta (sec=krb5p-tila), joka rajoittuu vain RPC-viestien salaukseen ja toteutetaan vain ohjelmistoissa. Uusi toteutus käyttää ytimen toimittamaa TLS-pinoa mahdollistamaan laitteistokiihdytyksen. NFS over TLS -koodi on melkein valmis testattavaksi, mutta vaatii vielä työtä allekirjoitettujen asiakasvarmenteiden tukemiseksi ja ytimen TLS-pinon mukauttamiseksi NFS-tietojen lähettämiseen (vastaanoton korjaustiedostot ovat jo valmiina).
  • Laitteistotuki
    • Kiinalaiselle x86-suorittimelle Hygonille tuen lisäämiseksi AMD-teknologioihin on meneillään;
    • Osana CheriBSD:tä, FreeBSD:n haarukka tutkimusprosessoriarkkitehtuuriin RAKAS (Capability Hardware Enhanced RISC Instructions), ARM Morello -prosessorin tuen käyttöönotto jatkuu, joka tukee Capsicum-projektin tietoturvamalliin perustuvaa CHERI-muistin käytönvalvontajärjestelmää. Morello siru suunnittelevat julkaisu vuonna 2021. Tällä hetkellä työ keskittyy Morelloa tukevan Arm Neoverse N1 -alustan tuen lisäämiseen. Ensimmäinen CheriBSD-portti RISC-V-arkkitehtuurille on esitetty. CheriBSD-kehitys jatkuu MIPS64-arkkitehtuuriin perustuvalle CHERI-viiteprototyypille.
    • FreeBSD-portointi jatkuu 64-bittiselle SoC NXP LS1046A:lle, joka perustuu ARMv8 Cortex-A72 -prosessoriin, jossa on integroitu verkkopakettien käsittelyn kiihdytysmoottori, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 ja USB 3.0. Tällä hetkellä ajureita QorIQ ja LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI valmistellaan siirrettäväksi FreeBSD:n pääkoostumukseen.
    • ena-ajuri on päivitetty versioon 2.1.1 tukemalla toisen sukupolven ENAv2 (Elastinen verkkosovitin) -verkkosovittimia, joita käytetään Elastic Compute Cloud (EC2) -infrastruktuurissa EC2-solmujen välisen tiedonsiirron järjestämiseen jopa 25 Gb/nopeuksilla. s. ENA 2.2.0 -päivitystä valmistellaan.
    • Powerpc64-alustan FreeBSD-portin parannukset jatkuvat. Painopiste on laadukkaan suorituskyvyn tarjoamisessa järjestelmissä, joissa on IBM POWER8- ja POWER9-suorittimet. Raportointikauden aikana FreeBSD-CURRENT siirrettiin käyttämään LLVM/Clang 10.0 -kääntäjää ja lld-linkkeriä GCC:n sijaan. Oletusarvoisesti powerpc64-järjestelmät käyttävät ELFv2 ABI:ta ja ELFv1 ABI:n tuki on lopetettu. FreeBSD-STABLEssa on edelleen gcc 4.2.1. Virio-, aacraid- ja ixl-ajureiden ongelmat on ratkaistu. Powerpc64-järjestelmissä on mahdollista suorittaa QEMU ilman Huge Pages -tukea.
    • Työ RISC-V-arkkitehtuurin tuen toteuttamiseksi jatkuu. Nykyisessä muodossaan FreeBSD käynnistyy jo onnistuneesti SiFive Hifive Unleashed -kortilla, jolle on valmisteltu ajurit
      UART, SPI ja PRCI tukevat OpenSBI- ja SBI 0.2 -laiteohjelmistoja. Katsauskaudella työ keskittyi siirtymiseen GCC:stä clangiin ja lld:hen.

  • Sovellukset ja porttijärjestelmä
    • FreeBSD-porttien kokoelma on ylittänyt 39 tuhannen portin kynnyksen, sulkemattomien PR:iden määrä on hieman yli 2400, joista 640 PR:tä on vielä lajittelematta. Katsauskauden aikana tehtiin 8146 muutosta 173 kehittäjältä. Neljä uutta osallistujaa sai sitoutumisoikeudet (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). Lisätty USES=qca-lippu ja poistettu USES=zope-lippu (yhteensopimattomuuden vuoksi Python 3:n kanssa). Python 2.7:n poistaminen porttipuusta on käynnissä - kaikki Python 2 -pohjaiset portit on siirrettävä Python 3:een tai ne poistetaan. Pkg-pakettien hallinta on päivitetty versioon 1.13.2.
    • Päivitetyt grafiikkapinokomponentit ja xorgiin liittyvät portit.
      X.org-palvelin on päivitetty versioon 1.20.8 (aiemmin toimitettu 1.18-haaralle), minkä ansiosta FreeBSD saattoi oletuksena käyttää udev/evdev-taustaa syöttölaitteiden käsittelyyn. Mesa-paketti on oletusarvoisesti vaihdettu käyttämään DRI3-laajennusta DRI2:n sijaan. Näytönohjaimet, syöttölaitepino ja drm-kmod-komponentit (portti, joka mahdollistaa amdgpu-, i915- ja radeon DRM-moduuleiden toiminnan käyttämällä linuxkpi-kehystä yhteensopivuus Linux-ytimen Direct Rendering Managerin kanssa) on käynnissä. ajantasalla.

    • KDE Plasma -työpöytä, KDE-kehykset, KDE-sovellukset ja Qt pidetään ajan tasalla ja päivitetään uusimpiin julkaisuihin. Uusi sovellus kstars (tähtien atlas) on lisätty portteihin.
    • Regressiiviset muutokset xfwm4-ikkunanhallinnassa on pyritty eliminoimaan, kun Xfce päivitettiin versioon 4.14 (esimerkiksi artefakteja ilmaantui ikkunoiden koristelussa).
    • Wine-portti on päivitetty julkaisemaan Wine 5.0 (aiemmin tarjottiin 4.0.3).
    • Versiosta 1.14 alkaen Go-kielen kääntäjä lisäsi virallisen tuen ARM64-arkkitehtuurille FreeBSD 12.0:lle.
    • Perusjärjestelmän OpenSSH on päivitetty versioon 7.9p1.
    • Sysctlmibinfo2-kirjasto on toteutettu ja sijoitettu portteihin (devel/libsysctlmibinfo2), joka tarjoaa API:n sysctl MIB:n käyttämiseen ja sysctl-nimien kääntämiseen objektitunnisteiksi (OID).
    • Jakelupäivitys on luotu NomadBSD 1.3.1, joka on FreeBSD:n versio, joka on sovitettu käytettäväksi kannettavana työpöytänä, joka voidaan käynnistää USB-asemalta. Graafinen ympäristö perustuu ikkunanhallintaan Avaa laatikko. Käytetään asemien asennukseen DSBMD (asennus CD9660, FAT, HFS+, NTFS, Ext2/3/4 on tuettu), langattoman verkon määrittäminen - wifimgrja äänenvoimakkuuden säätämiseen - DSBMixer.
    • Aloittaja työ täydellisen dokumentaation kirjoittamisesta vankilaympäristön johtajalle voida. Pot 0.11.0 valmistellaan julkaisuun, joka sisältää työkalut verkkopinon hallintaan.

Lähde: opennet.ru

Lisää kommentti