Laporan Pengembangan FreeBSD Q2019 XNUMX

diterbitake laporan babagan pangembangan proyek FreeBSD wiwit Juli nganti September 2019. Antarane owah-owahan sing bisa dicathet:

  • Masalah umum lan sistemik
    • Tim inti umume wis nyetujoni kamungkinan kalebu kode ing sistem sing disebarake miturut lisensi BSD kanthi persetujuan paten tambahan (BSD+Paten), nanging keputusan kanggo nyakup saben komponen ing sistem miturut lisensi iki kudu disetujoni kanthi kapisah;
    • Rapat pisanan saka klompok kerja digawe kanggo nindakake migrasi kode sumber saka sistem kontrol sumber terpusat Subversion menyang sistem desentralisasi Git dumadi. Diskusi babagan kemungkinan migrasi isih ditindakake lan keputusan babagan akeh masalah durung dikembangake (contone, apa sing kudu ditindakake karo contrib/, apa perlu regenerasi hash ing repositori git saiki, lan cara paling apik kanggo ngetrapake tes. saka komitmen);
    • Saka NetBSD porting Toolkit KCSAN (Kernel Concurrency Sanitizer), sing ngidini sampeyan ndeteksi kahanan balapan ing antarane benang kernel sing mlaku ing CPU sing beda-beda;
    • Pakaryan lagi ditindakake kanggo nggunakake Clang's built-in assembler (IAS) tinimbang GNU binutils assembler;
    • Infrastruktur emulasi lingkungan Linux (Linuxulator) diadaptasi kanggo nggarap arsitektur ARM64. Dilaksanakake telpon sistem "renameat2". Utilitas strace wis apik kanggo diagnosa masalah ing eksekusi Linux sing mlaku ing Linuxulator. Masalah karo kacilakan nalika ngubungake file eksekusi karo glibc seger wis dirampungake. Port karo komponen Linux kanggo Linuxulator wis dianyari CentOS 7.7;
    • Minangka bagéan saka program Google Summer of Code, siswa kasil ngrampungake enem proyek: implementasi utilitas ping terpadu (IPv4/IPv6) disiapake, alat kanggo nguji firewall lan ngenali kesalahan ing kernel (Kernel sanitizer) dikembangake, mac_ipacl modul iki ngajokaken, kode iki ditulis kanggo komprèsi memori virtual lan karya wis rampung kanggo misahake proses mbangun port saka instalasi lokal;
    • Proyèk kanggo uji coba kernel FreeBSD nggunakake sistem terus berkembang syzkaller. Sajrone periode nglaporake, luwih saka sepuluh kesalahan diidentifikasi lan diilangi nggunakake syzkaller. Kanggo mbukak syzkaller ing mesin virtual adhedhasar bhyve, server kapisah darmabakti, lan nggunakake
      syzbot wis nggawe uji coba macem-macem subsistem FreeBSD ing infrastruktur Google. Ngatur transfer informasi babagan kabeh kacilakan menyang layanan backtrace.io kanggo nyederhanakake klompok lan analisis;

    • Pakaryan lagi ditindakake kanggo nganyari implementasi zlib ing tingkat kernel.
      Kode sing gegandhengan karo kompresi wis dipindhah saka zlib 1.0.4, dirilis luwih saka 20 taun kepungkur, menyang basis kode zlib 1.2.11 saiki. Kanggo nggabungake akses menyang zlib, fungsi compress, compress2 lan uncompress wis ditambahake menyang kernel. Kode sing njamin operasi protokol PPP saka subsistem netgraph wis ditransfer kanggo nggunakake implementasi sistem zlib, tinimbang edisi perpustakaan iki dhewe. Kern_ctf.c, opencryptodeflate, geom_uzip, subr_compressor, subsistem uga wis ditransfer menyang zlib anyar.
      if_mxge, bxe dianyari lan ng_deflate;

    • Antarmuka kernel anyar lagi dikembangake sysctinfo, sing ngidini sampeyan nemokake unsur ing database parameter sysctl, diproses ing wangun MIB (Basis Informasi Manajemen), lan nransfer informasi babagan obyek menyang ruang pangguna.
  • Keamanan
    • modul kernel dikembangaké mac_ipacl, adhedhasar TrustedBSD MAC Framework lan ngleksanakake sistem kontrol akses kanggo setelan tumpukan jaringan kanggo lingkungan kunjara. Contone, nggunakake mac_ipacl, administrator sistem host bisa nyegah pangguna root ing lingkungan kunjara saka ngganti utawa nyetel alamat IP utawa setelan subnet kanggo antarmuka jaringan tartamtu. Sistem kontrol akses wajib sing diusulake Nanging ngidini nyetel dhaptar alamat IP lan subnet sing diidinake kanggo Jail, nglarang panginstalan IP lan subnet tartamtu ing Jail, utawa matesi paramèter ganti mung kanggo antarmuka jaringan tartamtu;
    • Intel nyumbang port tumpukan piranti lunak kanggo proyek kasebut TPM 2.0 (Modul Platform Dipercaya) kanggo antarmuka karo chip komputasi aman, sing biasane digunakake kanggo loading firmware lan bootloader OS sing diverifikasi. Komponen tumpukan ditampilake ing wangun port keamanan / tpm2-tss, keamanan / tpm2-alat lan keamanan / tpm2-abrmd. Port tpm2-tss kalebu perpustakaan kanggo nggunakake API TPM2, tpm2-alat nyedhiyakake utilitas baris printah kanggo nindakake operasi TPM, lan tpm2-abrmd ngemot implementasi proses latar mburi komponen TPM Access Broker lan Resource Manager sing multiplexes panjalukan saka pangguna TPM beda. menyang piranti siji. Saliyane booting sing diverifikasi ing FreeBSD, TPM bisa digunakake kanggo nambah keamanan Strongswan IPsec, SSH lan TLS kanthi nindakake operasi kriptografi ing chip sing kapisah;
    • Kernel kanggo arsitektur amd64 diadaptasi kanggo boot nggunakake teknik proteksi W^X (tulis XOR execute), tegese kaca memori ora bisa diakses bebarengan kanggo nulis lan eksekusi (kernel saiki bisa dimuat nggunakake kaca memori eksekusi kanggo nulis. dilarang). Cara pangayoman kernel anyar kalebu ing cabang HEAD lan bakal kalebu ing rilis FreeBSD 13.0 lan 12.2;
    • Kanggo mmap lan mprotect sistem telpon dipun ginakaken macro PROT_MAX (), sing ngijini sampeyan kanggo nemtokake pesawat saka panji watesan akses diijini kanggo owah-owahan luwih (PROT_READ, PROT_WRITE, PROT_EXEC). Nggunakake PROT_MAX (), pangembang bisa nglarang transfer wilayah memori kanggo kategori eksekusi utawa memori request sing ora ngidini eksekusi, nanging mengko bisa diowahi kanggo eksekusi. Contone, wilayah memori bisa uga mbukak kanggo nulis mung sajrone wektu ngubungake dinamis utawa generasi kode JIT, nanging yen nulis rampung, diwatesi kanggo maca lan nglakokake mung, lan ing mangsa ngarep, yen dikompromi, panyerang. ora bakal bisa ngaktifake nulis kanggo pemblokiran memori sing. Saliyane PROT_MAX (), sysctl vm.imply_prot_max uga dipun ginakaken, kang nalika diaktifake, nemtokake pesawat saka panji bener adhedhasar paramèter dhisikan saka telpon pisanan kanggo mmap;
    • Kanggo nambah pangayoman marang eksploitasi kerentanan, saliyane teknik pengacakan ruang alamat (ASLR), mekanisme kanggo acak offset pointer ngarahake pigura tumpukan awal lan struktur sing diselehake ing tumpukan kanthi informasi babagan lingkungan, paramèter peluncuran program lan data. kanggo gambar eksekusi ing format ELF diusulake;
    • Pakaryan wis rampung kanggo mbusak fungsi sing ora aman saka libc (wiwit saka standar C11, fungsi iki ora kalebu spesifikasi) lan mbenerake port sing isih nggunakake fungsi iki. Pangowahan kasebut direncanakake bakal ditawakake ing FreeBSD 13.0;
    • Proyek eksperimen wis diluncurake kanggo nggawe alat kanggo ngatur lingkungan kunjara adhedhasar kerangka kasebut pot kanggo nggawe lan ngekspor gambar, dileksanakake padha Docker, lan driver Nomad, sing nyedhiyakake antarmuka kanggo ngluncurake aplikasi kanthi dinamis ing lingkungan kunjara. Model sing diusulake ngidini kita misahake proses nggawe lingkungan kunjara lan nggunakake aplikasi kasebut. Salah sawijining tujuan proyek kasebut yaiku nyedhiyakake sarana kanggo ngapusi penjara minangka wadhah gaya Docker;
  • Sistem panyimpenan lan file
    • Saka NetBSD menyang sarana "makefs". dipindhah Dhukungan sistem file FAT (msdosfs). Owah-owahan sing disiapake ngidini sampeyan nggawe gambar FS nganggo FAT tanpa nggunakake driver md lan tanpa wewenang root;
    • Nggarap ulang driver subsistem FUSE (Sistem file ing USErspace) wis rampung, ngidini nggawe implementasi sistem file ing ruang pangguna. Pembalap sing asline dikirim ngemot akeh kewan omo lan adhedhasar FUSE 7.8, sing dirilis 11 taun kepungkur. Minangka bagéan saka proyek modernisasi driver, dhukungan kanggo protokol FUSE 7.23 wis dileksanakake, kode kanggo mriksa hak akses ing sisih kernel ("-o default_permissions") wis ditambahake, telpon menyang VOP_MKNOD, VOP_BMAP lan VOP_ADVLOCK wis ditambahake, kemampuan kanggo ngganggu operasi FUSE wis kasedhiya, dhukungan kanggo pipa sing ora dijenengi lan soket unix wis ditambahake ing sekring, dadi bisa nggunakake kqueue kanggo / dev / sekring, bisa nganyari paramèter gunung liwat "mount -u", dhukungan tambahan. kanggo ngekspor fusef liwat NFS, dipun ginakaken RLIMIT_FSIZE accounting, ditambahake FOPEN_KEEP_CACHE lan FUSE_ASYNC_READ flag, digawe Optimizations kinerja pinunjul lan organisasi caching apik. Pembalap anyar kalebu ing sirah lan stabil / 12 cabang (kalebu ing FreeBSD 12.1);
    • Implementasine NFSv4.2 (RFC-7862) kanggo FreeBSD meh rampung. Fokus utama sajrone periode laporan yaiku ing tes. Tes wis rampung kanggo verifikasi kompatibilitas karo implementasine Linux, nanging testing server pNFS karo NFSv4.2 isih aktif. Umumé, kode kasebut wis dianggep siap kanggo integrasi menyang kepala FreeBSD / cabang saiki. Versi anyar saka NFS nambah support kanggo posix_fadvise, fungsi posix_fallocate, SEEKHOLE / mode SEEKDATA ing lseek, operasi Nyalin lokal bagean file ing server (tanpa transfer kanggo klien);
  • Dhukungan hardware
    • Proyek wis diluncurake kanggo nambah kinerja FreeBSD ing laptop. Piranti pisanan sing diaudit kanggo dhukungan hardware ing FreeBSD yaiku laptop Lenovo X1 Carbon generasi kaping pitu;
    • CheriBSD, garpu FreeBSD kanggo arsitektur prosesor riset CHERI (Kapabilitas Hardware Enhanced RISC Instructions), dianyari kanggo ndhukung prosesor ARM Morello mbesuk, sing bakal ndhukung sistem kontrol akses memori CHERI adhedhasar model keamanan desain Capsicum. Morello chip lagi ngrancang release ing 2021. Pangembang CheriBSD uga terus ngawasi pangembangan prototipe referensi CHERI adhedhasar arsitektur MIPS;
    • Dhukungan tambahan kanggo chip RockChip RK3399 sing digunakake ing papan RockPro64 lan NanoPC-T4. Dandan paling pinunjul ana support kanggo eMMC lan pangembangan driver anyar kanggo eMMC controller digunakake ing Papan;
    • Pakaryan terus ngetrapake dhukungan kanggo ARM64 SoC Broadcom BCM5871X kanthi prosesor ARMv8 Cortex-A57, sing dituju kanggo digunakake ing router, gateway lan panyimpenan jaringan. Sajrone periode laporan
      Dhukungan iProc PCIe wis ditambahi lan kemampuan kanggo nggunakake operasi kriptografi hardware kanggo nyepetake IPsec wis ditambahake.
      Integrasi kode menyang cabang HEAD samesthine ing kuartal kaping papat;

    • Ana kemajuan sing signifikan ing pangembangan port FreeBSD kanggo platform powerpc64. Fokus nyedhiyakake kinerja kualitas ing sistem karo prosesor IBM POWER8 lan POWER9, nanging opsional ndhukung operasi ing Apple Power Mac lawas, x500 lan Amiga A1222. Cabang powerpc*/12 terus dikirim nganggo gcc 4.2.1, lan cabang powerpc*/13 bakal dipindhah menyang llvm90 rauh. Saka 33306 port, 30514 kasil dirakit;
    • Porting FreeBSD terus kanggo 64-bit SoC NXP LS1046A adhedhasar prosesor ARMv8 Cortex-A72 kanthi mesin percepatan pangolahan paket jaringan terpadu, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 lan USB 3.0. Sajrone periode laporan, dhukungan kanggo antarmuka jaringan USB 3.0, SD/MMC, I2C, DPAA lan GPIO dileksanakake. Ana rencana kanggo ndhukung QSPI lan ngoptimalake kinerja antarmuka jaringan. Rampung karya lan inklusi ing cabang HEAD samesthine ing kuartal kaping 4 2019;
    • Pembalap ena wis dianyari kanggo ndhukung adaptor jaringan ENAv2 (Elastic Network Adapter) generasi kapindho sing digunakake ing infrastruktur Elastic Compute Cloud (EC2) kanggo ngatur komunikasi antarane kelenjar EC2 kanthi kecepatan nganti 25 Gb / s. Dhukungan NETMAP wis ditambahake lan dites driver ena, lan tata memori wis dicocogake kanggo ngaktifake mode LLQ ing Amazon EC2 A1 lingkungan;
  • Aplikasi lan sistem port
    • Komponen tumpukan grafis sing dianyari lan port sing gegandhengan karo xorg. Port nggunakake USE_XORG lan XORG_CAT wis dipindhah menyang framework USES tinimbang nelpon bsd.xorg.mk liwat bsd.port.mk. Port kasebut saiki kalebu gendera "USES = xorg" ing makefiles. Fungsi XORG_CAT wis dipisahake saka bsd.xorg.mk lan saiki diaktifake dening flag "USES=xorg-cat". Alat sing ditambahake kanggo langsung ngasilake port xorg saka repositori git
      freedesktop.org, sing, contone, ngidini sampeyan nggawe port kanggo versi sing durung dirilis. Ing mangsa ngarep, kita rencana nyiyapake alat kanggo nggunakake sistem perakitan meson tinimbang autotools kanggo mbangun port xorg.

      Pakaryan wis rampung kanggo ngresiki port xorg lawas sing disambungake menyang komponen sing ora didhukung maneh, contone, port x11/libXp wis dibusak, lan port x11/Xxf86misc, x11-fonts/libXfontcache lan grafis/libGLw wis ora digunakake. ;

    • Pakaryan wis rampung kanggo nambah dhukungan kanggo Java 11 lan rilis sing luwih anyar ing FreeBSD, uga kanggo ngowahi sawetara owah-owahan menyang cabang Java 8. Sawise ndhukung fitur Java 11 anyar kayata Java Flight Recorder, HotSpot Serviceability Agent, HotSpot Debugger dileksanakake. kanggo FreeBSD, DTrace, Javac Server, Java Sound lan SCTP, kerjane dipindhah kanggo mesthekake yen kabeh tes kompatibilitas liwati. Jumlah gagal nalika ngliwati tes wis suda saka 50 dadi 2;
    • Desktop KDE Plasma, Kerangka KDE, Aplikasi KDE lan Qt tetep dianyari lan dianyari nganti rilis paling anyar;
    • Port karo desktop Xfce dianyari kanggo release 4.14;
    • Wit port FreeBSD wis ngluwihi 38000 port, jumlah PR sing ora ditutup rada luwih saka 2000, sing 400 PR durung rampung. Sajrone periode laporan, 7340 owah-owahan digawe saka 169 pangembang. Loro peserta anyar (Santhosh Raju lan Dmitri Goutnik) nampa hak committer. Rilis anyar manajer paket pkg 1.12 wis diterbitake, kanthi dhukungan kanggo overlay ing wit port lan ngresiki bsd.sites.mk. Antarane nganyari versi pinunjul ing bandar punika: 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;
    • Pangembangan proyek terus ClonOS, ngembangaken distribusi khusus kanggo nyebarke infrastruktur server virtual. Ing babagan tugas sing ditanggulangi, ClonOS meh padha karo sistem kayata Proxmox, Triton (Joyent), OpenStack, OpenNebula lan Amazon AWS, prabédan utama yaiku panggunaan FreeBSD lan kemampuan kanggo ngatur, nyebar lan ngatur kontainer FreeBSD Jail lan lingkungan virtual adhedhasar hypervisors Bhyve lan Xen. Owah-owahan anyar kalebu dhukungan
      cloud-init kanggo Linux/BSD VM lan cloudbase-init kanggo Windows VM, miwiti transisi kanggo nggunakake gambar asli, nggunakake Jenkins CI kanggo testing mbangun lan repositori pkg anyar kanggo instalasi
      ClonOS saka paket.

Source: opennet.ru

Add a comment