Rapport om utvecklingen av projektet FreeBSD frÄn april till juni 2019. Bland förÀndringarna kan nÀmnas:
- AllmÀnna och systemfrÄgor
- KÀrnteamet har beslutat att inrÀtta en arbetsgrupp för att undersöka möjligheten att överföra kÀlltexter frÄn det centraliserade systemet för hantering av kÀlltexter Subversion till det decentraliserade systemet Git.
- Fuzzing-testning av FreeBSD-kÀrnan har genomförts med hjÀlp av systemet och en rad fel som identifierades har ÄtgÀrdats. Ett lager för fuzzing-testning av bibliotek har lagts till för kompatibilitet med 32-bitarsmiljöer pÄ system med 64-bitars kÀrna. Möjligheten att köra syzkaller i virtuella maskiner baserade pÄ bhyve har implementerats. Under nÀsta steg planeras det att utöka testningen av systemanrop, anvÀnda LLVM-sanitizer för att kontrollera kÀrnan, anvÀnda netdump för att spara kÀrndumpar under krascher vid fuzzing-testning osv.
- Arbetet med att uppdatera implementationen av zlib pÄ kÀrnnivÄ har inletts. För att ge kÀrnan tillgÄng till zlib-koden har katalogen contrib/zlib döpts om till sys/contrib/zlib, och header-filen crc.h har ocksÄ döpts om för att undvika konflikter med zlib/crc.h. Utdaterad kod som Àr beroende av zlib och inflate har rensats. Det planeras att möjliggöra kompilerings av kÀrnan med bÄde den gamla och den nya versionen av zlib för att gradvis övergÄ till den nya versionen av funktioner som anvÀnder komprimering;
- Infrastrukturen för emulering av Linux-miljö (Linuxulator) har uppdaterats. Stödet för Linux-felsökningsverktyg, sÄsom strace, har utökats. Paketet linux-c7-strace har lagts till i portarna, vilket kan anvÀndas för att spÄra Linux-exekverbara filer istÀllet för de inbyggda verktygen truss och ktrace, som Ànnu inte kan avkoda vissa specifika Linux-flaggor och strukturer. Dessutom har paketet linux-ltp med Linux Test Project-exekverbara filer lagts till och kompatibilitetsproblem med exekverbara filer som har lÀnkas med nya versioner av glibc har lösts;
- Implementeringen av operationer för fördröjd invalidation av bindningar till fysiska minnessidor (delayed invalidation) i pmap-mekanismen har övergÄtt till att anvÀnda en lÄsless köhanteringsalgoritm, vilket har löst skalbarhetsproblem vid utförande av ett stort antal parallella unmap-operationer.
- Blockering av vnode har Àndrats i samband med systemanrop av typen execve(), vilket har ökat effektiviteten vid samtidig körning av execve() för samma fil (till exempel vid byggprocesser med parallell körning av kompilatorer);
- SĂ€kerhet
- I hypervisorn bhyve har stödet för live-migrering av gÀstmiljöer frÄn en vÀrd till en annan samt funktionaliteten för att spara/ÄterstÀlla fortsatts förbÀttras. Detta möjliggör att frysa en gÀstsystem och spara tillstÄndet i en fil för att senare Äteruppta körningen.
- Genom anvÀndning av biblioteken libvdsk har stöd för diskavbildningar i QCOW2-format lagts till i bhyve. För att fungera krÀvs installation av
version av bhyve, som har omvandlats för att anvÀnda filoperationhanterare baserade pÄ libvdsk. Under den rapporterade perioden har ocksÄ arbete utförts i libvdsk för att förenkla integrationen av nytt formatstöd, förbÀttra lÀs- och skrivprestanda och lÀgga till stöd för Copy-On-Write. De ÄterstÄende uppgifterna inkluderar integrering av libvdsk i huvudkomponenten av bhyve; - Till portarna har ett system för insamling av trafikdata lagts till
, vilket möjliggör skapande av fÀllor för skadliga nÀtverksförfrÄgningar (IP och domÀner kontrolleras mot svarta listor) och skickar information om upptÀckt aktivitet till en centraliserad server för senare blockering eller analys av attackförsök; - Till portarna har Àven plattformar för att upptÀcka attacker, analysera loggar och övervaka filintegritet lagts till (en fork av Ossec med stöd för integration med );
- NĂ€tverkssystemet
- Den uppdaterade ena-drivern stöder andra generationens nÀtverksadaptrar ENAv2 (Elastic Network Adapter), som anvÀnds i Elastic Compute Cloud (EC2) för att organisera kommunikation mellan EC2-noder med hastigheter upp till 25 Gb/s. I ena-drivern har stöd för NETMAP lagts till.
- I FreeBSD HEAD har en ny MMC/SD-stack antagits, baserad pÄ CAM-ramverket, som gör det möjligt att ansluta enheter med SDIO (Secure Digital I/O) grÀnssnitt. SDIO anvÀnds exempelvis i WiFi och Bluetooth-moduler pÄ mÄnga plattor, som Raspberry Pi 3. Den nya stacken möjliggör ocksÄ anvÀndning av CAM-grÀnssnittet för att skicka SD-kommandon frÄn anvÀndarrum-applikationer, vilket ger möjlighet att skapa enhetsdrivrutiner som fungerar pÄ anvÀndarnivÄ. Arbetet med att utveckla drivrutiner för Broadcom:s trÄdlösa chip, som fungerar i FullMAC-lÀget (chipet kör en liknande operativsystemimplementation med sin egen trÄdlösa stack för 802.11), har pÄbörjats.
- Arbetet med att implementera NFSv4.2 (RFC-7862) för FreeBSD pÄgÄr. Den nya versionen av NFS har lagt till stöd för funktioner som posix_fadvise, posix_fallocate, och lÀgena SEEKHOLE/SEEKDATA i lseek, samt operationer för lokal kopiering av fildelar pÄ servern (utan att överföra till klienten).
För nÀrvarande har FreeBSD redan implementerat grundlÀggande stöd för operationerna LayoutError, IOAdvise, Allocate och Copy. à terstÄr att implementera operationen Seek, som Àr nödvÀndig för att anvÀnda lseek(SEEKHOLE/SEEKDATA) med NFS. Stödet för NFSv4.2 planeras att inkluderas i FreeBSD 13.
- Lagringssystem och filsystem
- Projektet för att omarbeta drivrutinen för FUSE (File system in USErspace) nÀrmar sig sitt slut, vilket möjliggör skapande av filsystemimplementationer i anvÀndarrummet. Den ursprungligen levererade drivrutinen Àr förÄldrad och innehÄller mÄnga fel. Inom ramen för projektet för att modernisera drivrutinen har stöd för protokollet FUSE 7.23 implementerats (tidigare version 7.8 stöddes, slÀppt för 11 Är sedan), kod har lagts till för att kontrollera ÄtkomstrÀttigheter pÄ kÀrnnivÄ ("-o default_permissions"), anrop av VOP_MKNOD, VOP_BMAP och VOP_ADVLOCK har lagts till, möjlighet att avbryta FUSE-operationer har sÀkerstÀllts, stöd för namnlösa rör och Unix-sockets i fusefs har lagts till, möjligheten att anvÀnda kqueue för /dev/fuse har införts, uppdatering av monteringsparametrar via "mount -u" har godkÀnts, stöd för att exportera fusefs via NFS har implementerats, hantering av RLIMIT_FSIZE har införts, flaggor som FOPEN_KEEP_CACHE och FUSE_ASYNC_READ har lagts till, betydande prestandaoptimeringar har genomförts och cacheorganisationen har förbÀttrats.
- I koden för sidbyte av minnesutrymmet i vÀxlingsminnet (swap pager) har stöd för operationen BIO_DELETE lagts till, vilket gör det möjligt att anvÀnda kommandot TRIM vid borttagning av block frÄn SSD-enheter för att öka deras livslÀngd.
- Stöd för hÄrdvara
- Arbetet med att implementera stöd för ARM64 SoC Broadcom BCM5871X med ARMv8 Cortex-A57-processorer, som riktar sig mot anvÀndning i routrar, gateways och nÀtverkslagring, fortsÀtter. Under rapportperioden har stödet för interna och externa iProc PCIe-bussar förbÀttrats, stöd för BNXT Ethernet har lagts till, och arbete pÄgÄr för att aktivera den inbyggda kryptomotoren för att snabba upp IPsec. Integrationen av koden i HEAD-grenen förvÀntas under andra halvÄret.
- Arbetet med att stödja den 64-bitars SoC NXP LS1046A baserad pÄ ARMv8 Cortex-A72-processorn med en integrerad motor för acceleration av nÀtverkspaketbehandling, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 och USB 3.0 har inletts. Stöd för grundplattformen (multi-user SMP) och SATA 3.0 har redan implementerats. Stöd för USB 3.0, SD/MMC och I2C Àr under utveckling. Planer finns för stöd för Ethernet, GPIO och QSPI. Arbetet berÀknas vara klart och ingÄ i HEAD-grenen under fjÀrde kvartalet 2019.
- Drivrutinerna mlx5en och mlx5ib för Ethernet- och InfiniBand-adaptrar frÄn Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] och ConnectX-6 [Dx] har uppdaterats. Stöd för Mellanox Socket Direct-adaptrar (ConnectX-6) har lagts till, vilket möjliggör en bandbredd pÄ upp till 200 Gb/s pÄ PCIe Gen 3.0. För multiprocessorchipparna "BlueField" har stöd för RShim-drivrutinen lagts till. Paketet mstflint med ett set diagnosverktyg för Mellanox-adaptrar har lagts till portarna.
- Applikationer och portsystem
- Komponenterna i det grafiska stapeln har uppdaterats. Drivrutinen drm.ko (Direct Rendering Manager) har portats frĂ„n kĂ€rna Linux 5.0. Denna drivrutin betraktas som experimentell och har lagts till i porttrĂ€det som graphics/drm-devel-kmod. Eftersom drivrutinen anvĂ€nder det uppdaterade ramverket Linux KPI för kompatibilitet med DRM API i Linux-kĂ€rnan, krĂ€vs FreeBSD CURRENT för att den ska fungera. Ăven drm-drivrutinen vboxvideo.ko för virtuell GPU i VirtualBox har portats frĂ„n Linux. Mesa-paketet har uppdaterats till version 18.3.2 och konverterats till att anvĂ€nda LLVM frĂ„n porten devel/llvm80 istĂ€llet för devel/llvm60.
- FreeBSD:s porttrĂ€d har passerat 37000 portar, och antalet öppna PR har hĂ„llit sig pĂ„ 2146. Under rapporteringsperioden har 7837 Ă€ndringar genomförts av 172 utvecklare. Tre nya deltagare har fĂ„tt committrĂ€ttigheter. Bland de betydande versionuppdateringarna i portarna finns: MySQL 5.7, Python 3.6, Ruby 2.5, Samba 4.8, Julia 1.0, Firefox 68.0, Chromium 75.0.3770.100. Alla portar skrivna i Go har konverterats för att anvĂ€nda flaggan âUSES=goâ. Flaggan âURES=cabalâ har lagts till för paketmanagern Cabal, som anvĂ€nds för Haskell-kod. Strikt lĂ€ge för stackskydd har aktiverats. Python 3.6 föreslĂ„s som standard i stĂ€llet för 2.7.
- En release av verktyget , som erbjuder en alternativ version av /sbin/sysctl, som anvÀnder för utmatning och ger en utökad uppsÀttning alternativ. Nsysctl kan anvÀndas för att tydligt övervaka tillstÄndet för sysctl-vÀrden och presentera information om objekt i strukturerad form. Utmatning i formaten XML, JSON och HTML Àr möjlig;
KĂ€lla: opennet.ru
