FreeBSD Development Report Q2019 XNUMX

gipatik report sa pagpalambo sa proyekto sa FreeBSD gikan sa Hulyo ngadto sa Septiyembre 2019. Lakip sa mga pagbag-o atong mamatikdan:

  • Kinatibuk-ang ug sistematikong mga isyu
    • Ang Core team sa kasagaran nag-aprobar sa posibilidad sa paglakip sa code sa sistema nga giapod-apod ubos sa lisensya sa BSD nga adunay dugang patent agreement (BSD+Patent), apan ang desisyon nga ilakip ang matag sangkap sa sistema sa ilawom sa kini nga lisensya kinahanglan nga aprubahan nga gilain;
    • Ang una nga miting sa nagtrabaho nga grupo nga gihimo aron ipatuman ang paglalin sa mga source code gikan sa sentralisado nga sistema sa pagkontrol sa gigikanan Ang pagkasubsob ngadto sa desentralisadong sistema nga Git nahitabo. Ang diskusyon bahin sa posibilidad sa paglalin nagpadayon pa ug ang mga desisyon sa daghang mga isyu wala pa maugmad (pananglitan, kung unsa ang buhaton sa contrib/, kung kinahanglan ba nga i-regenerate ang mga hash sa karon nga git repository, ug kung giunsa ang labing maayo nga pagpatuman sa pagsulay. sa mga pasalig);
    • Gikan sa NetBSD ported KCSAN (Kernel Concurrency Sanitizer) toolkit, nga nagtugot kanimo sa pag-ila sa mga kondisyon sa lumba tali sa mga thread sa kernel nga nagdagan sa lainlaing mga CPU;
    • Gisugdan ang pagtrabaho aron gamiton ang built-in assembler (IAS) ni Clang imbes nga GNU binutils assembler;
    • Ang Linux environment emulation infrastructure (Linuxulator) gipahaom sa pagtrabaho sa ARM64 architecture. Gipatuman ang "renameat2" nga tawag sa sistema. Ang strace utility gipaayo aron masusi ang mga problema sa Linux executables nga nagdagan sa Linuxulator. Nasulbad na ang problema sa mga crash kung ang pag-link sa mga executable nga file sa bag-ong glibc. Ang mga pantalan nga adunay mga sangkap sa Linux alang sa Linuxulator gi-update sa CentOS 7.7;
    • Isip kabahin sa programa sa Google Summer of Code, malampusong nakompleto sa mga estudyante ang unom ka proyekto: giandam ang pagpatuman sa usa ka hiniusang (IPv4/IPv6) ping utility, mga himan sa pagsulay sa mga firewall ug pag-ila sa mga sayop sa kernel (Kernel sanitizer) naugmad, ang mac_ipacl gisugyot ang module, gisulat ang code alang sa virtual memory compression ug nahimo na ang trabaho aron mabulag ang proseso sa pagtukod sa pantalan gikan sa lokal nga pag-install;
    • Ang proyekto alang sa fuzzing testing sa FreeBSD kernel gamit ang sistema nagpadayon sa pag-uswag syzkaller. Atol sa panahon sa pagreport, labaw pa sa napulo ka mga sayup ang giila ug giwagtang gamit ang syzkaller. Aron makadagan ang syzkaller sa mga virtual machine nga gibase sa bhyve, usa ka bulag nga server ang gipahinungod, ug gigamit
      Ang syzbot nagtukod og pagsulay sa lain-laing mga subsystem sa FreeBSD sa imprastraktura sa Google. Giorganisar ang pagbalhin sa kasayuran bahin sa tanan nga mga pag-crash sa serbisyo sa backtrace.io aron mapasimple ang ilang paggrupo ug pagtuki;

    • Nagpadayon ang trabaho aron ma-update ang pagpatuman sa zlib sa lebel sa kernel.
      Ang code nga may kalabotan sa compression gibalhin gikan sa zlib 1.0.4, gipagawas kapin sa 20 ka tuig na ang milabay, ngadto sa kasamtangang zlib 1.2.11 codebase. Aron mahiusa ang pag-access sa zlib, ang mga function nga compress, compress2 ug uncompress gidugang sa kernel. Ang code nga nagsiguro sa operasyon sa PPP protocol gikan sa netgraph subsystem gibalhin aron gamiton ang sistema sa pagpatuman sa zlib, imbes sa kaugalingon nga edisyon niini nga librarya. Ang kern_ctf.c, opencryptodeflate, geom_uzip, subr_compressor, mga subsystem gibalhin usab sa bag-ong zlib.
      if_mxge, bxe updated ug ng_deflate;

    • Usa ka bag-ong kernel interface ang gihimo sysctinfo, nga nagtugot kanimo sa pagpangita sa mga elemento sa sysctl parameter database, giproseso sa porma sa usa ka MIB (Management Information Base), ug pagbalhin sa impormasyon mahitungod sa mga butang ngadto sa user space.
  • Kasegurohan
    • Naugmad ang kernel module mac_ipacl, base sa TrustedBSD MAC Framework ug pagpatuman og access control system alang sa network stack settings para sa jail environment. Pananglitan, gamit ang mac_ipacl, ang usa ka host system administrator makapugong sa root user sa usa ka jail environment gikan sa pag-usab o pag-set sa mga IP address o subnet settings para sa pipila ka network interface. Gisugyot nga mandatory access control system kini nagtugot itakda ang mga lista sa mga IP address ug subnet nga gitugotan para sa Jail, idili ang pag-install sa pipila ka IP ug subnets sa Jail, o limitahan ang pag-ilis sa mga parameter para lang sa pipila ka network interface;
    • Ang Intel midonar og software stack port sa proyekto TPM 2.0 (Trusted Platform Module) nga mag-interface sa luwas nga computing chip, nga kasagarang gigamit para sa verified loading sa firmware ug OS bootloader. Ang mga sangkap sa stack gipresentar sa porma sa mga pantalan sa seguridad / tpm2-tss, seguridad / tpm2-mga himan ug seguridad / tpm2-abrmd. Ang tpm2-tss port naglakip sa mga librarya alang sa paggamit sa TPM2 API, ang tpm2-tools naghatag ug command line utilities alang sa pagbuhat sa TPM operations, ug ang tpm2-abrmd naglangkob sa usa ka background nga proseso sa pagpatuman sa TPM Access Broker ug Resource Manager nga mga component nga nag-multiply sa mga hangyo gikan sa lain-laing mga TPM users. ngadto sa usa ka device. Dugang sa napamatud-an nga pag-boot sa FreeBSD, ang TPM mahimong magamit aron mapauswag ang seguridad sa Strongswan IPsec, SSH ug TLS pinaagi sa paghimo sa mga operasyon sa cryptographic sa usa ka lahi nga chip;
    • Ang kernel alang sa amd64 nga arkitektura gipahaum sa pag-boot gamit ang W^X (isulat ang XOR execute) nga teknik sa pagpanalipod, nga nagpasabot nga ang mga pahina sa memorya dili mahimong dungan nga ma-access alang sa pagsulat ug pagpatuman (ang kernel mahimo na nga i-load gamit ang mga executable nga mga pahina sa panumduman diin ang pagsulat gidili). Ang bag-ong pamaagi sa pagpanalipod sa kernel gilakip sa sanga sa HEAD ug ilakip sa mga pagpagawas sa FreeBSD 13.0 ug 12.2;
    • Para sa mmap ug mprotect system calls gipatuman macro PROT_MAX(), nga nagtugot kanimo sa pagtino sa set sa access restriction flags gitugotan alang sa dugang nga mga kausaban (PROT_READ, PROT_WRITE, PROT_EXEC). Gamit ang PROT_MAX(), ang usa ka developer mahimong magdili sa pagbalhin sa usa ka rehiyon sa memorya ngadto sa executable nga kategoriya o mohangyo sa memorya nga dili motugot sa pagpatay, apan sa ulahi mahimong makabig ngadto sa executable. Pananglitan, ang usa ka rehiyon sa memorya mahimong bukas alang sa pagsulat lamang sa gidugayon sa dinamikong pag-link o JIT code generation, apan sa higayon nga ang pagsulat kompleto na, kini gidid-an sa pagbasa ug pagpatuman lamang, ug sa umaabot, kung makompromiso, ang tig-atake. dili makahimo sa pagsulat alang niana nga memory block. Dugang pa sa PROT_MAX(), gipatuman usab ang sysctl vm.imply_prot_max, nga kung gi-activate, nagtino sa set sa balido nga mga bandila base sa inisyal nga mga parameter sa unang tawag sa mmap;
    • Aron mapalambo ang proteksyon batok sa pagpahimulos sa mga kahuyangan, dugang sa address space randomization technique (ASLR), usa ka mekanismo sa pag-random sa mga offset sa mga pointer nga nagtubag sa inisyal nga stack frame ug mga istruktura nga gibutang sa stack nga adunay impormasyon mahitungod sa palibot, mga parameter sa paglunsad sa programa ug datos. alang sa executable nga mga hulagway sa ELF format gisugyot;
    • Gihimo ang trabaho aron matangtang ang dili luwas nga gets function gikan sa libc (sugod sa C11 standard, kini nga function wala iapil sa espesipikasyon) ug aron matul-id ang mga pantalan nga gigamit gihapon kini nga function. Ang pagbag-o giplano nga itanyag sa FreeBSD 13.0;
    • Usa ka eksperimento nga proyekto ang gilusad aron makahimo og mga himan alang sa pag-orkestra sa mga palibot sa bilanggoan base sa balangkas kaang alang sa paghimo ug pag-export sa mga imahe, gipatuman parehas sa Docker, ug usa ka drayber nomad, nga naghatag usa ka interface alang sa dinamikong paglansad sa mga aplikasyon sa usa ka palibot sa bilanggoan. Ang gisugyot nga modelo nagtugot kanamo sa pagbulag sa mga proseso sa paghimo sa mga palibot sa bilanggoan ug pag-deploy sa mga aplikasyon niini. Usa sa mga tumong sa proyekto mao ang paghatag og paagi sa pagmaniobra sa mga prisohan isip mga sudlanan sa estilo sa Docker;
  • Pagtipig ug mga sistema sa file
    • Gikan sa NetBSD hangtod sa "makefs" utility mibalhin Suporta sa FAT file system (msdosfs). Ang giandam nga mga pagbag-o nagtugot kanimo sa paghimo sa mga imahe sa FS nga adunay FAT nga wala gigamit ang drayber sa md ug wala’y awtoridad sa gamut;
    • Ang pag-rework sa FUSE (File system in USErspace) subsystem driver nahuman na, nga nagtugot sa pagmugna sa file system nga mga implementasyon sa user space. Ang drayber nga orihinal nga gipadala adunay daghang mga bug ug gibase sa FUSE 7.8, nga gipagawas 11 ka tuig ang milabay. Isip kabahin sa proyekto sa modernisasyon sa drayber, ang suporta alang sa FUSE 7.23 protocol gipatuman, ang code alang sa pagsusi sa mga katungod sa pag-access sa kernel side (β€œ-o default_permissions”) gidugang, ang mga tawag sa VOP_MKNOD, VOP_BMAP ug VOP_ADVLOCK gidugang, ang Ang abilidad sa paghunong sa mga operasyon sa FUSE gihatag, suporta alang sa wala hinganli nga mga tubo ug unix socket gidugang sa mga fusef, nahimong posible nga gamiton ang kqueue alang sa / dev / fuse, posible nga i-update ang mga parameter sa mount pinaagi sa "mount -u", dugang nga suporta alang sa pag-eksport sa mga fusef pinaagi sa NFS, gipatuman ang RLIMIT_FSIZE accounting, gidugang ang FOPEN_KEEP_CACHE ug FUSE_ASYNC_READ nga mga bandera, naghimo ug mahinungdanong performance optimizations ug gipaayo ang caching nga organisasyon. Ang bag-ong drayber gilakip sa ulo ug stable/12 nga mga sanga (apil sa FreeBSD 12.1);
    • Ang pagpatuman sa NFSv4.2 (RFC-7862) para sa FreeBSD hapit na mahuman. Ang panguna nga gipunting sa panahon sa pagreport mao ang pagsulay. Ang mga pagsulay nahuman na aron mapamatud-an ang pagkaangay sa pagpatuman sa Linux, apan ang pagsulay sa pNFS server nga adunay NFSv4.2 nagpadayon gihapon. Sa kinatibuk-an, ang code giisip na nga andam alang sa pag-integrate sa FreeBSD head/kasamtangang mga sanga. Ang bag-ong bersyon sa NFS nagdugang suporta alang sa posix_fadvise, posix_fallocate function, SEEKHOLE/SEEKDATA modes sa lseek, ang operasyon sa lokal nga pagkopya sa mga bahin sa usa ka file sa server (nga walay pagbalhin ngadto sa kliyente);
  • Suporta sa hardware
    • Usa ka proyekto ang gilusad aron mapausbaw ang performance sa FreeBSD sa mga laptop. Ang unang device nga gi-audit alang sa hardware support sa FreeBSD mao ang ikapitong henerasyon nga Lenovo X1 Carbon laptop;
    • Ang CheriBSD, usa ka tinidor sa FreeBSD alang sa arkitektura sa processor sa panukiduki CHERI (Capability Hardware Enhanced RISC Instructions), gi-update aron suportahan ang umaabot nga ARM Morello processor, nga mosuporta sa CHERI memory access control system base sa modelo sa seguridad sa disenyo sa Capsicum. Morello nga chip nagplano release sa 2021. Ang mga nag-develop sa CheriBSD nagpadayon usab sa pagmonitor sa pagpalambo sa CHERI reference prototype base sa MIPS architecture;
    • Gipalapad nga suporta alang sa RockChip RK3399 chips nga gigamit sa RockPro64 ug NanoPC-T4 boards. Ang labing mahinungdanon nga pag-uswag mao ang suporta alang sa eMMC ug ang pagpalambo sa usa ka bag-ong drayber alang sa eMMC controller nga gigamit sa board;
    • Ang trabaho nagpadayon sa pagpatuman sa suporta alang sa ARM64 SoC Broadcom BCM5871X nga adunay ARMv8 Cortex-A57 nga mga processor, nga gitumong sa paggamit sa mga routers, gateways ug network storage. Sa panahon sa pagreport
      Ang suporta sa iProc PCIe gipalapdan ug ang abilidad sa paggamit sa hardware cryptographic nga mga operasyon aron mapadali ang IPsec gidugang.
      Ang code integration ngadto sa HEAD branch gipaabot sa fourth quarter;

    • Adunay mahinungdanon nga mga pag-uswag sa pagpalambo sa usa ka FreeBSD nga pantalan alang sa powerpc64 nga plataporma. Ang focus mao ang paghatag og kalidad nga performance sa mga sistema nga adunay IBM POWER8 ug POWER9 processors, apan opsyonal nga nagsuporta sa operasyon sa mas karaan nga Apple Power Macs, x500 ug Amiga A1222. Ang powerpc*/12 nga sanga nagpadayon sa pagpadala uban sa gcc 4.2.1, ug ang powerpc*/13 nga sanga ibalhin sa llvm90 sa dili madugay. Gikan sa 33306 nga mga pantalan, 30514 ang malampusong natigom;
    • Ang FreeBSD porting nagpadayon para sa 64-bit SoC NXP LS1046A base sa ARMv8 Cortex-A72 processor nga adunay integrated network packet processing acceleration engine, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 ug USB 3.0. Sa panahon sa pagreport, gipatuman ang suporta alang sa USB 3.0, SD/MMC, I2C, DPAA ug GPIO network interface. Adunay mga plano sa pagsuporta sa QSPI ug pag-optimize sa performance sa network interface. Ang pagkompleto sa trabaho ug paglakip sa HEAD branch gilauman sa 4th quarter sa 2019;
    • Ang drayber sa ena gi-update aron suportahan ang ikaduhang henerasyon sa mga adapter sa network sa ENAv2 (Elastic Network Adapter) nga gigamit sa imprastraktura sa Elastic Compute Cloud (EC2) aron maorganisar ang komunikasyon tali sa mga EC2 node sa katulin nga hangtod sa 25 Gb / s. Ang suporta sa NETMAP gidugang ug gisulayan sa drayber sa ena, ug ang layout sa panumduman gipahiangay aron mahimo ang LLQ mode sa mga palibot sa Amazon EC2 A1;
  • Mga aplikasyon ug sistema sa pantalan
    • Gi-update nga mga sangkap sa stack sa graphic ug mga pantalan nga may kalabotan sa xorg. Ang mga pantalan nga naggamit sa USE_XORG ug XORG_CAT gibalhin sa USES framework imbes nga tawagan ang bsd.xorg.mk pinaagi sa bsd.port.mk. Ang ingon nga mga pantalan karon naglakip sa "USES = xorg" nga bandila sa ilang mga makefile. Ang XORG_CAT functionality nahimulag gikan sa bsd.xorg.mk ug karon gipalihok sa "USES=xorg-cat" flag. Gidugang nga mga himan alang sa direkta nga paghimo sa mga xorg port gikan sa usa ka git repository
      freedesktop.org, nga, pananglitan, nagtugot kanimo sa paghimo og mga pantalan alang sa wala pa gipagawas nga mga bersyon. Sa umaabot, nagplano kami sa pag-andam sa mga himan alang sa paggamit sa meson assembly system imbes sa mga autotools sa paghimo sa xorg ports.

      Gihimo ang trabaho aron limpyohan ang mga daan nga xorg port nga nahigot sa mga sangkap nga dili na suportado, pananglitan, ang x11/libXp port gikuha na, ug ang x11/Xxf86misc, x11-fonts/libXfontcache ug graphics/libGLw port wala na gigamit. ;

    • Gihimo ang trabaho aron mapauswag ang suporta alang sa Java 11 ug mas bag-ong mga pagpagawas sa FreeBSD, ingon man sa pag-port sa pipila ka mga pagbag-o sa sanga sa Java 8. Human sa suporta alang sa ingon nga bag-ong mga bahin sa Java 11 sama sa Java Flight Recorder, HotSpot Serviceability Agent, HotSpot Debugger gipatuman alang sa FreeBSD , DTrace, Javac Server, Java Sound ug SCTP, gibalhin ang trabaho aron masiguro nga ang tanan nga mga pagsulay sa pagkaangay nakapasar. Ang gidaghanon sa mga kapakyasan sa dihang ang pagpasa sa mga pagsulay gikunhoran gikan sa 50 ngadto sa 2;
    • Ang KDE Plasma desktop, KDE Frameworks, KDE Applications ug Qt gipadayon nga updated ug updated sa pinakabag-o nga pagpagawas;
    • Ang mga pantalan nga adunay Xfce desktop gi-update aron buhian 4.14;
    • Ang FreeBSD ports tree milabaw sa 38000 ka mga pantalan, ang gidaghanon sa wala masira nga PRs kay gamay ra sa 2000, diin 400 ka PRs ang wala pa masulbad. Sa panahon sa pagreport, 7340 ka mga pagbag-o ang gihimo sa 169 nga mga developer. Duha ka bag-ong mga partisipante (Santhosh Raju ug Dmitri Goutnik) nakadawat mga katungod sa committer. Usa ka bag-ong pagpagawas sa pkg 1.12 package manager ang gipatik, nga adunay suporta alang sa mga overlay sa punoan sa pantalan ug paglimpyo sa bsd.sites.mk. Lakip sa mahinungdanong mga update sa bersyon sa mga pantalan mao ang: 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;
    • Nagpadayon ang pagpalambo sa proyekto ClonOS, pagpalambo usa ka espesyal nga pag-apod-apod alang sa pag-deploy sa imprastraktura sa virtual server. Sa mga termino sa mga buluhaton nga masulbad niini, ang ClonOS susama sa mga sistema sama sa Proxmox, Triton (Joyent), OpenStack, OpenNebula ug Amazon AWS, ang nag-unang kalainan gikan niini mao ang paggamit sa FreeBSD ug ang abilidad sa pagdumala, pag-deploy ug pagdumala sa mga sudlanan sa FreeBSD Jail ug virtual nga palibot base sa Bhyve ug Xen hypervisors. Ang bag-ong mga pagbag-o naglakip sa suporta
      cloud-init para sa Linux/BSD VM ug cloudbase-init para sa Windows VM, nagsugod sa transisyon sa paggamit sa lumad nga mga hulagway, gamit ang Jenkins CI para sa testing builds ug bag-ong pkg repository para sa pag-instalar
      ClonOS gikan sa mga pakete.

Source: opennet.ru

Idugang sa usa ka comment