FreeBSD Informe de progrés del segon trimestre de 2019

publicat informe sobre el desenvolupament del projecte FreeBSD d'abril a juny de 2019. Entre els canvis podem destacar:

  • Problemes generals i sistèmics
    • L'equip principal va decidir establir un grup de treball per explorar la possibilitat de traslladar el codi font del sistema centralitzat de control de fonts Subversion al sistema Git descentralitzat.
    • S'han realitzat proves fuzz del nucli de FreeBSD mitjançant el sistema syzkaller i es van corregir una sèrie d'errors identificats. S'ha afegit una capa per a les proves difuses de biblioteques per a la compatibilitat amb un entorn de 32 bits en sistemes amb un nucli de 64 bits. S'ha implementat la capacitat d'executar syzkaller en màquines virtuals basades en bhyve. En la següent etapa, es preveu ampliar la cobertura de les proves de trucades del sistema, utilitzar el sanitizer LLVM per comprovar el nucli, utilitzar netdump per desar els abocaments del nucli durant els bloquejos durant les proves de fuzzing, etc.
    • S'ha començat a treballar per actualitzar la implementació de zlib a nivell del nucli. Per a l'accés del nucli al codi zlib, el directori contrib/zlib es va canviar el nom a sys/contrib/zlib, i el fitxer de capçalera crc.h també es va canviar el nom per evitar conflictes amb zlib/crc.h. S'ha netejat el codi heretat que depenia de zlib i inflate. A continuació, es preveu proporcionar la possibilitat de construir el nucli simultàniament amb l'antic i el nou zlib per a la transferència gradual a la nova versió de funcions que utilitzen compressió;
    • S'ha actualitzat la infraestructura d'emulació de l'entorn Linux (Linuxulator). Augment del suport per a eines de depuració de Linux, com ara la utilitat strace. S'ha afegit el paquet linux-c7-strace als ports, que es poden utilitzar per rastrejar fitxers executables de Linux en comptes de les utilitats estàndard de truss i ktrace, que encara no poden descodificar algunes marques i estructures específiques de Linux. A més, s'ha afegit el paquet linux-ltp amb els executables de Linux Test Project i s'han resolt els problemes de compatibilitat amb els executables enllaçats amb les noves versions de glibc;
    • La implementació d'operacions d'invalidació retardada en el mecanisme pmap s'ha traslladat a l'ús d'un algorisme de processament de cues que funciona sense bloquejos, fet que ha permès resoldre problemes d'escalabilitat a l'hora de realitzar un gran nombre d'operacions de desmapat en paral·lel;
    • S'ha canviat el mecanisme per bloquejar vnode durant l'execució de trucades al sistema de la família execve(), la qual cosa ha permès aconseguir una major eficiència en executar simultàniament execve() per al mateix fitxer (per exemple, quan es realitzen operacions d'assemblatge amb paral·lelització). del llançament del compilador);
  • Безопасность
    • L'hipervisor bhyve continua millorant el suport per a la migració en directe d'entorns convidats d'un amfitrió a un altre i la funcionalitat Desar/Restaurar, que us permet congelar el sistema convidat, desar l'estat en un fitxer i reprendre l'execució.
    • Mitjançant l'ús de la biblioteca libvdsk, bhyve ha afegit suport per a imatges de disc en format QCOW2. Instal·lació necessària per treballar
      especialment modificat versió de bhyve, que s'ha convertit per utilitzar controladors d'operacions de fitxers basats en libvdsk. Durant el període d'informe, libvdsk també va dur a terme treballs per simplificar la integració del suport per a nous formats, millorar el rendiment de lectura i escriptura i afegir suport per a Copy-On-Write. De les tasques restants, s'observa la integració de libvdsk a l'estructura principal de bhyve;

    • S'ha afegit un sistema de recollida d'informació de trànsit als ports
      Maltrail, que permet crear trampes per a sol·licituds de xarxa malicioses (es marquen les IP i els dominis de les llistes negres) i enviar informació sobre l'activitat detectada a un servidor centralitzat per al posterior bloqueig o anàlisi dels intents d'atac;

    • S'han afegit plataformes als ports per detectar atacs, analitzar registres i controlar la integritat dels fitxers Wazuh (fork d'Ossec amb suport per a la integració amb ELK-Stack);
  • Subsistema de xarxa
    • El controlador ena s'ha actualitzat per donar suport a la segona generació d'adaptadors de xarxa ENAv2 (Elastic Network Adapter) utilitzats a la infraestructura d'Elastic Compute Cloud (EC2) per organitzar la comunicació entre nodes EC2 a velocitats de fins a 25 Gb/s. S'ha afegit suport NETMAP al controlador ena.
    • FreeBSD HEAD adopta una nova pila MMC/SD, basada en el marc CAM i que us permet connectar dispositius amb una interfície SDIO (Secure Digital I/O). Per exemple, SDIO s'utilitza en mòduls WiFi i Bluetooth per a moltes plaques, com ara el Raspberry Pi 3. La nova pila també permet utilitzar la interfície CAM per enviar ordres SD des d'aplicacions a l'espai d'usuari, cosa que permet crear dispositius. conductors que operen a nivell d'usuari. S'ha començat a treballar en la creació de controladors per als xips sense fil Broadcom que funcionen en mode FullMAC (en el costat del xip fa una semblança del seu propi sistema operatiu amb implementacions de la seva pila sense fil 802.11);
    • S'està treballant per implementar NFSv4.2 (RFC-7862) per a FreeBSD. La nova versió de NFS afegeix suport per a les funcions posix_fadvise, posix_fallocate, els modes SEEKHOLE/SEEKDATA a lseek i l'operació de còpia local de parts d'un fitxer al servidor (sense transferir al client).

      Actualment, FreeBSD ofereix suport bàsic per a les operacions LayoutError, IOAdvise, Allocate i Copy. Tot el que queda és implementar l'operació de cerca necessària per utilitzar lseek(SEEKHOLE/SEEKDATA) amb NFS. El suport de NFSv4.2 està previst per a FreeBSD 13;

  • Sistemes d'emmagatzematge i fitxers
    • El projecte de reelaboració del controlador del subsistema FUSE (File system in USErspace), que permet crear implementacions de sistemes de fitxers a l'espai d'usuari, està a punt de finalitzar. El controlador subministrat originalment està obsolet i conté molts errors. Com a part del projecte de modernització del controlador, es va implementar el suport per al protocol FUSE 7.23 (anteriorment s'admetia la versió 7.8, llançada fa 11 anys), es va afegir codi per comprovar els drets d'accés al costat del nucli ("-o default_permissions"), crida a S'han afegit VOP_MKNOD, VOP_BMAP i VOP_ADVLOCK, la capacitat d'interrompre les operacions de FUSE, suport afegit per a canonades sense nom i endolls Unix a fusefs, la possibilitat d'utilitzar kqueue per a /dev/fuse, permet actualitzar els paràmetres de muntatge mitjançant "mount -u", suport afegit per exportar fusefs mitjançant NFS, implementar la comptabilitat RLIMIT_FSIZE, afegir senyals FOPEN_KEEP_CACHE i FUSE_ASYNC_READ, s'han fet optimitzacions de rendiment importants i s'ha millorat l'organització de la memòria cau;
    • S'ha afegit suport per a l'operació BIO_DELETE al codi del cercapersones d'intercanvi, que us permet utilitzar l'ordre TRIM quan elimineu blocs de les unitats SSD per augmentar la seva vida útil.
  • Suport de maquinari
    • Es continua treballant per implementar el suport per a ARM64 SoC Broadcom BCM5871X amb processadors ARMv8 Cortex-A57, destinats a l'ús en encaminadors, passarel·les i emmagatzematge de xarxa. Durant el període d'informe, es va millorar la compatibilitat amb els busos PCIe iProc interns i externs, es va afegir suport per a Ethernet BNXT i s'està treballant per utilitzar el motor criptogràfic integrat per accelerar IPsec. La integració del codi a la branca HEAD està prevista per al segon semestre de l'any;
    • S'ha començat a treballar en suport 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. El suport per a la plataforma base (SMP multiusuari) i SATA 3.0 ja s'ha implementat. El suport per a USB 3.0, SD/MMC i I2C està en desenvolupament. Els plans inclouen suport per a Ethernet, GPIO i QSPI. Es preveu la finalització dels treballs i la inclusió a la delegació de HEAD durant el 4t trimestre de 2019.
    • Controladors mlx5en i mlx5ib actualitzats per als adaptadors Ethernet i InfiniBand de Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] i ConnectX-6 [Dx]. S'ha afegit suport per als adaptadors Mellanox Socket Direct (ConnectX-6), que permet un rendiment de fins a 200 Gb/s al bus PCIe Gen 3.0. Per als xips BlueField de diversos nuclis, s'ha afegit suport per al controlador RShim. S'ha afegit als ports el paquet mstflint amb un conjunt d'utilitats de diagnòstic per als adaptadors Mellanox;
  • Aplicacions i sistema portuari
    • Els components de la pila de gràfics s'han actualitzat. El controlador drm.ko (Direct Rendering Manager) s'ha portat des del nucli Linux 5.0. Aquest controlador es considera experimental i s'ha afegit a l'arbre de ports com a graphics/drm-devel-kmod. Com que el controlador utilitza el marc KPI de Linux actualitzat per ser compatible amb l'API DRM del nucli de Linux, cal que s'executi FreeBSD CURRENT. El controlador drm vboxvideo.ko per a la GPU virtual VirtualBox també s'ha portat des de Linux. El paquet Mesa s'ha actualitzat per al llançament 18.3.2 i s'ha canviat per utilitzar LLVM des del port devel/llvm80 en lloc de devel/llvm60.
    • L'arbre de ports de FreeBSD ha superat els 37000 ports, el nombre de PR no tancats es manté en 2146. Durant el període d'informe, es van fer 7837 canvis de 172 desenvolupadors. Tres nous participants van rebre drets de committer. Entre les actualitzacions de versions importants als ports hi ha: MySQL 5.7, Python 3.6, Ruby 2.5, Samba 4.8, Julia 1.0, Firefox 68.0, Chromium 75.0.3770.100. Tots els ports Go s'han convertit per utilitzar la bandera "USES=go". S'ha afegit el senyalador "USES=cabal" al gestor de paquets Cabal utilitzat per al codi Haskell. El mode de protecció de pila estricte està habilitat. La versió predeterminada de Python és la 3.6 en lloc de la 2.7.
    • S'ha preparat el llançament de la utilitat nsysctl 1.0, que ofereix un anàleg a /sbin/sysctl que utilitza libxo per a la sortida i proporcionar un conjunt ampliat d'opcions. Nsysctl es pot utilitzar per supervisar visualment l'estat dels valors sysctl i presentar informació sobre objectes de forma estructurada. La sortida en formats XML, JSON i HTML és possible;

Font: opennet.ru

Afegeix comentari