en rapport om utvecklingen av FreeBSD-projektet frÄn januari till mars 2020. Bland förÀndringarna kan vi notera:
- AllmÀnna och systemiska frÄgor
- GCC-kompilatorsviten har tagits bort frÄn FreeBSD-CURRENT-kÀllkodstrÀdet, liksom de oanvÀnda verktygen gperf, gcov och gtc (devicetree compiler). Alla plattformar som inte stöder Clang har bytts till att anvÀnda externa byggverktyg installerade frÄn portar. Bassystemet levererades med den förÄldrade GCC 4.2.1-utgÄvan, och integration av nyare versioner var inte möjlig pÄ grund av 4.2.2:s övergÄng till GPLv3-licensen, vilket ansÄgs oacceptabelt för FreeBSD-baskomponenterna. Nuvarande GCC-utgÄvor, inklusive GCC 9, kan fortfarande installeras frÄn paket och portar.
- I miljöns emuleringsinfrastruktur Linux (Linuxulator) lade till stöd för systemanropet sendfile, TCP_CORK-lÀge (krÀvs för nginx) och flaggan MAP_32BIT (löser problemet med att köra paket med Mono frÄn Ubuntu Bionic). DNS-lösningsproblem vid anvÀndning av glibc nyare Àn 2.30 (till exempel frÄn CentOS 8).
Den kontinuerliga integrationsinfrastrukturen ger möjlighet att köra jobb för att köra LTP (Linux Testprojekt) under ledning av Linuxulator för att testa förbÀttringar gjorda i koden för att stödja LinuxOmkring 400 tester misslyckas och krÀver ÄtgÀrd (vissa fel orsakas av falska positiva resultat, vissa krÀver enkla ÄtgÀrdar och andra krÀver att stöd för nya systemanrop lÀggs till). Kodrensningen har slutförts. Linuxulator och förenkla felsökning. Patchar som stöder utökade attribut och systemanropet fexecve har förberetts men Ànnu inte granskats. - Arbetsgruppen som skapats för att migrera kÀllkod frÄn det centraliserade Subversion-kÀllkodskontrollsystemet till det decentraliserade Git-systemet fortsÀtter att mötas. En rapport med migreringsförslag Àr under utarbetande.
- Р(runtime-lÀnkare) förbÀttrade direktkörningslÀge ("/libexec/ld-elf.so.1 {path} {arguments}").
- FreeBSD-kÀrnprojektet för fuzzing med syzkaller-systemet fortsÀtter att utvecklas. Under rapporteringsperioden ÄtgÀrdades problem i nÀtverksstacken och kod för att arbeta med filbeskrivningstabeller som identifierats med syzkaller. Efter feldiagnostik lades Àndringar till i SCTP-stacken för att förenkla felsökning. Regler för att identifiera potentiella regressioner lades till i stress2-uppsÀttningen. Stöd för fuzzingtestning av nya systemanrop har lagts till, inklusive copy_file_range(), __realpathat() och Capsicum-subsystemanrop. Arbetet fortsÀtter med att tÀcka emuleringsskiktet med fuzzingtestning. LinuxFel som identifierats i de senaste Coverity Scan-rapporterna har analyserats och korrigerats.
- I det kontinuerliga integrationssystemet övergick man till att köra alla tester av head-grenen endast med clang/lld. Vid testning för RISC-V genereras en fullstÀndig diskavbildning för att köra tester i QEMU med OpenSBI. Nya uppgifter för att testa powerpc64-avbildningar och virtuella maskiner (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm) har lagts till.
- Arbete pÄgÄr för att migrera Kyuas testsvit frÄn portar (devel/kyua) till bassystemet för att ÄtgÀrda problem (paket installeras mycket lÄngsamt) som uppstÄr nÀr Kyua anvÀnds pÄ nya arkitekturer dÀr utvecklingen sker med hjÀlp av en emulator eller FPGA. Integrering i bassystemet kommer avsevÀrt att förenkla testning av inbyggda plattformar och grÀnssnitt mot kontinuerliga integrationssystem.
- Projekt för att optimera prestandan för nÀtverksbryggans drivrutiner har startat , som anvÀnder en enda mutex för att lÄsa interna data, vilket inte möjliggör att önskad prestanda uppnÄs pÄ system med ett stort antal jail-miljöer eller virtuella maskiner sammankopplade i ett enda nÀtverk. I detta skede har tester lagts till i koden för att förhindra regressioner under uppgraderingsprocessen för arbete med lÄs. Möjligheten att anvÀnda ConcurrencyKit för att parallellisera dataöverföringshanterare (bridge_input(), bridge_output(), bridge_forward(), ...) övervÀgs.
- Ett nytt sigfastblock-systemanrop har lagts till som tillÄter en trÄd att specificera ett minnesblock för en snabb signalhanterare för att förbÀttra prestandan för undantagshanterare.
- KÀrnan stöder nu LSE-atominstruktioner (Large System Extension) som stöds av ARMv8.1-system. Dessa instruktioner krÀvs för att förbÀttra prestandan pÄ Cavium ThunderX2- och AWS Graviton 2-kort. De tillagda Àndringarna detekterar förekomsten av LSE-stöd och aktiverar dynamiskt atomimplementering baserat pÄ dem. Under testning möjliggjorde anvÀndningen av LSE en minskning av processortiden som spenderades pÄ kÀrnmontering med 15 %.
- Prestandaoptimeringar har gjorts och funktionaliteten i verktygslÄdan för ELF-körbara filer har utökats.
Lade till stöd för cachning av DWARF-felsökningsinformation, löste problem i elfcopy/objcopy-verktygen, lade till hantering av DW_AT_ranges,
readelf har nu möjligheten att avkoda flaggorna PROTMAX_DISABLE, STKGAP_DISABLE och WXNEEDED, sÄvÀl som Xen och GNU Build-ID.
- ĐĐ”Đ·ĐŸĐżĐ°ŃĐœĐŸŃŃŃ
- För att förbÀttra FreeBSD-prestanda i Azure-molnmiljöer pÄgÄr arbete med att ge stöd för HyperV Socket-mekanismen, som tillÄter anvÀndning av ett socket-grÀnssnitt för interaktion mellan gÀst och vÀrd utan nÀtverkskonfiguration.
- Arbete pÄgÄr för att sÀkerstÀlla repeterbara FreeBSD-byggen, vilket gör att vi kan verifiera att de körbara filerna för systemkomponenterna Àr byggda frÄn den deklarerade kÀllkoden och inte innehÄller nÄgra ovidkommande Àndringar.
- Verktyget elfctl har nu möjlighet att kontrollera inkluderingen av ytterligare skyddsmekanismer (ASLR, PROT_MAX, stack gap, W+X-mappning) pÄ nivÄn för enskilda processer.
- Lagring och filsystem
- Arbete pÄgÄr för att implementera möjligheten att köra NFS över en krypterad kommunikationskanal baserad pÄ TLS 1.3, istÀllet för att anvÀnda Kerberos (sec=krb5p-lÀge), vilket Àr begrÀnsat till att endast kryptera RPC-meddelanden och endast implementeras i programvara. Den nya implementeringen anvÀnder TLS-stacken som tillhandahÄlls av kÀrnan, vilket möjliggör anvÀndning av hÄrdvaruaccelerationsverktyg. NFS över TLS-koden Àr nÀstan redo för testning, men krÀver fortfarande arbete för att stödja signerade klientcertifikat och anpassa kÀrnans TLS-stack för att skicka NFS-data (patchar för mottagning Àr redan klara).
- HÄrdvarustöd
- Arbete pÄgÄr för att lÀgga till stöd för den kinesiska x86-processorn Hygon baserad pÄ AMD-teknik;
- Inom CheriBSD, en förgrening av FreeBSD för en forskningsprocessorarkitektur (Capability Hardware Enhanced RISC Instructions), fortsÀtter att stödja ARM Morello-processorn, som kommer att stödja CHERI-minnesÄtkomstkontrollsystemet baserat pÄ Capsicum-projektskyddsmodellen. Morello-chippet slÀppas 2021. Arbetet fokuseras för nÀrvarande pÄ att lÀgga till stöd för Arm Neoverse N1-plattformen, som ligger till grund för Morello. En första portning av CheriBSD för RISC-V-arkitekturen har presenterats. CheriBSD-utvecklingen fortsÀtter för den MIPS64-baserade CHERI-referensprototypen.
- FreeBSD-portningen för 64-bitars NXP LS1046A SoC baserad pÄ ARMv8 Cortex-A72-processorn med en integrerad nÀtverkspaketaccelerationsmotor, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 och USB 3.0 har fortsatt. Drivrutinerna QorIQ och LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC och QorIQ LS10xx SDHCI förbereds för nÀrvarande för inkludering i den huvudsakliga FreeBSD-distributionen.
- Ena-drivrutinen har uppdaterats till version 2.1.1 med stöd för andra generationens ENAv2 (Elastic Network Adapter) nÀtverkskort som anvÀnds i Elastic Compute Cloud (EC2)-infrastrukturen för att organisera kommunikation mellan EC2-noder med hastigheter upp till 25 Gb/s. En uppdatering till ENA 2.2.0 förbereds.
- FreeBSD-porten för powerpc64-plattformen fortsÀtter att förbÀttras. Huvudfokus ligger pÄ att sÀkerstÀlla högkvalitativ drift pÄ system med IBM POWER8- och POWER9-processorer. Under rapporteringsperioden överfördes FreeBSD-CURRENT till att anvÀnda LLVM/Clang 10.0-kompilatorn och lld-lÀnkaren istÀllet för GCC. Som standard Àr ELFv64 ABI aktiverat för powerpc2-system, och stödet för ELFv1 ABI har upphört. FreeBSD-STABLE har fortfarande gcc 4.2.1. Problem med virtio-, aacraid- och ixl-drivrutiner har lösts. PÄ powerpc64-system Àr det nu möjligt att köra QEMU utan stöd för Huge Pages.
- Arbetet med att implementera stöd för RISC-V-arkitekturen har fortsatt. I sin nuvarande form startar FreeBSD redan framgÄngsrikt pÄ SiFive Hifive Unleashed-kortet, för vilket drivrutiner har förberetts.
UART, SPI och PRCI, stöder OpenSBI och SBI 0.2 firmware. Under rapporteringsperioden fokuserade arbetet pÄ migrering frÄn GCC till clang och lld.
- Applikationer och hamnsystem
- FreeBSD-portsamlingen har passerat 39 2400 portningar, med drygt 640 8146 oavslutade PR:er, varav 173 PR:er Ă€nnu inte har lösts. Under rapporteringsperioden gjordes 3 2.7 Ă€ndringar av 2 utvecklare. Fyra nya bidragsgivare fick committer-rĂ€ttigheter (LoĂŻc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). Flaggan USES=qca lades till och flaggan USES=zope togs bort (pĂ„ grund av inkompatibilitet med Python 3). Arbete pĂ„gĂ„r för att ta bort Python 1.13.2 frĂ„n porttrĂ€det â alla portar kopplade till Python XNUMX mĂ„ste portas till Python XNUMX eller tas bort. Pakethanteraren pkg har uppdaterats till version XNUMX.
- Uppdaterade grafikstackkomponenter och xorg-relaterade portar.
X.org-servern har uppdaterats till version 1.20.8 (tidigare levererades 1.18-grenen), vilket har gjort det möjligt för FreeBSD att byta till att anvÀnda udev/evdev-backend som standard för hantering av inmatningsenheter. Mesa-paketet har bytts till att anvÀnda DRI3-tillÀgget som standard istÀllet för DRI2. Arbete pÄgÄr för att hÄlla grafikdrivrutiner, inmatningsenhetsstacken och drm-kmod-komponenter uppdaterade (en port som möjliggör DRM-moduler för amdgpu, i915 och radeon, med hjÀlp av linuxkpi-ramverket för kompatibilitet med kÀrnans Direct Rendering Manager). Linux). - KDE Plasma-skrivbordet, KDE-ramverk, KDE-program och Qt hÄlls uppdaterade och uppdaterade till de senaste utgÄvorna. Ett nytt program, kstars (star atlas), har lagts till i porteringarna.
- Arbete har utförts för att eliminera regressiva förÀndringar i fönsterhanteraren xfwm4 som uppstod efter uppdateringen av Xfce till version 4.14 (till exempel uppstod artefakter vid fönsterdekorering).
- Wine-porteringen har uppdaterats till Wine 5.0 (tidigare erbjöds 4.0.3).
- FrÄn och med version 1.14 lÀgger Go-kompilatorn till officiellt stöd för ARM64-arkitekturen för FreeBSD 12.0.
- OpenSSH i bassystemet har uppdaterats till version 7.9p1.
- sysctlmibinfo2-biblioteket har implementerats och placerats i portar (devel/libsysctlmibinfo2), vilket tillhandahÄller ett API för Ätkomst till sysctl MIB och översÀttning av sysctl-namn till objektidentifierare (OID).
- Distributionsuppdatering genererad , som Àr en utgÄva av FreeBSD anpassad för anvÀndning som ett bÀrbart skrivbord som kan startas frÄn en USB-enhet. Den grafiska miljön Àr baserad pÄ en fönsterhanterare . AnvÀnds för montering av drivenheter (montering av CD9660, FAT, HFS+, NTFS, Ext2/3/4 stöds), för att konfigurera ett trÄdlöst nÀtverk - , och för att kontrollera volymen - .
- Började om att skriva fullstÀndig dokumentation för fÀngelsemiljöchefen pot 0.11.0 förbereds för release, vilket kommer att inkludera verktyg för hantering av nÀtverksstackar.
KĂ€lla: opennet.ru
