Rapport om utvecklingen av FreeBSD för tredje kvartalet 2019

Publicerad Rapport om utvecklingen av FreeBSD-projektet frÄn juli till september 2019. Bland Àndringarna kan nÀmnas:

  • AllmĂ€nna och systemfrĂ„gor
    • KĂ€rnteamet har i stort sett godkĂ€nt möjligheten att inkludera kod som levereras under BSD-licens med ett tillĂ€ggsavtal om anvĂ€ndning av patent (BSD+Patent), men beslutet om att inkludera varje komponent under denna licens mĂ„ste godkĂ€nnas separat;
    • Det första mötet för arbetsgruppen, som skapades för att genomföra migreringen av kĂ€llkoder frĂ„n det centraliserade versionshanteringssystemet Subversion till det decentraliserade systemet Git, har Ă€gt rum. Diskussionen om lĂ€mpligheten av migreringen pĂ„gĂ„r fortfarande och det Ă„terstĂ„r att lösa mĂ„nga frĂ„gor (till exempel hur man ska hantera contrib/, huruvida man behöver regenerera hashar i det aktuella git-repositoriet och hur man bĂ€st implementerar testning av commits);
    • FrĂ„n NetBSD portat KCSAN-verktyget (Kernel Concurrency Sanitizer), som möjliggör att upptĂ€cka uppkomsten av race-conditions mellan kĂ€rntrĂ„dar som körs pĂ„ olika CPU;
    • Arbetet pĂ„gĂ„r för att anvĂ€nda den inbyggda assemblatorn i Clang (IAS) istĂ€llet för assemblatorn frĂ„n GNU binutils;
    • Infrastrukturen för Linux-miljöemulering (Linuxulator) har anpassats för att fungera pĂ„ ARM64-arkitektur. Systemanropet "renameat2" har implementerats. Verktyget strace har förbĂ€ttrats för att diagnostisera problem i Linux-exekverbara filer som körs i Linuxulator. Problemet med buggningar vid lĂ€nking av exekverbara filer med den fĂ€rska glibc har lösts. Portar med Linux-komponenter för Linuxulator har uppdaterats till CentOS 7.7;
    • Inom ramen för Google Summer of Code-programmet har studenterna framgĂ„ngsrikt genomfört sex projekt: en enhetlig (IPv4/IPv6) ping-verktyg har utvecklats, verktyg för att testa brandvĂ€ggar och upptĂ€ckta buggar i kĂ€rnan (Kernel sanitizer) har tagits fram, en modul för mac_ipacl har föreslagits, kod för komprimering av virtuell minne har skrivits och arbetet med att separera portbyggnadsprocessen frĂ„n lokal installation har genomförts;
    • Projektet för fuzzing-testning av FreeBSD-kĂ€rnan fortsĂ€tter att utvecklas med hjĂ€lp av systemet syzkaller. Under den rapporterade perioden har över tio fel upptĂ€ckts och Ă„tgĂ€rdats med hjĂ€lp av syzkaller. För att köra syzkaller i virtuella maskiner baserade pĂ„ bhyve har en separat server avsatts, och med hjĂ€lp av
      Syzbot har implementerat övervakning av olika FreeBSD-subsystem i Googles infrastruktur. Information om alla kraschade hÀndelser överförs till tjÀnsten backtrace.io för att förenkla deras gruppering och analys;
    • Arbetet pĂ„gĂ„r för att uppdatera implementeringen av zlib pĂ„ kĂ€rnnivĂ„.
      Koden relaterad till komprimering har översatts frÄn zlib 1.0.4, som slÀpptes för över 20 Är sedan, till den aktuella kodbasen zlib 1.2.11. För att enhetliggöra Ätkomsten till zlib har funktionerna compress, compress2 och uncompress lagts till kÀrnan. Koden som möjliggör funktionen av PPP-protokollet frÄn netgraph-subsystemet har översatts till att anvÀnda systemimplementeringen av zlib, istÀllet för sin egen version av detta bibliotek. De nya zlib implementeringarna inkluderar ocksÄ subsystemen kern_ctf.c, opencryptodeflate, geom_uzip, subr_compressor,
      if_mxge, bxe updated och ng_deflate;
    • Ett nytt kernelgrĂ€nssnitt utvecklas sysctlinfo, som gör det möjligt att hitta element i sysctl-parametrars databas, som bearbetas i form av MIB (Management Information Base), och överföra information om objekt till anvĂ€ndarutrymmet.
  • SĂ€kerhet
    • En kĂ€rnmodul har utvecklats mac_ipacl, baserad pĂ„ TrustedBSD MAC Framework och implementerar ett system för Ă„tkomstkontroll till instĂ€llningarna i nĂ€tverksstacken för jail-miljöer. Till exempel kan administratören av vĂ€rdsystemet med hjĂ€lp av mac_ipacl förbjuda anvĂ€ndaren root i jail-miljön att Ă€ndra eller stĂ€lla in IP-adresser eller parametrar för nĂ€tverksdelar för vissa nĂ€tverksgrĂ€nssnitt. Det föreslagna systemet för mandatĂ„tkomstkontroll möjliggör kan ange listor över IP-adresser och delnĂ€t som Ă€r tillĂ„tna för Jail, förbjuda installerandet av vissa IP och delnĂ€t i Jail eller begrĂ€nsa Ă€ndringen av parametrar endast för vissa nĂ€tverksgrĂ€nssnitt;
    • Företaget Intel har överlĂ„tit projektet för portningen av programvarustack TPM 2.0 (Trusted Platform Module) för interaktion med en sĂ€kerhetschip för sĂ€ker berĂ€kning, som vanligtvis anvĂ€nds för verifierad laddning av firmware och OS-laddare. Komponenterna i stacken presenteras i form av portarna security/tpm2-tss, security/tpm2-tools och security/tpm2-abrmd. Porten tpm2-tss inkluderar bibliotek för att anvĂ€nda TPM2 API, tpm2-tools tillhandahĂ„ller kommandoradsverktyg för att utföra operationer med TPM, och tpm2-abrmd innehĂ„ller en bakgrundsprocess med implementation av komponenterna TPM Access Broker och Resource Manager, som multiplexar förfrĂ„gningar frĂ„n olika anvĂ€ndare av TPM till en enhet. Förutom verifierad laddning kan TPM i FreeBSD anvĂ€ndas för att förstĂ€rka sĂ€kerheten för Strongswan IPsec, SSH och TLS genom att utföra kryptografiska operationer pĂ„ en separat chip.
    • KĂ€rnan för amd64-arkitekturen har anpassats för att kunna laddas med metoden W^X (write XOR execute), som innebĂ€r att minnessidor inte kan vara tillgĂ€ngliga för bĂ„de skrivning och exekvering samtidigt (kĂ€rnan kan nu laddas med exekverbara minnessidor dĂ€r skrivning Ă€r förbjuden). Den nya skyddsmekanismen för kĂ€rnan har lagts till i HEAD-grenen och kommer att ingĂ„ i utgĂ„vorna av FreeBSD 13.0 och 12.2.
    • För systemanropen mmap och mprotect. genomförd makro PROT_MAX(), som gör det möjligt att definiera en tillĂ„ten uppsĂ€ttning av flaggor för Ă„tkomstbegrĂ€nsning (PROT_READ, PROT_WRITE, PROT_EXEC) vid framtida modifieringar. Med PROT_MAX() kan utvecklaren förbjuda att ett minnesomrĂ„de klassificeras som exekverbart eller begĂ€ra minne som inte tillĂ„ter exekvering, men som senare kan Ă€ndras till exekverbart. Till exempel kan ett minnesomrĂ„de öppnas för skrivning endast under den dynamiska lĂ€nkningen eller JIT-kodgenereringen, men efter att skrivningen Ă€r klar begrĂ€nsas det bara till lĂ€sning och exekvering, och dĂ€rför, i hĂ€ndelse av en kompromiss, kan inte angriparen tillĂ„ta skrivning för den aktuella minnesblocket. Förutom PROT_MAX() finns ocksĂ„ sysctl vm.imply_prot_max, vars aktivering definierar uppsĂ€ttningen av tillĂ„tna flaggor baserat pĂ„ de ursprungliga parametrarna för det första mmap-anropet.
    • För att förstĂ€rka skyddet mot utnyttjande av sĂ„rbarheter har en mekanism för randomisering av förskjutningar av pekare, som adresserar den initiala stackramen och de strukturer som placeras pĂ„ stacken med information om omgivningen, programmets startparametrar och data för körbara bilder i ELF-format föreslagits utöver tekniken för randomisering av adressutrymmet (ASLR);
    • Arbetet med att ta bort den osĂ€kra funktionen gets frĂ„n libc (frĂ„n och med C11-standarden har denna funktion uteslutits frĂ„n specifikationen) och justeringen av portar som fortfarande anvĂ€nder denna funktion har genomförts. Ändringen planeras att föreslĂ„s i FreeBSD 13.0;
    • Ett experimentellt projekt har startats för att skapa verktyg för orkestrering av jail-miljöer baserat pĂ„ ramen pot för att skapa och exportera bilder, utformat pĂ„ liknande sĂ€tt som Docker, samt drivrutinen nomad, som tillhandahĂ„ller ett grĂ€nssnitt för dynamisk körning av applikationer i jail-miljöer. Den föreslagna modellen möjliggör separation av processerna för att skapa jail-miljöer och distribuera applikationer i dem. Ett av projektets mĂ„l Ă€r att tillhandahĂ„lla ett verktyg för att manipulera jail som containrar i stil med Docker;
  • Lagringssystem och filsystem
    • FrĂ„n NetBSD till verktyget "makefs" har flyttats stöd för filsystemet FAT (msdosfs). De förberedda Ă€ndringarna möjliggör skapandet av FS-bilder med FAT utan att anvĂ€nda drivrutinen md och utan root-behörigheter;
    • Omarbetningen av drivrutinen för FUSE (File system in USErspace) subsystemet som tillĂ„ter skapandet av filsystemimplementationer i anvĂ€ndarutrymmet har slutförts. Den ursprungliga drivrutinen hade mĂ„nga fel och var baserad pĂ„ version FUSE 7.8, som slĂ€pptes för 11 Ă„r sedan. Inom ramen för uppgraderingsprojektet för drivrutinen har stöd för protokollet FUSE 7.23 införts, kod för att kontrollera behörigheter pĂ„ kĂ€rnans sida har lagts till ("-o default_permissions"), anrop till VOP_MKNOD, VOP_BMAP och VOP_ADVLOCK har lagts till, möjligheten att avbryta FUSE-operationer har sĂ€kerstĂ€llts, stöd för namnlösa kanaler och unix-socketar 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 export av fusefs via NFS har implementerats, RLIMIT_FSIZE har beaktats, flaggorna FOPEN_KEEP_CACHE och FUSE_ASYNC_READ har lagts till, betydande prestandaoptimeringar har genomförts och caching-strukturen har förbĂ€ttrats. Den nya drivrutinen Ă€r inkluderad i brancherna head och stable\/12 (har ingĂ„tt i FreeBSD 12.1);
    • Arbetet med att implementera NFSv4.2 (RFC-7862) för FreeBSD Ă€r nĂ€stan klart. Under rapporteringsperioden lades huvudfokus pĂ„ testning. Tester för att kontrollera kompatibiliteten med implementationen frĂ„n Linux har slutförts, men verifieringen av servern pNFS med NFSv4.2 pĂ„gĂ„r fortfarande. I allmĂ€nhet anses koden nu vara redo för integration i grenen FreeBSD head/current. Den nya versionen av NFS har fĂ„tt stöd för funktionerna posix_fadvise, posix_fallocate, lĂ€gena SEEKHOLE/SEEKDATA i lseek, samt operationer för lokal kopiering av filavsnitt pĂ„ servern (utan överföring till klienten);
  • Stöd för hĂ„rdvara
    • Projektet för att förbĂ€ttra FreeBSD:s prestanda pĂ„ bĂ€rbara datorer har inletts. Den första enheten som genomgĂ„tt en granskning av hĂ„rdvarustödet i FreeBSD Ă€r Lenovo X1 Carbon sjunde generationen;
    • CheriBSD, en avknoppning frĂ„n FreeBSD för forskningsprocessorns arkitektur CHERI (Capability Hardware Enhanced RISC Instructions), har uppdaterats för att stödja den kommande ARM Morello-processorn, som kommer att stödja CHERI-minneshanteringssystemet baserat pĂ„ Capsicum-projektets skyddsmodell. Morello-chipet planerar berĂ€knas slĂ€ppas under 2021. Utvecklarna av CheriBSD fortsĂ€tter ocksĂ„ att följa utvecklingen av den referensprototypen av CHERI baserad pĂ„ MIPS-arkitekturen;
    • Stödet för RockChip RK3399-chips, som anvĂ€nds i RockPro64- och NanoPC-T4-kort, har utökats. Den mest betydande förbĂ€ttringen har varit stödet för eMMC och utvecklingen av en ny drivrutin för den anvĂ€nda eMMC-kontrollern;
    • Arbetet med att implementera stödet för ARM64 SoC Broadcom BCM5871X med ARMv8 Cortex-A57-processorer, som Ă€r avsedda för anvĂ€ndning i routrar, gateways och nĂ€tverkslagring, har fortsatt. Under rapporteringsperioden
      har stödet för iProc PCIe utökats och möjligheten att anvÀnda hÄrdvarukryptografiska operationer för att accelerera IPsec-arbetet har lagts till.
      Koden förvÀntas integreras i HEAD-grenen under fjÀrde kvartalet;
    • Betydande framsteg har noterats i utvecklingen av FreeBSD-porten för powerpc64-plattformen. Fokus ligger pĂ„ att sĂ€kerstĂ€lla bra prestanda pĂ„ system med IBM POWER8 och POWER9-processorer, men valfritt stöds Ă€ven drift pĂ„ Ă€ldre Apple Power Mac, x500 och Amiga A1222. Grenen powerpc*/12 fortsĂ€tter att distribueras med gcc 4.2.1, medan branch powerpc*/13 snart kommer att övergĂ„ till llvm90. Av 33306 portar byggs 30514 framgĂ„ngsrikt;
    • Porteringen av FreeBSD för 64-bitars SoC NXP LS1046A baserat pĂ„ ARMv8 Cortex-A72-processorn med integrerad nĂ€tverkspaketaccelerationsmotor, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 och USB 3.0 har fortsatt. Under rapportperioden implementerades stöd för USB 3.0, SD/MMC, I2C, nĂ€tverksgrĂ€nssnittet DPAA och GPIO. Planer finns för att stödja QSPI och optimera prestandan för nĂ€tverksgrĂ€nssnittet. Arbetet förvĂ€ntas bli klart och inkluderas i HEAD-grenen under fjĂ€rde kvartalet 2019.
    • Drivern ena har uppdaterats med stöd för andra generationens ENAv2 (Elastic Network Adapter) nĂ€tverksadapter som anvĂ€nds i infrastrukturen Elastic Compute Cloud (EC2) för att möjliggöra kommunikation mellan EC2-noder med hastigheter upp till 25 Gb/s. Stödet för NETMAP har lagts till och testats i ena-drivern, samt har minneslayoutanpassningen genomförts för att aktivera LLQ-lĂ€get i Amazon EC2 A1-miljöer.
  • Applikationer och portsystem
    • Komponenterna i grafikstacken och portar relaterade till xorg har uppdaterats. Portar som anvĂ€nder USE_XORG och XORG_CAT har övergĂ„tt till USES-ramverket istĂ€llet för att anropa bsd.xorg.mk via bsd.port.mk. SĂ„dana portar inkluderar nu flaggan "USES=xorg" i make-filer. Funktionaliteten av XORG_CAT har separerats frĂ„n bsd.xorg.mk och aktiveras nu med flaggan "USES=xorg-cat". Verktyg har lagts till för att direkt skapa xorg-portar frĂ„n git-repositoriet.
      freedesktop.org, vilket exempelvis gör det möjligt att skapa portar för Ànnu icke slÀppta versioner. I framtiden planeras verktyg för att anvÀnda byggsystemet meson istÀllet för autotools för att bygga xorg-portar.

      Arbetet med att rensa bort gamla xorg-portar kopplade till redan avvecklade komponenter har genomförts; exempelvis har porten x11/libXp tagits bort, medan portarna x11/Xxf86misc, x11-fonts/libXfontcache och graphics/libGLw har klassificerats som förÄldrade.

    • Arbetet med att förbĂ€ttra stödet för Java 11 och nyare versioner pĂ„ FreeBSD samt portering av vissa förĂ€ndringar till Java 8 har genomförts. Efter att stöd för nya funktioner i Java 11 som Java Flight Recorder, HotSpot Serviceability Agent, HotSpot Debugger, DTrace, Javac Server, Java Sound och SCTP implementerades pĂ„ FreeBSD, har fokus flyttats till att sĂ€kerstĂ€lla att alla kompatibilitetstester passerar. Antalet fel under tester har minskat frĂ„n 50 till 2.
    • Skrivbordet KDE Plasma, KDE Frameworks, KDE Applications och Qt hĂ„lls uppdaterade och har uppgraderas till de senaste versionerna.
    • Portarna med skrivbordet Xfce har uppdaterats till den senaste versionen. 4.14;
    • FreeBSD-porttrĂ€det har passerat grĂ€nsen pĂ„ 38000 portar, antalet öppna PR överstiger lite mer Ă€n 2000, varav 400 PR fortfarande inte har behandlats. Under rapporteringsperioden har 7340 Ă€ndringar gjorts av 169 utvecklare. TvĂ„ nya deltagare (Santhosh Raju och Dmitri Goutnik) har fĂ„tt committers rĂ€ttigheter. En ny version av paketförvaltaren pkg 1.12 har publicerats med stöd för overlay i porttrĂ€det och stĂ€dning av bsd.sites.mk. Bland de betydande versionuppdateringarna i portarna mĂ€rks: Lazarus 2.0.4, LLVM 9.0, Perl5.30, PostgreSQL 11, Ruby 2.6, Firefox 69.0.1, Firefox-esr 68.1.0, Chromium 76.0;
    • Utvecklingen av projektet fortsĂ€tter ClonOS, utvecklande Ă€r en specialiserad distribution för distribution av infrastruktur för virtuella servrar. NĂ€r det gĂ€ller de uppgifter som löses liknar ClonOS system som Proxmox, Triton (Joyent), OpenStack, OpenNebula och Amazon AWS, med den huvudsakliga skillnaden att det anvĂ€nder FreeBSD och ger möjlighet att hantera, distribuera och administrera Jail-containrar i FreeBSD och virtuella miljöer baserade pĂ„ hypervisorerna Bhyve och Xen. Bland de senaste förĂ€ndringarna mĂ€rks stödet för
      cloud-init för Linux/BSD VM och cloudbase-init för Windows VM, pÄbörjad övergÄng till att anvÀnda egna bilder, anvÀndning av Jenkins CI för testning av byggen och nytt pkg-repo för installation av
      ClonOS frÄn paketen.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster