Rapport om udviklingen af FreeBSD for tredje kvartal 2019

Publiceret Rapport om udviklingen af FreeBSD-projektet fra juli til september 2019. Af ændringer kan nævnes:

  • Generelle og systemmæssige spørgsmål
    • Kerneteamet har generelt godkendt muligheden for at inkludere kode i systemet, som leveres under BSD-licensen med en supplerende patentbrugsret (BSD+Patent), men beslutningen om at inkludere hvert komponent under denne licens skal godkendes separat;
    • Det første møde i arbejdsgruppen, der er oprettet for at gennemføre migrationen af kildekoder fra det centraliserede system Subversion til det decentrale system Git, har fundet sted. Diskussionen om fordelene ved migreringen fortsætter stadig, og mange spørgsmål skal stadig have fundet løsninger (for eksempel hvordan man skal forholde sig til contrib/, om der skal regenereres hashes i det aktuelle git-repo og hvordan man bedst implementerer testning af commits);
    • Fra NetBSD porteret KCSAN-værktøjet (Kernel Concurrency Sanitizer), der gør det muligt at opdage tilstanden af kapløb mellem kerneltråde, der kører på forskellige CPU'er;
    • Der arbejdes på at bruge den indbyggede assembler i Clang (IAS) i stedet for assembleren fra GNU binutils;
    • Emuleringsinfrastrukturen til Linux-miljøet (Linuxulator) er blevet tilpasset til at fungere på ARM64-arkitekturen. Systemkaldet «renameat2» er blevet implementeret. strace-værktøjet er blevet forbedret til at diagnosticere problemer i eksekverbare filer fra Linux, der køres i Linuxulator. Problemet med fejl ved tilknytning af eksekverbare filer til den nyeste glibc er blevet løst. Porte med Linux-komponenter til Linuxulator er blevet opdateret til CentOS 7.7;
    • I forbindelse med Google Summer of Code er der blevet gennemført seks projekter af studerende: der er forberedt en implementering af den ensartede (IPv4/IPv6) ping-værktøj, udviklet værktøjer til at teste firewalls og opdage fejl i kernen (Kernel sanitizer), foreslået en mac_ipacl-modul, skrevet kode til komprimering af virtuel hukommelse og arbejdet med at adskille portbyggeprocessen fra lokal installation;
    • Projektet til fuzzing-test af FreeBSD-kernen fortsætter med at udvikle sig ved hjælp af systemet syzkaller. I det rapporterede periode er der blevet identificeret og rettet mere end ti fejl ved hjælp af syzkaller. For at køre syzkaller i virtuelle maskiner baseret på bhyve er der afsat en separat server, og ved hjælp af
      Syzbot har etableret overvågning af forskellige FreeBSD-underindhold i Google-infrastrukturen. Der er organiseret overførsel af oplysninger om alle nedbrud til backtrace.io-tjenesten for at lette deres gruppering og analyse;
    • Der arbejdes på opdatering af zlib-implementeringen på kernel-niveau.
      Den komprimeringskode, der er relateret til zlib, er blevet oversat fra zlib 1.0.4, der blev udgivet for mere end 20 år siden, til den nuværende kodeskabelon zlib 1.2.11. For at ensarte adgangen til zlib er der tilføjet funktioner til kernel såsom compress, compress2 og uncompress. Koden, der understøtter PPP-protokollen fra netgraph-subsystemet, er blevet oversat til at bruge den systemmæssige implementering af zlib i stedet for sin egen version af dette bibliotek. De nye zlib-versioner er også blevet oversat i subsystemerne kern_ctf.c, opencryptodeflate, geom_uzip, subr_compressor,
      if_mxge, bxe updated og ng_deflate;
    • Der udvikles et nyt kernel-interface sysctlinfo, som muliggør at finde elementer i sysctl-parameterbasen, der behandles i form af MIB (Management Information Base), og at overføre oplysninger om objekter til brugerområdet.
  • Sikkerhed
    • Et kernelmodul er blevet udviklet mac_ipacl, baseret på TrustedBSD MAC Framework, som implementerer et adgangskontrolsystem for netværksstackens indstillinger for jail-miljøer. For eksempel kan administratoren for værtsystemet med mac_ipacl forbyde root-brugeren i jail-miljøet at ændre eller indstille IP-adresser eller subnetparametre for bestemte netværksinterfaces. Det foreslåede system til mandatorisk adgangskontrol det muligt angiver lister over IP-adresser og subnet, der er tilladt for Jail, forbyder opsætningen af bestemte IP-områder og subnet i Jail eller begrænser ændringen af parametre kun til bestemte netværksinterfaces;
    • Intel har overdraget projektgruppen porten af softwarestacken TPM 2.0 (Trusted Platform Module) til interaktion med en chip til sikre beregninger, der typisk bruges til verifikation af opstart af firmware og operativsystembootloader. Komponenterne i stakken præsenteres som porte security/tpm2-tss, security/tpm2-tools og security/tpm2-abrmd. Porten tpm2-tss inkluderer biblioteker til brug af TPM2 API, tpm2-tools tilbyder kommandolinjeværktøjer til udførelse af operationer med TPM, mens tpm2-abrmd indeholder en baggrundsproces med implementering af TPM Access Broker og Resource Manager, der multiplexerer forespørgsler fra forskellige TPM-brugere til en enkelt enhed. Udover verifikation af opstart kan TPM i FreeBSD også anvendes til at forbedre sikkerheden i Strongswan IPsec, SSH og TLS ved at udføre kryptografiske operationer på en separat chip;
    • Kernen til amd64-arkitekturen er tilpasset til opstart ved hjælp af W^X (write XOR execute) beskyttelsesteknikken, som indebærer, at hukommelsessider ikke kan være tilgængelige til både skrivning og udførelse på samme tid (kernen kan nu starte med eksekverbare hukommelsessider, hvor skrivning er forbudt). Den nye beskyttelsesmetode for kernen er inkluderet i HEAD-grenen og vil være en del af udgivelserne FreeBSD 13.0 og 12.2;
    • Til systemkald mmap og mprotect implementeret makro PROT_MAX(), der muliggør at definere det tilladte sæt af adgangsbegrænsningsflags (PROT_READ, PROT_WRITE, PROT_EXEC) ved fremtidige ændringer. Ved hjælp af PROT_MAX() kan udvikleren forhindre at et hukommelsesområde klassificeres som eksekverbart eller anmode om hukommelse, der ikke tillader udførelse, men som senere kan ændres til eksekverbar. For eksempel kan hukommelsesområdet åbnes for skrivning kun under dynamisk linkning eller generering af JIT-kode, men efter at skriveprocessen er afsluttet, er det begrænset til kun at være læse- og eksekverbart, og ved en eventuel kompromittering vil angriberen ikke kunne tillade skrivning til det pågældende hukommelsesblok. Udover PROT_MAX() er sysctl vm.imply_prot_max også implementeret, hvor ved aktivering sæt af tilladte flags bestemmes ud fra de oprindelige parametre fra det første mmap-kald;
    • For enhanced protection against exploitation of vulnerabilities, in addition to address space randomization (ASLR), a mechanism for randomizing the offsets of pointers that address the initial stack frame and the structures containing information about the environment, program launch parameters, and data for executable images in ELF format has been proposed;
    • Work has been carried out to remove the unsafe function gets from libc (starting with the C11 standard, this function has been excluded from the specification) and to correct ports still using this function. The change is planned to be proposed in FreeBSD 13.0;
    • An experimental project has been launched to create orchestration tools for jail environments based on the framework pot for creating and exporting images, implemented similarly to Docker, and the driver nomad, which provides an interface for dynamically launching applications in a jail environment. The proposed model allows for the separation of the processes of creating jail environments and deploying applications within them. One of the goals of the project is to provide a means for manipulating jails like containers in the style of Docker;
  • Lagringssystemer og filsystemer
    • From NetBSD, support for the FAT file system (msdosfs) has been transferred to the utility 'makefs'. The prepared changes allow for the creation of FAT file system images without using the md driver and without root privileges; transferred support for the FAT file system (msdosfs). The prepared changes allow for the creation of FAT file system images without using the md driver and without root privileges;
    • The driver for the FUSE (File system in USErspace) subsystem has been completely reworked, allowing for the implementation of file systems in user space. The originally supplied driver contained many bugs and was based on version FUSE 7.8, released 11 years ago. As part of the driver modernization project, support for the FUSE 7.23 protocol has been implemented, code for access rights verification on the kernel side ('-o default_permissions') has been added, VOP_MKNOD, VOP_BMAP, and VOP_ADVLOCK calls have been added, the possibility of interrupting FUSE operations has been provided, support for unnamed pipes and Unix sockets in fusefs has been added, the use of kqueue for /dev/fuse has been enabled, the update of mount parameters via 'mount -u' has been allowed, support for exporting fusefs via NFS has been realized, accounting for RLIMIT_FSIZE has been implemented, FOPEN_KEEP_CACHE and FUSE_ASYNC_READ flags have been added, significant performance optimizations have been made, and caching organization has been improved. The new driver is included in the head and stable/12 branches (entered the composition of FreeBSD 12.1);
    • Arbejdet med implementeringen af NFSv4.2 (RFC-7862) for FreeBSD er næsten færdigt. I den rapporterede periode har fokus været på testning. Testene for at kontrollere kompatibilitet med implementeringen fra Linux er afsluttet, men serverens funktionalitet med pNFS og NFSv4.2 er stadig under test. Koden betragtes generelt som klar til integration i FreeBSD head/current. Den nye version af NFS har tilføjet understøttelse af funktioner som posix_fadvise, posix_fallocate, samt SEEKHOLE/SEEKDATA til lseek og operationer til lokal kopiering af fildele på serveren uden at transmittere dem til klienten;
  • Hardwareunderstøttelse
    • Projektet til forbedring af FreeBSD's funktionalitet på bærbare computere er startet. Den første enhed, der gennemgik hardwarekompatibilitetsaudit i FreeBSD, var Lenovo X1 Carbon 7. generation;
    • CheriBSD, en afart af FreeBSD til den forskningsbaserede processorarkitektur CHERI (Capability Hardware Enhanced RISC Instructions) er blevet opdateret til at understøtte den kommende ARM Morello-processor, som vil understøtte et hukommelsessikkerhedssystem baseret på CHERI-modelbeskyttelsen fra Capsicum-projektet. Morello-chippen planlægger forventes at blive udgivet i 2021. udviklerne af CheriBSD følger også udviklingen af CHERI-referencen prototypen baseret på MIPS-arkitekturen;
    • Understøttelsen af RockChip RK3399-chips, der anvendes i RockPro64- og NanoPC-T4-kortene, er blevet udvidet. Den mest væsentlige forbedring er understøttelse af eMMC og udviklingen af en ny driver til den anvendte eMMC-controller;
    • Arbejdet med at implementere understøttelse af ARM64 SoC Broadcom BCM5871X med ARMv8 Cortex-A57-processorer, der er målrettet mod brug i routere, gateways og netværkslager, er fortsat. I den rapporterede periode
      er understøttelsen af iProc PCIe blevet udvidet, og muligheden for udførelse af hardwarekryptografiske operationer til acceleration af IPsec er blevet tilføjet.
      Integrationen af koden i HEAD-grenen forventes i fjerde kvartal;
    • Der er betydelige fremskridt i udviklingen af FreeBSD-porten til powerpc64-platformen. Der er særlig fokus på at sikre en stabil funktionalitet på systemer med IBM POWER8- og POWER9-processorer, mens ældre Apple Power Mac, x500 og Amiga A1222 også understøttes valgfrit. powerpc*/12-grenen fortsætter med at blive leveret med gcc 4.2.1, mens powerpc*/13-grenen snart vil blive opdateret til llvm90. Af 33306 porte er 30514 blevet succesfuldt bygget;
    • Porteringen af FreeBSD til den 64-bit SoC NXP LS1046A baseret på ARMv8 Cortex-A72-processoren med integreret netværkspakke-accelerator, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 og USB 3.0 er fortsat. I den rapporterede periode er understøttelse af USB 3.0, SD/MMC, I2C, netværksgrænsefladen DPAA og GPIO blevet implementeret. Der er planer om at understøtte QSPI og optimere ydeevnen af netværksgrænsefladen. Afslutning af arbejdet og inkludering i HEAD-grenen forventes i fjerde kvartal 2019.
    • Driveren ena er blevet opdateret med understøttelse af anden generation af ENAv2 netværksadaptere (Elastic Network Adapter), der anvendes i Elastic Compute Cloud (EC2) infrastrukturen til at etablere forbindelse mellem EC2-noder med hastigheder op til 25 Gb/s. Understøttelsen af NETMAP er blevet tilføjet og testet i ena-driveren, og hukommelseslayoutet er blevet tilpasset for at inkludere LLQ-tilstand i Amazon EC2 A1-miljøer.
  • Applikationer og portsystem
    • Grafikstakens komponenter og porte relateret til xorg er blevet opdateret. Porte, der bruger USE_XORG og XORG_CAT, er blevet overført til USES-frameworket i stedet for at kalde bsd.xorg.mk gennem bsd.port.mk. Sådanne porte inkluderer nu flaget "USES=xorg" i make-filerne. Funktionaliteten af XORG_CAT er blevet adskilt fra bsd.xorg.mk og aktiveres nu med flaget "USES=xorg-cat". Der er tilføjet værktøjer til direkte at generere xorg-porte fra git-repositoriet.
      freedesktop.org, som for eksempel muliggør oprettelse af porte til endnu ikke offentliggjorte versioner. Der er planer om at forberede et værktøj til brug af meson-byggesystemet i stedet for autotools til at bygge xorg-porte.

      Der er udført oprydningsarbejde i gamle xorg-porte, der er knyttet til allerede ikke-understøttede komponenter, for eksempel er porten x11/libXp blevet fjernet, mens x11/Xxf86misc, x11-fonts/libXfontcache og graphics/libGLw er blevet klassificeret som forældede.

    • Arbejdet med at forbedre understøttelsen af Java 11 og nyere versioner i FreeBSD samt porteringen af nogle ændringer til Java 8 er blevet gennemført. Efter at FreeBSD havde implementeret understøttelsen af nye Java 11-funktioner som Java Flight Recorder, HotSpot Serviceability Agent, HotSpot Debugger, DTrace, Javac Server, Java Sound og SCTP, er fokus blevet flyttet til at sikre, at alle kompatibilitetstest beståes. Antallet af fejl ved beståelse af test er reduceret fra 50 til 2.
    • KDE Plasma, KDE Frameworks, KDE Applications og Qt-skrivebordet er blevet holdt opdateret og opgraderet til de nyeste versioner.
    • Portene til Xfce-skrivebordet er opdateret til udgivelse. 4.14;
    • FreeBSD's port tree has surpassed 38,000 ports, with the number of open PRs slightly exceeding 2,000, of which 400 PRs remain unaddressed. During the reporting period, 7,340 changes were made by 169 developers. Two new contributors, Santhosh Raju and Dmitri Goutnik, have been granted commit rights. A new version of the package manager pkg 1.12 has been released, featuring overlay support in the port tree and cleaning up bsd.sites.mk. Among the significant version updates in the ports are: Lazarus 2.0.4, LLVM 9.0, Perl 5.30, PostgreSQL 11, Ruby 2.6, Firefox 69.0.1, Firefox-esr 68.1.0, Chromium 76.0;
    • Project development continues ClonOS, udvikling is a specialized distribution for deploying virtual server infrastructure. In terms of tasks addressed, ClonOS is reminiscent of systems like Proxmox, Triton (Joyent), OpenStack, OpenNebula, and Amazon AWS, with the main distinction being the use of FreeBSD and the ability to manage, deploy, and control FreeBSD Jail containers and virtual environments based on Bhyve and Xen hypervisors. Recent changes include support for
      cloud-init for Linux/BSD VMs and cloudbase-init for Windows VMs, the beginning of a transition to using in-house images, employment of Jenkins CI for build testing, and a new pkg repository for installation
      of ClonOS from packages.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster