FreeBSD:n kehitysraportti Q2019 XNUMX

julkaistu raportti FreeBSD-projektin kehityksestä heinä-syyskuussa 2019. Muutosten joukossa voimme mainita:

  • Yleiset ja systeemiset ongelmat
    • Ydintiimi on yleisesti hyväksynyt mahdollisuuden sisällyttää koodia järjestelmään, jota jaetaan BSD-lisenssillä lisäpatenttisopimuksella (BSD+patentti), mutta päätös sisällyttää jokainen komponentti tämän luvan mukaiseen järjestelmään on hyväksyttävä erikseen;
    • Lähdekoodien siirtoa keskitetystä Subversion-lähdekoodijärjestelmästä hajautettuun Git-järjestelmään perustetun työryhmän ensimmäinen kokous pidettiin. Keskustelu migraation toteutettavuudesta on edelleen käynnissä ja päätöksiä monista asioista on vielä tekemättä (esimerkiksi mitä tehdä contrib/:lle, onko tarpeen luoda uudelleen tiivisteitä nykyisessä git-varastossa ja miten parhaiten testata sitoutuu);
    • NetBSD:ltä siirretty KCSAN (Kernel Concurrency Sanitizer) -työkalusarja, jonka avulla voit havaita kilpailuolosuhteet eri prosessoreilla toimivien ytimen säikeiden välillä;
    • Clangin sisäänrakennetun kokoajan (IAS) käyttäminen on meneillään GNU binutils assemblerin sijaan;
    • Linux-ympäristön emulointiinfrastruktuuri (Linuxulator) on mukautettu toimimaan ARM64-arkkitehtuurissa. Toteutettu "renameat2" -järjestelmäkutsu. Strace-apuohjelmaa on parannettu ongelmien diagnosoimiseksi Linuxulatorissa toimivissa Linux-suoritustiedostoissa. Kaatumisongelma, kun suoritettavat tiedostot linkitetään tuoreeseen glibc:hen, on ratkaistu. Portit Linux-komponenteilla Linuxulatorille on päivitetty CentOS 7.7:ään;
    • Osana Google Summer of Code -ohjelmaa opiskelijat suorittivat onnistuneesti kuusi projektia: valmisteltiin yhtenäisen (IPv4/IPv6) ping-apuohjelman toteutus, kehitettiin työkaluja palomuurien testaamiseen ja ytimen virheiden tunnistamiseen (Kernel sanitizer), mac_ipacl. moduuli ehdotettiin, koodi kirjoitettiin virtuaalisen muistin pakkaamiseen ja portin rakennusprosessin erottamiseksi paikallisesta asennuksesta on tehty työtä;
    • FreeBSD-ytimen fuzzing-testauksen projekti järjestelmän avulla kehittyy edelleen syzkaller. Raportointikauden aikana syzkallerilla tunnistettiin ja korjattiin yli kymmenen virhettä. Syzkallerin suorittamiseksi bhyveen perustuvissa virtuaalikoneen on erillinen palvelin, joka käyttää
      syzbot on testannut erilaisia ​​FreeBSD-alijärjestelmiä Googlen infrastruktuuriin. Järjestänyt tietojen siirron kaikista kaatumisista backtrace.io-palveluun niiden ryhmittelyn ja analysoinnin yksinkertaistamiseksi;

    • Parhaillaan päivitetään zlib-toteutusta ydintasolla.
      Pakkaukseen liittyvä koodi on siirretty yli 1.0.4 vuotta sitten julkaistusta zlib 20:stä nykyiseen zlib 1.2.11 -koodikantaan. zlibin käytön yhtenäistämiseksi ytimeen on lisätty toiminnot compress, compress2 ja uncompress. Netgraph-alijärjestelmästä PPP-protokollan toiminnan varmistava koodi on siirretty käyttämään zlibin järjestelmätoteutusta tämän kirjaston oman versionsa sijaan. Myös alijärjestelmät kern_ctf.c, opencryptodeflate, geom_uzip, subr_compressor on siirretty uuteen zlibiin.
      if_mxge, bxe päivitetty ja ng_deflate;

    • Uusi ytimen käyttöliittymä on kehitteillä sysctlinfo, jonka avulla voit etsiä sysctl-parametritietokannasta elementtejä, jotka on käsitelty MIB:n (Management Information Base) muodossa, ja siirtää objekteja koskevia tietoja käyttäjätilaan.
  • Безопасность
    • Kehitetty ydinmoduuli mac_ipacl, joka perustuu TrustedBSD MAC Frameworkiin ja toteuttaa pääsynhallintajärjestelmän vankilaympäristöjen verkkopinoasetuksiin. Esimerkiksi käyttämällä mac_ipacl-komentoa isäntäjärjestelmän ylläpitäjä voi estää vankilaympäristössä olevaa pääkäyttäjää muuttamasta tai asettamasta IP-osoitteita tai aliverkkoasetuksia tietyille verkkoliittymille. Ehdotettu pakollinen kulunvalvontajärjestelmä sen avulla asettaa luettelot vankilaan sallituista IP-osoitteista ja aliverkoista, kieltää tiettyjen IP-osoitteiden ja aliverkkojen asentaminen vankilaan tai rajoittaa parametrien muuttamista vain tiettyihin verkkoliitäntöihin;
    • Intel lahjoitti projektille ohjelmistopinoportin TPM 2.0 (Trusted Platform Module) liittääkseen suojatun laskentasirun, jota käytetään yleensä laiteohjelmiston ja käyttöjärjestelmän käynnistyslataimen varmennettuun lataamiseen. Pinokomponentit esitetään muodossa ports security/tpm2-tss, security/tpm2-tools ja security/tpm2-abrmd. tpm2-tss-portti sisältää kirjastot TPM2 API:n käyttöä varten, tpm2-tools tarjoaa komentorivityökalut TPM-toimintojen suorittamiseen ja tpm2-abrmd sisältää TPM Access Broker- ja Resource Manager -komponenttien taustaprosessitoteutuksen, joka multipleksoi pyyntöjä eri TPM-käyttäjiltä. yhteen laitteeseen. FreeBSD:n varmennetun käynnistyksen lisäksi TPM:ää voidaan käyttää parantamaan Strongswan IPsecin, SSH:n ja TLS:n turvallisuutta suorittamalla salaustoimintoja erillisellä sirulla;
    • amd64-arkkitehtuurin ydin on mukautettu käynnistymään W^X (write XOR execute) -suojaustekniikalla, mikä tarkoittaa, että muistisivuille ei voida käyttää samanaikaisesti kirjoittamista ja suorittamista (ydin voidaan nyt ladata käyttämällä suoritettavia muistisivuja, joille kirjoitetaan on kielletty). Uusi ytimen suojausmenetelmä sisältyy HEAD-haaraan ja se sisällytetään FreeBSD 13.0- ja 12.2-julkaisuihin;
    • mmap- ja mprotect-järjestelmäkutsuille toteutettu makro PROT_MAX(), jonka avulla voit määrittää lisämuutoksille sallittujen pääsyrajoituslippujen joukon (PROT_READ, PROT_WRITE, PROT_EXEC). PROT_MAX()-komennolla kehittäjä voi estää muistialueen siirtämisen suoritettavaan kategoriaan tai pyytää muistia, joka ei salli suoritusta, mutta joka voidaan myöhemmin muuntaa suoritettavaksi. Esimerkiksi muistialue voi olla avoinna kirjoittamista varten vain dynaamisen linkityksen tai JIT-koodin luomisen ajan, mutta kun kirjoitus on valmis, se on rajoitettu vain lukemiseen ja suorittamiseen, ja tulevaisuudessa, jos se vaarantuu, hyökkääjä ei voi ottaa käyttöön kirjoittamista tälle muistilohkolle. PROT_MAX(:n) lisäksi on toteutettu myös sysctl vm.imply_prot_max, joka aktivoituna määrittää kelvollisten lippujen joukon ensimmäisen mmap-kutsun alkuparametrien perusteella;
    • Suojauksen parantamiseksi haavoittuvuuksien hyväksikäyttöä vastaan ​​osoiteavaruuden satunnaistustekniikan (ASLR) lisäksi mekanismi, jolla satunnaistetaan osoittimien siirtymät, jotka osoittavat alkuperäistä pinokehystä ja pinoon sijoitettuja rakenteita ympäristötiedoilla, ohjelman käynnistysparametreilla ja datalla. suoritettaville kuville ehdotetaan ELF-muodossa;
    • Unsafe gets -funktion poistamiseksi libc:stä on tehty töitä (C11-standardista alkaen tämä toiminto on jätetty pois määrittelystä) ja tätä toimintoa edelleen käyttävien porttien korjaamiseksi. Muutos on tarkoitus tarjota FreeBSD 13.0:ssa;
    • Kokeellinen projekti on käynnistetty, jossa luodaan työkaluja vankilaympäristöjen organisointiin viitekehyksen pohjalta voida Kuvien luomiseen ja viemiseen, toteutettu kuten Docker, ja ohjain nomadi, joka tarjoaa käyttöliittymän sovellusten dynaamiselle käynnistämiselle vankilaympäristössä. Ehdotetun mallin avulla voimme erottaa vankilaympäristöjen luomisprosessit ja sovellusten käyttöönoton niissä. Yksi projektin tavoitteista on tarjota keino manipuloida vankiloita Docker-tyylisinä konteina;
  • Tallennus- ja tiedostojärjestelmät
    • NetBSD:stä "makefs"-apuohjelmaan siirretty FAT-tiedostojärjestelmän tuki (msdosfs). Valmisteltujen muutosten avulla voit luoda FS-otoksia FAT:lla ilman md-ohjainta ja ilman pääkäyttäjän oikeuksia;
    • FUSE (File system in USErspace) -alijärjestelmän ajurin uudelleentyöstö on saatu päätökseen, jolloin tiedostojärjestelmätoteutuksia voidaan luoda käyttäjätilaan. Alunperin toimitettu ajuri sisälsi monia bugeja ja perustui FUSE 7.8:aan, joka julkaistiin 11 vuotta sitten. Osana ajurien modernisointiprojektia on otettu käyttöön tuki FUSE 7.23 -protokollalle, lisätty koodi ytimen puolen käyttöoikeuksien tarkistamiseen ("-o default_permissions"), lisätty kutsuja VOP_MKNOD:lle, VOP_BMAP:lle ja VOP_ADVLOCK:lle, mahdollisuus keskeyttää FUSE-toiminnot on tarjottu, tuki nimeämättömille putkille ja unix-kantoille on lisätty sulakkeisiin, kqueue:n käyttö tuli mahdolliseksi /dev/fuse-tiedostolle, liitosparametreja oli mahdollista päivittää "mount -u" kautta, lisätty tuki sulakkeiden vientiin NFS:n kautta, otti käyttöön RLIMIT_FSIZE-kirjanpidon, lisäsi liput FOPEN_KEEP_CACHE ja FUSE_ASYNC_READ, teki merkittäviä suorituskyvyn optimointeja ja paransi välimuistin organisaatiota. Uusi ajuri sisältyy pää- ja stable/12 haaraan (sisältyy FreeBSD 12.1:een);
    • NFSv4.2:n (RFC-7862) käyttöönotto FreeBSD:lle on melkein valmis. Katsauskauden pääpaino oli testauksessa. Testit on saatu päätökseen yhteensopivuuden varmistamiseksi Linux-toteutuksen kanssa, mutta pNFS-palvelimen testaus NFSv4.2:lla on edelleen käynnissä. Yleensä koodia pidetään jo valmiina integroitavaksi FreeBSD:n pää-/nykyhaaroihin. Uusi NFS-versio lisää tuen funktioille posix_fadvise, posix_fallocate, SEEKHOLE/SEEKDATA-tiloihin lseekissä, tiedoston osien paikalliseen kopioimiseen palvelimella (ilman siirtoa asiakkaalle);
  • Laitteistotuki
    • On käynnistetty projekti FreeBSD:n suorituskyvyn parantamiseksi kannettavissa tietokoneissa. Ensimmäinen laite, jonka laitteistotukea tarkastettiin FreeBSD:ssä, oli seitsemännen sukupolven Lenovo X1 Carbon -kannettava;
    • CheriBSD, FreeBSD:n haarukka tutkimusprosessoriarkkitehtuuriin RAKAS (Capability Hardware Enhanced RISC Instructions), päivitetty tukemaan tulevaa ARM Morello -prosessoria, joka tukee Capsicum-suunnittelun suojausmalliin perustuvaa CHERI-muistin pääsynhallintajärjestelmää. Morello siru suunnittelevat julkaisu vuonna 2021. CheriBSD-kehittäjät jatkavat myös MIPS-arkkitehtuuriin perustuvan CHERI-viiteprototyypin kehityksen seurantaa;
    • Laajennettu tuki RockPro3399- ja NanoPC-T64-korteissa käytetyille RockChip RK4 -siruille. Merkittävin parannus oli eMMC:n tuki ja uuden ajurin kehittäminen kortilla käytetylle eMMC-ohjaimelle;
    • Työ jatkuu ARM64 SoC Broadcom BCM5871X -tuen toteuttamiseksi ARMv8 Cortex-A57 -prosessoreilla, jotka on tarkoitettu käytettäväksi reitittimissä, yhdyskäytävissä ja verkkotallennustilassa. Raportointikauden aikana
      iProc PCIe -tukea on laajennettu ja kyky käyttää laitteiston salaustoimintoja IPsecin nopeuttamiseksi on lisätty.
      Koodin integroinnin HEAD-haaraan odotetaan viimeisellä neljänneksellä;

    • FreeBSD-portin kehittämisessä powerpc64-alustalle on tapahtunut merkittävää edistystä. Painopiste on laadukkaan suorituskyvyn tarjoamisessa järjestelmissä, joissa on IBM POWER8- ja POWER9-prosessorit, mutta se tukee valinnaisesti käyttöä vanhemmissa Apple Power Maceissa, x500:ssa ja Amiga A1222:ssa. Powerpc*/12-haara toimitetaan edelleen gcc 4.2.1:n kanssa, ja powerpc*/13-haara siirretään pian llvm90:een. 33306 portista 30514 on koottu onnistuneesti;
    • 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. Katsauskaudella toteutettiin tuki USB 3.0-, SD/MMC-, I2C-, DPAA- ja GPIO-verkkorajapinnoille. Suunnitelmissa on tukea QSPI:tä ja optimoida verkkoliitännän suorituskyky. Töiden valmistumisen ja HEAD-toimialaan liittymisen odotetaan valmistuvan vuoden 4 neljännellä neljänneksellä;
    • ena-ohjain on päivitetty tukemaan toisen sukupolven ENAv2-verkkosovittimia (Elastinen verkkosovitin), joita käytetään Elastic Compute Cloud (EC2) -infrastruktuurissa EC2-solmujen välisen tiedonsiirron järjestämiseen jopa 25 Gb/s nopeuksilla. NETMAP-tuki on lisätty ja testattu ena-ohjaimeen, ja muistin asettelu on mukautettu mahdollistamaan LLQ-tila Amazon EC2 A1 -ympäristöissä;
  • Sovellukset ja porttijärjestelmä
    • Päivitetyt grafiikkapinokomponentit ja xorgiin liittyvät portit. USE_XORG- ja XORG_CAT-portit on siirretty USES-kehykseen sen sijaan, että bsd.xorg.mk kutsuttaisiin bsd.port.mk:n kautta. Tällaiset portit sisältävät nyt "USES=xorg" -lipun maketiedostoissaan. XORG_CAT-toiminto on erotettu tiedostosta bsd.xorg.mk, ja se on nyt käytössä "USES=xorg-cat"-lipulla. Lisätty työkalut xorg-porttien luomiseen suoraan git-varastosta
      freedesktop.org, jonka avulla voit esimerkiksi luoda portteja vielä julkaisemattomille versioille. Jatkossa aiomme valmistella työkaluja meson-kokoonpanojärjestelmän käyttämiseen autotools-järjestelmän sijaan xorg-porttien rakentamiseen.

      Vanhat xorg-portit, jotka on sidottu komponentteihin, joita ei enää tueta, on siivottu, esimerkiksi x11/libXp-portti on poistettu ja x11/Xxf86misc-, x11-fonts/libXfontcache- ja graphics/libGLw-portit on poistettu käytöstä. ;

    • Java 11:n ja uudempien julkaisujen tuen parantamiseksi FreeBSD:ssä on tehty töitä sekä muutamien muutosten siirtämiseksi Java 8 -haaraan. Sen jälkeen kun tuki sellaisille uusille Java 11 -ominaisuuksille, kuten Java Flight Recorder, HotSpot Serviceability Agent, HotSpot Debugger otettiin käyttöön. FreeBSD:n, DTracen, Javac Serverin, Java Soundin ja SCTP:n osalta työ siirtyi varmistamaan, että kaikki yhteensopivuustestit läpäisivät. Testien läpäisyn epäonnistumisten määrä on vähennetty 50:stä 2:een;
    • KDE Plasma -työpöytä, KDE-kehykset, KDE-sovellukset ja Qt pidetään ajan tasalla ja päivitetään uusimpiin julkaisuihin.
    • Portit, joissa on Xfce-työpöytä päivitetty julkaisuun 4.14;
    • FreeBSD:n porttipuu on ylittänyt 38000 2000 portin rajan, sulkemattomien PR:iden määrä on hieman yli 400, joista 7340 PR:tä ei ole vielä ratkaistu. Katsauskauden aikana tehtiin 169 1.12 muutosta 2.0.4 kehittäjältä. Kaksi uutta osallistujaa (Santhosh Raju ja Dmitri Goutnik) saivat sitoutumisoikeudet. Pkg 9.0 -paketinhallinnan uusi julkaisu on julkaistu, ja se tukee porttipuun peittoja ja bsd.sites.mk:n puhdistamista. Porttien merkittäviä versiopäivityksiä ovat: Lazarus 5.30, LLVM 11, Perl2.6, PostgreSQL 69.0.1, Ruby 68.1.0, Firefox 76.0, Firefox-esr XNUMX, Chromium XNUMX;
    • Hankekehitys jatkuu ClonOS, kehittymässä erikoistunut jakelu virtuaalipalvelininfrastruktuurin käyttöönottoon. Ratkaisemiensa tehtävien suhteen ClonOS muistuttaa järjestelmiä, kuten Proxmox, Triton (Joyent), OpenStack, OpenNebula ja Amazon AWS, joista suurin ero on FreeBSD:n käyttö ja kyky hallita, ottaa käyttöön ja hallita FreeBSD Jail -säilöjä ja Bhyve- ja Xen-hypervisoreihin perustuvat virtuaaliympäristöt. Viimeaikaiset muutokset sisältävät tuen
      cloud-init Linux/BSD VM:lle ja cloudbase-init Windows VM:lle, siirtyminen alkuperäisten kuvien käyttöön, Jenkins CI:n käyttö koontiversioiden testaamiseen ja uusi pkg-arkisto asennukseen
      ClonOS paketeista.

Lähde: opennet.ru

Lisää kommentti