Laporan Pembangunan FreeBSD S2020 XNUMX

diterbitkan melaporkan perkembangan projek FreeBSD dari Januari hingga Mac 2020. Antara perubahan yang boleh kita perhatikan:

  • Isu umum dan sistemik
    • Mengalih keluar set pengkompil GCC daripada pepohon sumber FreeBSD-CURRENT, serta utiliti gperf, gcov dan gtc (pengkompil pokok peranti) yang tidak digunakan. Semua platform yang tidak menyokong Clang telah ditukar kepada menggunakan alat binaan luaran yang dipasang dari port. Sistem asas menghantar keluaran GCC 4.2.1 yang lapuk, dan penyepaduan versi yang lebih baharu tidak dapat dilakukan disebabkan oleh peralihan 4.2.2 kepada lesen GPLv3, yang dianggap tidak sesuai untuk komponen asas FreeBSD. Keluaran semasa GCC, termasuk GCC 9, masih boleh dipasang daripada pakej dan port.
    • Infrastruktur emulasi persekitaran Linux (Linuxulator) telah menambah sokongan untuk panggilan sistem fail hantar, mod TCP_CORK (diperlukan untuk nginx) dan bendera MAP_32BIT (menyelesaikan masalah dengan melancarkan pakej dengan Mono daripada Ubuntu Bionic). Masalah dengan resolusi DNS apabila menggunakan glibc lebih baru daripada 2.30 (contohnya dari CentOS 8) telah diselesaikan.
      Infrastruktur penyepaduan berterusan menyediakan keupayaan untuk menjalankan kerja LTP (Linux Testing Project) menjalankan Linuxulator untuk menguji peningkatan yang dibuat pada kod untuk menyokong Linux. Kira-kira 400 ujian gagal dan memerlukan pembetulan (sesetengah ralat disebabkan oleh positif palsu, sesetengahnya memerlukan pembetulan remeh, tetapi ada yang lain memerlukan penambahan sokongan untuk panggilan sistem baharu untuk diperbaiki). Kerja telah dilakukan untuk membersihkan kod Linuxulator dan memudahkan penyahpepijatan. Tampalan dengan sokongan untuk atribut lanjutan dan panggilan sistem fexecve telah disediakan, tetapi belum disemak.

    • Mesyuarat kumpulan kerja yang diwujudkan untuk melaksanakan pemindahan kod sumber daripada sistem kawalan sumber terpusat Subversion kepada sistem terdesentralisasi Git diteruskan. Laporan dengan cadangan untuk migrasi sedang dalam proses penyediaan.
    • Π’ rtld (penyambung masa jalan) memperbaik mod pelaksanaan langsung (β€œ/libexec/ld-elf.so.1 {path} {arguments}”).
    • Projek untuk menguji kabur kernel FreeBSD menggunakan sistem syzkaller terus berkembang. Dalam tempoh pelaporan, masalah dalam susunan rangkaian dan kod untuk bekerja dengan jadual deskriptor fail yang dikenal pasti menggunakan syzkaller telah dihapuskan. Berikutan diagnosis ralat, perubahan telah ditambahkan pada timbunan SCTP untuk memudahkan penyahpepijatan. Peraturan telah ditambahkan pada set tekanan2 untuk mengenal pasti kemungkinan regresi. Menambah sokongan untuk ujian fuzz bagi panggilan sistem baharu, termasuk copy_file_range(), __realpathat() dan panggilan subsistem Capsicum. Kerja terus meliputi lapisan emulasi Linux dengan ujian fuzz. Kami menganalisis dan menghapuskan ralat yang dinyatakan dalam laporan Coverity Scan terkini.
    • Sistem integrasi berterusan telah beralih kepada melaksanakan semua ujian cawangan kepala hanya menggunakan clang/lld. Apabila menguji RISC-V, pembentukan imej cakera yang lengkap dipastikan untuk menjalankan ujian dalam QEMU menggunakan OpenSBI. Menambahkan tugas baharu untuk menguji imej dan mesin maya powerpc64 (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • Kerja sedang dijalankan untuk memindahkan suite ujian Kyua dari port (devel/kyua) ke sistem asas untuk menyelesaikan masalah (pakej dipasang sangat perlahan) yang timbul apabila menggunakan Kyua pada seni bina baharu, pembangunan yang dijalankan menggunakan emulator atau FPGA. Penyepaduan ke dalam sistem asas akan memudahkan ujian platform terbenam dan antara muka dengan sistem penyepaduan berterusan dengan ketara.
    • Satu projek telah dilancarkan untuk mengoptimumkan prestasi pemacu jambatan rangkaian if_bridge, yang menggunakan mutex tunggal untuk mengunci data dalaman, yang tidak membenarkan mencapai prestasi yang diingini pada sistem dengan sejumlah besar persekitaran penjara atau mesin maya disatukan dalam satu rangkaian. Pada peringkat ini, ujian telah ditambahkan pada kod untuk mengelakkan regresi daripada berlaku semasa pemodenan bekerja dengan kunci. Kemungkinan menggunakan ConcurrencyKit untuk menyelaraskan pengendali pemindahan data (bridge_input(), bridge_output(), bridge_forward(), ...) sedang dipertimbangkan.
    • Menambahkan panggilan sistem sigfastblock baharu untuk membenarkan benang menentukan blok memori untuk pengendali isyarat pantas untuk meningkatkan prestasi pengendali pengecualian.
    • Kernel menambah sokongan untuk arahan atom LSE (Large System Extension) yang disokong oleh sistem ARMv8.1. Arahan ini diperlukan untuk meningkatkan prestasi apabila dijalankan pada papan Cavium ThunderX2 dan AWS Graviton 2. Perubahan tambahan mengesan sokongan LSE dan secara dinamik membolehkan pelaksanaan atom berdasarkannya. Semasa ujian, penggunaan LSE memungkinkan untuk mengurangkan masa pemproses yang dihabiskan semasa memasang kernel sebanyak 15%.
    • Pengoptimuman prestasi telah dijalankan dan kefungsian kit alat telah dikembangkan untuk fail boleh laku dalam format ELF.
      Menambah sokongan untuk menyimpan maklumat penyahpepijatan DWARF, menyelesaikan masalah dalam utiliti elfcopy/objcopy, menambahkan pemprosesan DW_AT_ranges,
      readelf melaksanakan keupayaan untuk menyahkod bendera PROTMAX_DISABLE, STKGAP_DISABLE dan WXNEEDED, serta Xen dan GNU Build-ID.

  • keselamatan
    • Untuk meningkatkan prestasi FreeBSD dalam persekitaran awan Azure, kerja sedang dijalankan untuk menyediakan sokongan untuk mekanisme Soket HyperV, yang membenarkan penggunaan antara muka soket untuk interaksi antara sistem tetamu dan persekitaran hos tanpa menyediakan rangkaian.
    • Kerja sedang dijalankan untuk menyediakan binaan FreeBSD yang boleh diulang, membolehkan untuk memastikan bahawa fail boleh laku bagi komponen sistem disusun tepat daripada kod sumber yang diisytiharkan dan tidak mengandungi perubahan luar.
    • Keupayaan untuk mengawal kemasukan mekanisme perlindungan tambahan (ASLR, PROT_MAX, jurang tindanan, pemetaan W+X) pada tahap proses individu telah ditambahkan pada utiliti elfctl
  • Sistem storan dan fail
    • Kerja sedang dijalankan untuk melaksanakan keupayaan NFS untuk beroperasi melalui saluran komunikasi yang disulitkan berdasarkan TLS 1.3, dan bukannya menggunakan Kerberos (sec=krb5p mod), yang terhad kepada menyulitkan mesej RPC sahaja dan hanya dilaksanakan dalam perisian. Pelaksanaan baharu menggunakan tindanan TLS yang disediakan kernel untuk mendayakan pecutan perkakasan. Kod NFS atas TLS hampir sedia untuk ujian, tetapi masih memerlukan kerja untuk menyokong sijil klien yang ditandatangani dan menyesuaikan tindanan TLS kernel untuk menghantar data NFS (tampalan untuk menerima sudah sedia).
  • Sokongan perkakasan
    • Kerja sedang dijalankan untuk menambah sokongan untuk CPU Hygon x86 Cina berdasarkan teknologi AMD;
    • Sebagai sebahagian daripada CheriBSD, garpu FreeBSD untuk seni bina pemproses penyelidikan SAYANG (Arahan RISC Dipertingkatkan Perkakasan Keupayaan), sokongan untuk pemproses ARM Morello terus dilaksanakan, yang akan menyokong sistem kawalan capaian memori CHERI berdasarkan model keselamatan projek Capsicum. Cip Morello sedang merancang dikeluarkan pada tahun 2021. Kerja kini tertumpu pada menambah sokongan untuk platform Arm Neoverse N1 yang memberi kuasa kepada Morello. Pelabuhan awal CheriBSD untuk seni bina RISC-V telah dibentangkan. Pembangunan CheriBSD diteruskan untuk prototaip rujukan CHERI berdasarkan seni bina MIPS64.
    • Pengalihan FreeBSD diteruskan untuk SoC NXP LS64A 1046-bit berdasarkan pemproses ARMv8 Cortex-A72 dengan enjin pecutan pemprosesan paket rangkaian bersepadu, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 dan USB 3.0. Pada masa ini, pemacu QorIQ dan LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI sedang disediakan untuk dipindahkan ke komposisi utama FreeBSD.
    • Pemacu ena telah dikemas kini kepada versi 2.1.1 dengan sokongan untuk generasi kedua penyesuai rangkaian ENAv2 (Elastic Network Adapter) yang digunakan dalam infrastruktur Elastic Compute Cloud (EC2) untuk mengatur komunikasi antara nod EC2 pada kelajuan sehingga 25 Gb/ s. Kemas kini kepada ENA 2.2.0 sedang disediakan.
    • Penambahbaikan pada port FreeBSD untuk platform powerpc64 diteruskan. Tumpuan adalah untuk menyediakan prestasi berkualiti pada sistem dengan pemproses IBM POWER8 dan POWER9. Dalam tempoh pelaporan, FreeBSD-CURRENT telah dipindahkan untuk menggunakan pengkompil LLVM/Clang 10.0 dan pemaut lld dan bukannya GCC. Secara lalai, sistem powerpc64 menggunakan ELFv2 ABI dan sokongan untuk ELFv1 ABI telah dihentikan. FreeBSD-STABLE masih mempunyai gcc 4.2.1. Masalah dengan pemandu virtio, aacraid dan ixl telah diselesaikan. Pada sistem powerpc64 adalah mungkin untuk menjalankan QEMU tanpa sokongan Huge Pages.
    • Kerja terus melaksanakan sokongan untuk seni bina RISC-V. Dalam bentuk semasa, FreeBSD telah berjaya but pada papan SiFive Hifive Unleashed, yang mana pemandu telah disediakan
      UART, SPI dan PRCI, menyokong perisian tegar OpenSBI dan SBI 0.2. Dalam tempoh pelaporan, kerja tertumpu pada penghijrahan dari GCC ke clang dan lld.

  • Aplikasi dan sistem pelabuhan
    • Koleksi port FreeBSD telah melepasi ambang 39 ribu port, bilangan PR yang tidak ditutup sedikit melebihi 2400, yang mana 640 PR masih belum diisih. Dalam tempoh pelaporan, 8146 perubahan telah dibuat daripada 173 pemaju. Empat peserta baharu menerima hak komitter (LoΓ―c Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). Menambahkan bendera USES=qca dan mengeluarkan bendera USES=zope (kerana ketidakserasian dengan Python 3). Kerja sedang dijalankan untuk mengalih keluar Python 2.7 daripada pokok port - semua port berasaskan Python 2 mesti dialihkan ke Python 3 atau akan dialih keluar. Pengurus pakej pkg telah dikemas kini untuk mengeluarkan 1.13.2.
    • Komponen tindanan grafik yang dikemas kini dan port berkaitan xorg.
      Pelayan X.org telah dikemas kini kepada versi 1.20.8 (sebelum ini dihantar pada cawangan 1.18), yang membenarkan FreeBSD untuk lalai menggunakan bahagian belakang udev/evdev untuk mengendalikan peranti input. Pakej Mesa telah ditukar untuk menggunakan sambungan DRI3 dan bukannya DRI2 secara lalai. Kerja sedang dijalankan untuk memastikan pemacu grafik, timbunan peranti input dan komponen drm-kmod (port yang membolehkan pengendalian modul amdgpu, i915 dan radeon DRM, menggunakan rangka kerja linuxkpi untuk keserasian dengan Pengurus Rendering Langsung kernel Linux) terkini.

    • Desktop KDE Plasma, Rangka Kerja KDE, Aplikasi KDE dan Qt sentiasa dikemas kini dan dikemas kini kepada keluaran terkini. Aplikasi baharu kstars (atlas bintang) telah ditambahkan pada port.
    • Kerja telah dilakukan untuk menghapuskan perubahan regresif dalam pengurus tetingkap xfwm4 yang muncul selepas mengemas kini Xfce kepada versi 4.14 (contohnya, artifak muncul semasa menghias tingkap).
    • Port Wine telah dikemas kini untuk mengeluarkan Wine 5.0 (sebelum ini 4.0.3 ditawarkan).
    • Bermula dengan versi 1.14, pengkompil bahasa Go menambah sokongan rasmi untuk seni bina ARM64 untuk FreeBSD 12.0.
    • OpenSSH pada sistem asas telah dikemas kini untuk mengeluarkan 7.9p1.
    • Pustaka sysctlmibinfo2 telah dilaksanakan dan diletakkan dalam port (devel/libsysctlmibinfo2), menyediakan API untuk mengakses MIB sysctl dan menterjemahkan nama sysctl ke dalam pengecam objek (OIDs).
    • Kemas kini pengedaran telah dihasilkan NomadBSD 1.3.1, yang merupakan edisi FreeBSD yang disesuaikan untuk digunakan sebagai desktop mudah alih boleh but daripada pemacu USB. Persekitaran grafik adalah berdasarkan pengurus tetingkap Buka kotak. Digunakan untuk memasang pemacu DSBMD (memasang CD9660, FAT, HFS+, NTFS, Ext2/3/4 disokong), untuk mengkonfigurasi rangkaian wayarles - wifimgr, dan untuk mengawal kelantangan - DSBMixer.
    • Bermula bekerja menulis dokumentasi lengkap untuk pengurus persekitaran penjara periuk. Pot 0.11.0 sedang disediakan untuk dikeluarkan, yang akan merangkumi alatan untuk mengurus susunan rangkaian.

Sumber: opennet.ru

Tambah komen