FreeBSD projekti aruanne aprillist juunini 2019. Muudatused, mida saab esile tõsta:
- Üldised ja süsteemsed küsimused
- Kerneti meeskond otsustas asutada töörühma, et uurida võimalust tõlkida allikatekstid keskendunud allikahalduse süsteemist Subversion detsentraliseeritud süsteemi Git.
- FreeBSD tuuma fuzzing-testimine viidi läbi süsteemi abil ja parandati mitmeid avastatud vigu. Lisa kiht fuzzing-testimiseks teekide jaoks tagamaks ühilduvust 32-bitise keskkonnaga 64-bitiste tuumade süsteemides. Realiseeriti võimalus käivitada syzkaller virtuaalmasinates, mis põhinevad bhyve'l. Järgmises etapis plaanitakse testimise ulatust laiendada süsteemikutsumiste katmiseks, kasutada LLVM sanitizerit tuuma kontrollimiseks, kasutada netdump'i tuumadumpe salvestamiseks crashide ajal fuzzing-testimise käigus jne.
- Zlib rakenduse taseme värskendamine on käimas. Tuuma juurdepääsu tagamiseks zlib koodile muudeti kaust contrib/zlib sys/contrib/zlib-ks ja ka pealkirjafail crc.h nimetati ümber, et vältida konflikti zlib/crc.h failiga. Eemaldati vananenud kood, mis sõltus zlib-st ja inflate'ist. Edasi plaanitakse tagada võimalus tuuma kokkupanekuks samaaegselt vanade ja uute zlib-dega järkjärguliseks üleminekuks funktsioonidele, mis kasutavad tihendust;
- Linuxi keskkonna emulatsiooni infrastruktuuri (Linuxulator) on värskendatud. Linuxi silumisvahendite tugi, nagu strace utiliit, on laienenud. Portidesse on lisatud paketid linux-c7-strace, mida saab kasutada Linuxi eksekutable failide jälgimiseks, asendades tavapäraseid truss ja ktrace utiliite, mis ei suuda veel dekodeerida mõningaid Linuxile omaseid lippe ja struktuure. Lisaks on lisatud linux-ltp paketid Linux Test Project'i täitevfailidega ning lahendatud probleemid, mis on seotud ühilduvusega uute glibc versioonidega kompileeritud täitevfailidega;
- Füüsiliste mälu lehekülgede seondumiste viivitusega puhastamise (delayed invalidation) operatsioonide rakendamine pmap mehhanismis on ümber viidud lukustusteta tööde järjekorra töötlemise algoritmi kasutusele, mis lahendas samal ajal paljude ühisoperatsioonide unmap sooritamisega seotud skaleeritavuse probleemid.
- Vnode'i lukustusmehanismi on muudetud süsteemikutsungite execve() pere täitmise ajal, mis on võimaldanud tõsta efektiivsust, kui täidetakse execve() sama faili jaoks (näiteks paralleelse kompileerimise käigus);
- Turvalisus
- Hüperviisoris bhyve on jätkatud Live-migreerimise toetuse täiendamist külaliskeskkondade vahel ühest hostist teise ning Save/Restore funktsionaalsusega, mis võimaldab külalissüsteemi seisata ja salvestada selle oleku faili, et seejärel jätkata täitmist.
- Raamatukogu libvdsk kaudu on bhyve'sse lisatud QCOW2 formaadis kettapiltide tugi. Tööks on vajalik paigaldamine
bhyve versioon, mis on muudetud failihalduri töötlusalgoritmide libvdsk alusel. Aruandlusperioodi jooksul on libvdsk-s ka lihtsustatud uute formaatide toe integreerimist, parendatud lugemise ja kirjutamise jõudlust ning lisatud Copy-On-Write tugi. Jäänud ülesandeid on libvdsk integreerimine bhyve peamisse koosseisu; - Sadamas on lisatud liiklusandmete kogumise süsteem
, mis võimaldab luua lõkse kahjulike võrgupäringute jaoks (kontrollitakse IP ja domeene mustadesse nimekirjadesse) ning edastada teavet tuvastatud tegevuse kohta tsentraalsesse serverisse rünnakute takistamiseks või analüüsimiseks; - Sadamas on lisatud platvorm rünnakute tuvastamiseks, logide analüüsimiseks ja failide terviklikkuse jälgimiseks (Ossec'i fork koos integreerimise toega );
- Võrgusüsteem
- Draiver ena on uuendatud teise põlvkonna ENAv2 (Elastic Network Adapter) võrgukaartide toega, mida kasutatakse Elastic Compute Cloud (EC2) infrastruktuuris EC2 sõlmede vahelise suhtluse korraldamiseks kiirusel kuni 25 Gb/s. Draiverisse ena on lisatud NETMAP tugi.
- FreeBSD HEAD on vastu uus MMC / SD stack, mis põhineb CAM raamistikul ja võimaldab ühendada SDIO (Secure Digital I / O) liidesega seadmeid. Näiteks kasutatakse SDIO-d WiFi ja Bluetooth moodulites paljude platvormide, nagu Raspberry Pi 3, jaoks. Uus stack võimaldab samuti kasutada CAM liidest SD-käskude edastamiseks rakendustest kasutajaruumi, andes võimaluse luua seadme draivereid, mis töötavad kasutaja tasemel. Töö on alanud Broadcomi juhtmete draiverite loomise nimel, mis töötavad FullMAC režiimis (kiibil toimub oma operatsioonisüsteemi toimimine koos oma 802.11 juhtmeta stack'i rakendusega);
- Tööd käivad FreeBSD jaoks NFSv4.2 (RFC-7862) rakendamise nimel. Uues NFS versioonis on lisatud toetust funktsioonidele posix_fadvise, posix_fallocate, SEEKHOLE / SEEKDATA režiimidele lseek-s, kohalikke failiosade kopeerimise operatsioonidele serveris (ilma kliendile edastamata).
Praegu on FreeBSD jaoks juba rakendatud põhilist toetust LayoutError, IOAdvise, Allocate ja Copy operatsioonidele. Tuleb veel rakendada Seek operatsioon, mis on vajalik lseek (SEEKHOLE/SEEKDATA) kasutamiseks NFS-iga. NFSv4.2 toetust plaanitakse integreerida FreeBSD 13-sse;
- Salvestussüsteemid ja failisüsteemid
- FUSE (File system in USErspace) alamsüsteemi draiveri uuendamise projekt on lõpule jõudmas, võimaldades luua rakendusruumis failisüsteemide realiseerimisi. Algne draiver on aegunud ja sisaldab palju vigu. Draiveri moderniseerimise projekti raames on rakendatud FUSE 7.23 protokolli toetus (varasemalt toetati 7.8 versiooni, mis ilmus 11 aastat tagasi), lisatud on tuvastuskoodi toetamine kernelipoolsetel õigustel (‘-o default_permissions’), lisatud on VOP_MKNOD, VOP_BMAP ja VOP_ADVLOCK kutseid, tagatud on FUSE operatsioonide katkestamise võimalus, lisatud on nime mittesisaldavate kanalite ja unix-soketide toetus fusefs-is, antud on võimalus kasutada kqueue'd /dev/fuse jaoks, lubatud on mount-parametrite värskendamine 'mount -u' kaudu, lisatud on fusefs-i eksportimise tugi NFS-iga, rakendatud on RLIMIT_FSIZE jälgimist, lisatud on FOPEN_KEEP_CACHE ja FUSE_ASYNC_READ lipud, tehtud on olulisi jõudluse optimeerimisi ja parendatud on vahemälu korraldust;
- Mälu lehekülgede eemaldamise koodi (swap pager) on lisatud BIO_DELETE operatsiooni tugi, mis võimaldab TRIM käsku SSD-seadmestikest blokke eemaldamise protsessi käigus, et pikkendada nende eluiga.
- Riistvara tugi
- Jätkatakse Broadcom BCM5871X ARM64 SoC protsessorite ARMv8 Cortex-A57 toe rakendamist, mis on suunatud ruutereid, väravaid ja võrgu salvestuslahendusi kasutamiseks. Aruandeperioodi jooksul on paranenud nii sisemiste kui ka välimiste iProc PCIe busside tugi, lisatud on BNXT Ethernet'i tugi ning töötatakse sisseehitatud krüptomootori kasutuselevõtu kallal IPsec'i kiirendamiseks. Koodi integreerimist HEAD harusse oodatakse teisel poolaastal;
- Alustatud on 64-bitise NXP LS1046A SoC toe rakendamine, millel on ARMv8 Cortex-A72 protsessor integreeritud võrgu paketiniitmise kiirusaknale, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 ja USB 3.0. Omandatud on alusplaadi tugi (multi-user SMP) ja SATA 3.0. Arenenud on USB 3.0, SD/MMC ja I2C tugi. Plaanis on Ethernet'i, GPIO ja QSPI tugi. Töö lõpetamist ja sisestamist HEAD harusse oodatakse 2019. aasta 4. kvartalis.
- Uuendatud on mlx5en ja mlx5ib draivereid Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] ja ConnectX-6 [Dx] Etherneti ja InfiniBand-i adapterite jaoks. Lisatud on Mellanox Socket Direct (ConnectX-6) adapterite tugi, mis võimaldab saavutada kuni 200 Gb/s läbilaskevõimet PCIe Gen 3.0 bussil. Multi-keermega "BlueField" kiipide jaoks on lisatud RShim draiveri tugi. Portidesse on lisatud mstflint pakett koos hulga diagnostiliste utiliitidega Mellanox'i adapterite jaoks;
- Rakendused ja portide süsteem
- Uuendatud on graafikutehnoloogia komponente. Tehtud on drm.ko (Direct Rendering Manager) draiveri portimine Linuxi 5.0 kärjest. Seda draiverit käsitletakse eksperimentaalsena ja see on lisatud portide puusse kui graphics/drm-devel-kmod. Kuna draiver kasutab Linuxi KPI uuendatud raamistikku kokkusobivuseks Linuxi kärje DRM API-ga, on tööks vajalik FreeBSD CURRENT. Linuxist on dubleeritud ka drm-draiver vboxvideo.ko virtuaalse GPU VirtualBox'i jaoks. Mesa pakett on uuendatud versioonini 18.3.2 ja viidud üle LLVM kasutamisele devel/llvm80 portist, mitte devel/llvm60.
- FreeBSD portide puu on ületanud 37000 portaali piiri, avatud PRide arv püsinud 2146 juures. Aruandeperioodi jooksul on toimunud 7837 muudatust 172 arendaja poolt. Komiteeliikme õigused on saanud kolm uut liiget. Märkimisväärsete versioonipäupdate'ide seas portidesse kuuluvad: MySQL 5.7, Python 3.6, Ruby 2.5, Samba 4.8, Julia 1.0, Firefox 68.0, Chromium 75.0.3770.100. Kõik Go keeles olevad portid on viidud üle "USES=go" lipu kasutamisele. Tootjapaketile Cabal on lisatud "USES=cabal" lipp Haskelli koodide haldamiseks. Aktiveeritud on rangem ABI režiim. Vaikimisi on ettepanek kasutada Python 3.6 versiooni 2.7 asemel.
- Valmistatud tööriista versioon , pakkudes sarnast funktsionaalsust nagu \/sbin\/sysctl, kasutades , et väljundit esitada ja pakkuda laiemat valikute kogumit. Nsysctl võib kasutada sysctl väärtuste oleku visuaalse jälgimise jaoks ja teabe esitamiseks objektide kohta struktureeritud kujul. Toetatakse väljundit formaatides XML, JSON ja HTML;
Allikas: opennet.ru
