Informe de desenvolupament de FreeBSD 2020T XNUMX

publicat informe sobre el desenvolupament del projecte FreeBSD de gener a març de 2020. Entre els canvis podem destacar:

  • Problemes generals i sistèmics
    • S'ha eliminat el conjunt de compiladors GCC de l'arbre font de FreeBSD-CURRENT, així com les utilitats gperf, gcov i gtc (compilador de l'arbre de dispositius) no utilitzades. Totes les plataformes que no admeten Clang s'han canviat a utilitzar eines de creació externes instal·lades des dels ports. El sistema base va enviar una versió obsoleta de GCC 4.2.1 i la integració de les versions més noves no va ser possible a causa de la transició de la 4.2.2 a la llicència GPLv3, que es va considerar inadequada per als components base de FreeBSD. Les versions actuals de GCC, inclòs GCC 9, encara es poden instal·lar des de paquets i ports.
    • La infraestructura d'emulació de l'entorn Linux (Linuxulator) ha afegit suport per a la trucada del sistema sendfile, el mode TCP_CORK (necessari per a nginx) i la bandera MAP_32BIT (resol el problema amb el llançament de paquets amb Mono des d'Ubuntu Bionic). S'han resolt els problemes amb la resolució de DNS quan s'utilitza la glibc més recent de 2.30 (per exemple, de CentOS 8).
      La infraestructura d'integració contínua ofereix la possibilitat d'executar treballs LTP (Linux Testing Project) amb Linuxulator per provar les millores fetes al codi per donar suport a Linux. Unes 400 proves fallen i requereixen correcció (alguns errors són causats per falsos positius, alguns requereixen solucions trivials, però n'hi ha d'altres que requereixen afegir suport per a noves trucades al sistema per solucionar-ho). S'ha treballat per netejar el codi de Linuxulator i simplificar la depuració. S'han preparat pedaços amb suport per a atributs ampliats i la crida al sistema fexecve, però encara no s'han revisat.

    • Continuen les reunions del grup de treball creat per dur a terme la migració de codis font des del sistema centralitzat de control de fonts Subversion al sistema descentralitzat Git. Es troba en procés d'elaboració d'un informe amb propostes de migració.
    • В rtld (enllaçador en temps d'execució) millora el mode d'execució directa ("/libexec/ld-elf.so.1 {camí} {arguments}").
    • El projecte per a les proves fuzzing del nucli FreeBSD utilitzant el sistema syzkaller continua desenvolupant-se. Durant el període d'informe, es van eliminar els problemes a la pila de xarxa i al codi per treballar amb taules de descriptors de fitxers identificades mitjançant syzkaller. Després del diagnòstic d'errors, s'han afegit canvis a la pila SCTP per facilitar la depuració. S'han afegit regles al conjunt de stress2 per identificar possibles regressions. S'ha afegit suport per a les proves fuzz de noves trucades al sistema, incloses les trucades al subsistema copy_file_range(), __realpathat() i Capsicum. Es continua treballant per cobrir la capa d'emulació de Linux amb proves de fuzz. Hem analitzat i eliminat els errors observats als últims informes de Coverity Scan.
    • El sistema d'integració contínua ha passat a executar totes les proves de la branca del cap només mitjançant clang/lld. Quan es prova RISC-V, s'assegura la formació d'una imatge de disc completa per executar proves a QEMU mitjançant OpenSBI. S'han afegit tasques noves per provar imatges i màquines virtuals powerpc64 (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • S'està treballant per transferir la suite de proves Kyua des dels ports (devel/kyua) al sistema base per resoldre els problemes (els paquets s'instal·len molt lentament) que sorgeixen en utilitzar Kyua en noves arquitectures, el desenvolupament per a les quals es realitza mitjançant un emulador o FPGA. La integració al sistema base simplificarà significativament les proves de plataformes incrustades i la interfície amb els sistemes d'integració contínua.
    • S'ha llançat un projecte per optimitzar el rendiment del controlador del pont de xarxa si_pont, que utilitza un únic mutex per bloquejar les dades internes, la qual cosa no permet assolir el rendiment desitjat en sistemes amb un gran nombre d'entorns presó o màquines virtuals unides en una mateixa xarxa. En aquesta fase, s'han afegit proves al codi per evitar que es produeixin regressió durant la modernització del treball amb panys. S'està considerant la possibilitat d'utilitzar ConcurrencyKit per paral·lelitzar els controladors de transferència de dades (bridge_input(), bridge_output(), bridge_forward(), ...).
    • S'ha afegit una nova trucada al sistema sigfastblock per permetre que un fil especifiqui un bloc de memòria per a un controlador de senyal ràpid per millorar el rendiment dels controladors d'excepcions.
    • El nucli afegeix suport per a instruccions atòmiques LSE (Large System Extension) compatibles amb els sistemes ARMv8.1. Aquestes instruccions són necessàries per millorar el rendiment quan s'executen a plaques Cavium ThunderX2 i AWS Graviton 2. Els canvis afegits detecten el suport LSE i permeten dinàmicament la implementació atòmica basada en ells. Durant les proves, l'ús de LSE va permetre reduir en un 15% el temps del processador en muntar el nucli.
    • S'ha dut a terme l'optimització del rendiment i s'ha ampliat la funcionalitat del conjunt d'eines per a fitxers executables en format ELF.
      S'ha afegit suport per a la memòria cau de la informació de depuració de DWARF, problemes resolts a les utilitats elfcopy/objcopy, processament afegit DW_AT_ranges,
      readelf implementa la capacitat de descodificar les marques PROTMAX_DISABLE, STKGAP_DISABLE i WXNEEDED, així com Xen i GNU Build-ID.

  • Безопасность
    • Per millorar el rendiment de FreeBSD als entorns de núvol Azure, s'està treballant per donar suport al mecanisme HyperV Socket, que permet l'ús d'una interfície de socket per a la interacció entre el sistema convidat i l'entorn amfitrió sense configurar una xarxa.
    • S'està treballant per proporcionar compilacions repetibles de FreeBSD, cosa que permet garantir que els fitxers executables dels components del sistema es compilin exactament a partir dels codis font declarats i no continguin canvis aliens.
    • S'ha afegit a la utilitat elfctl la capacitat de controlar la inclusió de mecanismes de protecció addicionals (ASLR, PROT_MAX, stack gap, mapeig W+X) a nivell de processos individuals.
  • Sistemes d'emmagatzematge i fitxers
    • S'està treballant per implementar la possibilitat que NFS funcioni a través d'un canal de comunicació xifrat basat en TLS 1.3, en comptes d'utilitzar Kerberos (mode sec=krb5p), que es limita a xifrar només missatges RPC i només s'implementa al programari. La nova implementació utilitza la pila TLS proporcionada pel nucli per permetre l'acceleració de maquinari. El codi NFS sobre TLS està gairebé preparat per a la prova, però encara requereix treball per suportar certificats de client signats i adaptar la pila TLS del nucli per enviar dades NFS (els pedaços per rebre ja estan preparats).
  • Suport de maquinari
    • S'està treballant per afegir suport per a la CPU Hygon x86 xinesa basada en tecnologies AMD;
    • Com a part de CheriBSD, una bifurcació de FreeBSD per a l'arquitectura de processadors de recerca CHERI (Capability Hardware Enhanced RISC Instructions), es continua implementant el suport per al processador ARM Morello, que donarà suport al sistema de control d'accés a la memòria CHERI basat en el model de seguretat del projecte Capsicum. Xip de morello estan planejant llançament el 2021. Actualment, el treball se centra en afegir suport a la plataforma Arm Neoverse N1 que impulsa Morello. S'ha presentat un port inicial de CheriBSD per a l'arquitectura RISC-V. El desenvolupament de CheriBSD continua per al prototip de referència CHERI basat en l'arquitectura MIPS64.
    • El portat FreeBSD continua per al SoC NXP LS64A de 1046 bits basat en el processador ARMv8 Cortex-A72 amb un motor d'acceleració de processament de paquets de xarxa integrat, Ethernet de 10 Gb, PCIe 3.0, SATA 3.0 i USB 3.0. Actualment, els controladors QorIQ i LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI s'estan preparant per transferir-los a la composició principal de FreeBSD.
    • El controlador ena s'ha actualitzat a la versió 2.1.1 amb suport per a la segona generació d'adaptadors de xarxa ENAv2 (Elastic Network Adapter) utilitzats a la infraestructura Elastic Compute Cloud (EC2) per organitzar la comunicació entre nodes EC2 a velocitats de fins a 25 Gb/ s. S'està preparant una actualització a ENA 2.2.0.
    • Les millores al port FreeBSD per a la plataforma powerpc64 continuen. L'objectiu és oferir un rendiment de qualitat en sistemes amb processadors IBM POWER8 i POWER9. Durant el període d'informe, FreeBSD-CURRENT es va transferir per utilitzar el compilador LLVM/Clang 10.0 i l'enllaç lld en comptes de GCC. De manera predeterminada, els sistemes powerpc64 utilitzen l'ABI ELFv2 i el suport per a l'ABI ELFv1 s'ha interromput. FreeBSD-STABLE encara té gcc 4.2.1. S'han resolt problemes amb els controladors virtio, aacraid i ixl. Als sistemes powerpc64 és possible executar QEMU sense suport d'Huge Pages.
    • Es continua treballant per implementar suport per a l'arquitectura RISC-V. En la seva forma actual, FreeBSD ja arrenca amb èxit a la placa SiFive Hifive Unleashed, per a la qual s'han preparat els controladors.
      UART, SPI i PRCI, admet el firmware OpenSBI i SBI 0.2. Durant el període d'informe, el treball es va centrar en la migració de GCC a clang i lld.

  • Aplicacions i sistema portuari
    • La col·lecció de ports FreeBSD ha traspassat el llindar de 39 mil ports, el nombre de PR no tancats supera lleugerament els 2400, dels quals 640 PR encara no s'han ordenat. Durant el període d'informe, es van fer 8146 canvis de 173 desenvolupadors. Quatre nous participants van rebre els drets de committer (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). S'ha afegit la bandera USES=qca i s'ha eliminat la bandera USES=zope (a causa de la incompatibilitat amb Python 3). S'està treballant per eliminar Python 2.7 de l'arbre de ports: tots els ports basats en Python 2 s'han de portar a Python 3 o s'eliminaran. El gestor de paquets pkg s'ha actualitzat per al llançament 1.13.2.
    • Components de la pila de gràfics actualitzats i ports relacionats amb xorg.
      El servidor X.org s'ha actualitzat a la versió 1.20.8 (anteriorment enviada a la branca 1.18), la qual cosa va permetre que FreeBSD utilitzés per defecte el backend udev/evdev per gestionar els dispositius d'entrada. El paquet Mesa s'ha canviat per utilitzar l'extensió DRI3 en lloc de DRI2 de manera predeterminada. S'està treballant per mantenir els controladors de gràfics, la pila del dispositiu d'entrada i els components drm-kmod (un port que permet el funcionament dels mòduls amdgpu, i915 i radeon DRM, utilitzant el marc linuxkpi per a la compatibilitat amb el gestor de representació directa del nucli de Linux) actualitzat.

    • L'escriptori KDE Plasma, KDE Frameworks, les aplicacions KDE i Qt es mantenen actualitzats i actualitzats a les últimes versions. S'ha afegit una nova aplicació kstars (atles estrella) als ports.
    • S'ha treballat per eliminar els canvis regressius al gestor de finestres xfwm4 que van aparèixer després d'actualitzar Xfce a la versió 4.14 (per exemple, van aparèixer artefactes en decorar finestres).
    • El port Wine s'ha actualitzat per llançar Wine 5.0 (anteriorment s'oferia la 4.0.3).
    • A partir de la versió 1.14, el compilador de llenguatge Go va afegir suport oficial per a l'arquitectura ARM64 per a FreeBSD 12.0.
    • OpenSSH al sistema base s'ha actualitzat per llançar 7.9p1.
    • La biblioteca sysctlmibinfo2 s'ha implementat i col·locat en ports (devel/libsysctlmibinfo2), proporcionant una API per accedir a la MIB sysctl i traduir els noms sysctl en identificadors d'objectes (OID).
    • S'ha generat una actualització de distribució NomadBSD 1.3.1, que és una edició de FreeBSD adaptada per al seu ús com a escriptori portàtil d'arrencada des d'una unitat USB. L'entorn gràfic es basa en un gestor de finestres Caixa oberta. S'utilitza per muntar unitats DSBMD (s'admet el muntatge de CD9660, FAT, HFS+, NTFS, Ext2/3/4), per configurar una xarxa sense fil - wifimgr, i per controlar el volum - DSBMixer.
    • Iniciat treballar en escriure la documentació completa per al gestor de l'entorn de la presó olla. S'està preparant per al llançament Pot 0.11.0, que inclourà eines per gestionar la pila de xarxa.

Font: opennet.ru

Afegeix comentari