Laporan Pengembangan FreeBSD untuk kuartal pertama tahun 2020

diterbitkan laporan perkembangan proyek FreeBSD dari Januari hingga Maret 2020. Di antara perubahan yang dapat kami catat:

  • Masalah umum dan sistemik
    • Menghapus kumpulan kompiler GCC dari pohon sumber FreeBSD-CURRENT, serta utilitas gperf, gcov, dan gtc (devicetree compiler) yang tidak digunakan. Semua platform yang tidak mendukung Dentang telah dialihkan menggunakan alat pembangunan eksternal yang diinstal dari port. Sistem dasar mengirimkan rilis GCC 4.2.1 yang sudah ketinggalan zaman, dan integrasi versi yang lebih baru tidak dapat dilakukan karena transisi 4.2.2 ke lisensi GPLv3, yang dianggap tidak sesuai untuk komponen dasar FreeBSD. Rilis GCC saat ini, termasuk GCC 9, masih dapat diinstal dari paket dan port.
    • Infrastruktur emulasi lingkungan Linux (Linuxulator) telah menambahkan dukungan untuk panggilan sistem sendfile, mode TCP_CORK (diperlukan untuk nginx), dan flag MAP_32BIT (memecahkan masalah dengan meluncurkan paket dengan Mono dari Ubuntu Bionic). Masalah resolusi DNS saat menggunakan glibc yang lebih baru dari 2.30 (misalnya dari CentOS 8) telah teratasi.
      Infrastruktur integrasi berkelanjutan memberikan kemampuan untuk menjalankan pekerjaan LTP (Linux Testing Project) yang menjalankan Linuxulator untuk menguji perbaikan yang dilakukan pada kode untuk mendukung Linux. Sekitar 400 pengujian gagal dan memerlukan perbaikan (beberapa kesalahan disebabkan oleh positif palsu, beberapa memerlukan perbaikan sepele, namun ada juga yang memerlukan penambahan dukungan untuk panggilan sistem baru untuk memperbaikinya). Pekerjaan telah dilakukan untuk membersihkan kode Linuxulator dan menyederhanakan proses debug. Patch dengan dukungan untuk atribut yang diperluas dan panggilan sistem fexecve telah disiapkan, tetapi belum ditinjau.

    • Pertemuan kelompok kerja yang dibentuk untuk melakukan migrasi kode sumber dari sistem kendali sumber terpusat Subversion ke sistem desentralisasi Git terus berlanjut. Laporan berisi usulan migrasi sedang dalam proses persiapan.
    • В rtld (runtime linker) meningkatkan mode eksekusi langsung (“/libexec/ld-elf.so.1 {path} {arguments}”).
    • Proyek pengujian fuzzing kernel FreeBSD menggunakan sistem syzkaller terus berkembang. Selama periode pelaporan, masalah dalam tumpukan jaringan dan kode untuk bekerja dengan tabel deskriptor file yang diidentifikasi menggunakan syzkaller telah dihilangkan. Setelah diagnosis kesalahan, perubahan telah ditambahkan ke tumpukan SCTP untuk mempermudah proses debug. Aturan telah ditambahkan ke set stress2 untuk mengidentifikasi kemungkinan regresi. Menambahkan dukungan untuk pengujian fuzz panggilan sistem baru, termasuk panggilan subsistem copy_file_range(), __realpathat() dan Capsicum. Pekerjaan terus mencakup lapisan emulasi Linux dengan pengujian fuzz. Kami menganalisis dan menghilangkan kesalahan yang dicatat dalam laporan Coverity Scan terbaru.
    • Sistem integrasi berkelanjutan telah beralih untuk menjalankan semua pengujian cabang utama hanya menggunakan dentang/lld. Saat menguji RISC-V, pembentukan image disk lengkap dipastikan untuk menjalankan pengujian di QEMU menggunakan OpenSBI. Menambahkan tugas baru untuk menguji gambar dan mesin virtual powerpc64 (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • Pekerjaan sedang dilakukan untuk mentransfer rangkaian pengujian Kyua dari port (devel/kyua) ke sistem dasar untuk menyelesaikan masalah (paket diinstal sangat lambat) yang muncul saat menggunakan Kyua pada arsitektur baru, yang pengembangannya dilakukan menggunakan emulator atau FPGA. Integrasi ke dalam sistem dasar akan sangat menyederhanakan pengujian platform tertanam dan antarmuka dengan sistem integrasi berkelanjutan.
    • Sebuah proyek telah diluncurkan untuk mengoptimalkan kinerja driver jembatan jaringan if_bridge, yang menggunakan mutex tunggal untuk mengunci data internal, yang tidak memungkinkan pencapaian kinerja yang diinginkan pada sistem dengan banyak lingkungan jail atau mesin virtual yang digabungkan dalam satu jaringan. Pada tahap ini, pengujian telah ditambahkan ke kode untuk mencegah terjadinya regresi selama modernisasi bekerja dengan kunci. Kemungkinan menggunakan ConcurrencyKit untuk memparalelkan penangan transfer data (bridge_input(), bridge_output(), bridge_forward(), ...) sedang dipertimbangkan.
    • Menambahkan panggilan sistem sigfastblock baru untuk memungkinkan thread menentukan blok memori untuk penangan sinyal cepat guna meningkatkan kinerja penangan pengecualian.
    • Kernel menambahkan dukungan untuk instruksi atom LSE (Large System Extension) yang didukung oleh sistem ARMv8.1. Instruksi ini diperlukan untuk meningkatkan kinerja saat dijalankan pada board Cavium ThunderX2 dan AWS Graviton 2. Perubahan yang ditambahkan mendeteksi dukungan LSE dan secara dinamis mengaktifkan implementasi atom berdasarkan perubahan tersebut. Selama pengujian, penggunaan LSE memungkinkan pengurangan waktu yang dihabiskan prosesor untuk merakit kernel sebesar 15%.
    • Optimalisasi kinerja telah dilakukan dan fungsionalitas toolkit telah diperluas untuk file yang dapat dieksekusi dalam format ELF.
      Menambahkan dukungan untuk menyimpan informasi debug DWARF dalam cache, memecahkan masalah pada utilitas elfcopy/objcopy, menambahkan pemrosesan DW_AT_ranges,
      readelf mengimplementasikan kemampuan untuk memecahkan kode flag PROTMAX_DISABLE, STKGAP_DISABLE dan WXNEEDED, serta Xen dan GNU Build-ID.

  • keamanan
    • Untuk meningkatkan kinerja FreeBSD di lingkungan cloud Azure, pekerjaan sedang dilakukan untuk memberikan dukungan untuk mekanisme HyperV Socket, yang memungkinkan penggunaan antarmuka soket untuk interaksi antara sistem tamu dan lingkungan host tanpa menyiapkan jaringan.
    • Pekerjaan sedang dilakukan untuk menyediakan versi FreeBSD yang dapat diulang, sehingga memungkinkan untuk memastikan bahwa file komponen sistem yang dapat dieksekusi dikompilasi persis dari kode sumber yang dinyatakan dan tidak mengandung perubahan yang tidak relevan.
    • Kemampuan untuk mengontrol penyertaan mekanisme perlindungan tambahan (ASLR, PROT_MAX, stack gap, pemetaan W+X) pada tingkat proses individual telah ditambahkan ke utilitas elfctl
  • Penyimpanan dan sistem file
    • Pekerjaan sedang dilakukan untuk mengimplementasikan kemampuan NFS untuk beroperasi melalui saluran komunikasi terenkripsi berdasarkan TLS 1.3, daripada menggunakan Kerberos (mode sec=krb5p), yang terbatas pada mengenkripsi pesan RPC saja dan hanya diimplementasikan dalam perangkat lunak. Implementasi baru ini menggunakan tumpukan TLS yang disediakan kernel untuk mengaktifkan akselerasi perangkat keras. Kode NFS melalui TLS hampir siap untuk pengujian, tetapi masih memerlukan pekerjaan untuk mendukung sertifikat klien yang ditandatangani dan mengadaptasi tumpukan TLS kernel untuk mengirim data NFS (patch untuk penerimaan sudah siap).
  • Dukungan perangkat keras
    • Pekerjaan sedang dilakukan untuk menambahkan dukungan untuk CPU Hygon x86 Cina berdasarkan teknologi AMD;
    • Sebagai bagian dari CheriBSD, cabang dari FreeBSD untuk penelitian arsitektur prosesor CHERI (Instruksi RISC yang Ditingkatkan Perangkat Keras Kemampuan), dukungan untuk prosesor ARM Morello terus diterapkan, yang akan mendukung sistem kontrol akses memori CHERI berdasarkan model keamanan proyek Capsicum. chip Morello sedang merencanakan rilis pada tahun 2021. Pekerjaan saat ini difokuskan pada penambahan dukungan untuk platform Arm Neoverse N1 yang mendukung Morello. Port awal CheriBSD untuk arsitektur RISC-V telah disajikan. Pengembangan CheriBSD berlanjut untuk prototipe referensi CHERI berdasarkan arsitektur MIPS64.
    • Porting FreeBSD berlanjut untuk SoC NXP LS64A 1046-bit berdasarkan prosesor ARMv8 Cortex-A72 dengan mesin akselerasi pemrosesan paket jaringan terintegrasi, Ethernet 10 Gb, PCIe 3.0, SATA 3.0, dan USB 3.0. Saat ini, driver QorIQ dan LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI sedang dipersiapkan untuk ditransfer ke komposisi utama FreeBSD.
    • Driver ena telah diperbarui ke versi 2.1.1 dengan dukungan untuk adaptor jaringan ENAv2 (Elastic Network Adapter) generasi kedua yang digunakan dalam infrastruktur Elastic Compute Cloud (EC2) untuk mengatur komunikasi antar node EC2 dengan kecepatan hingga 25 Gb/ S. Pembaruan untuk ENA 2.2.0 sedang dipersiapkan.
    • Perbaikan pada port FreeBSD untuk platform powerpc64 terus berlanjut. Fokusnya adalah memberikan kinerja berkualitas pada sistem dengan prosesor IBM POWER8 dan POWER9. Selama periode pelaporan, FreeBSD-CURRENT dipindahkan untuk menggunakan kompiler LLVM/Clang 10.0 dan linker lld, bukan GCC. Secara default, sistem powerpc64 menggunakan ELFv2 ABI dan dukungan untuk ELFv1 ABI telah dihentikan. FreeBSD-STABLE masih memiliki gcc 4.2.1. Masalah dengan driver virtio, aacraid dan ixl telah teratasi. Pada sistem powerpc64, QEMU dapat dijalankan tanpa dukungan Huge Pages.
    • Pekerjaan terus mengimplementasikan dukungan untuk arsitektur RISC-V. Dalam bentuknya yang sekarang, FreeBSD telah berhasil melakukan booting pada papan SiFive Hifive Unleashed, yang drivernya telah disiapkan
      UART, SPI dan PRCI, mendukung firmware OpenSBI dan SBI 0.2. Selama periode pelaporan, pekerjaan difokuskan pada migrasi dari GCC ke clang dan lld.

  • Aplikasi dan sistem port
    • Pengumpulan port FreeBSD telah melewati ambang batas 39 ribu port, jumlah PR yang tidak ditutup sedikit melebihi 2400, dimana 640 PR belum diurutkan. Selama periode pelaporan, 8146 perubahan dilakukan dari 173 pengembang. Empat peserta baru menerima hak komit (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). Menambahkan bendera USES=qca dan menghapus bendera USES=zope (karena ketidakcocokan dengan Python 3). Pekerjaan sedang dilakukan untuk menghapus Python 2.7 dari pohon port - semua port berbasis Python 2 harus di-porting ke Python 3 atau akan dihapus. Manajer paket pkg telah diperbarui ke rilis 1.13.2.
    • Komponen tumpukan grafis yang diperbarui dan port terkait xorg.
      Server X.org telah diperbarui ke versi 1.20.8 (sebelumnya dikirimkan pada cabang 1.18), yang memungkinkan FreeBSD secara default menggunakan backend udev/evdev untuk menangani perangkat input. Paket Mesa telah dialihkan untuk menggunakan ekstensi DRI3, bukan DRI2 secara default. Pekerjaan sedang dilakukan untuk menjaga driver grafis, tumpukan perangkat input, dan komponen drm-kmod (port yang memungkinkan pengoperasian modul DRM amdgpu, i915 dan radeon, menggunakan kerangka linuxkpi untuk kompatibilitas dengan Direct Rendering Manager dari kernel Linux) hingga tanggal.

    • Desktop KDE Plasma, Kerangka KDE, Aplikasi KDE dan Qt selalu diperbarui dan diperbarui ke rilis terbaru. Aplikasi baru kstars (star atlas) telah ditambahkan ke port.
    • Pekerjaan telah dilakukan untuk menghilangkan perubahan regresif pada window manager xfwm4 yang muncul setelah memperbarui Xfce ke versi 4.14 (misalnya, artefak muncul saat mendekorasi windows).
    • Port Wine telah diperbarui untuk merilis Wine 5.0 (sebelumnya ditawarkan 4.0.3).
    • Dimulai dengan versi 1.14, kompiler bahasa Go menambahkan dukungan resmi untuk arsitektur ARM64 untuk FreeBSD 12.0.
    • OpenSSH pada sistem dasar telah diperbarui ke rilis 7.9p1.
    • Pustaka sysctlmibinfo2 telah diimplementasikan dan ditempatkan di port (devel/libsysctlmibinfo2), menyediakan API untuk mengakses sysctl MIB dan menerjemahkan nama sysctl menjadi pengidentifikasi objek (OID).
    • Pembaruan distribusi telah dibuat PengembaraBSD 1.3.1, yang merupakan edisi FreeBSD yang diadaptasi untuk digunakan sebagai desktop portabel yang dapat di-boot dari drive USB. Lingkungan grafis didasarkan pada window manager Kotak terbuka. Digunakan untuk memasang drive DSBMD (pemasangan CD9660, FAT, HFS+, NTFS, Ext2/3/4 didukung), untuk mengkonfigurasi jaringan nirkabel - wifimgr, dan untuk mengontrol volume - DSBMixer.
    • Dimulai kerja tentang menulis dokumentasi lengkap untuk manajer lingkungan penjara bisa. Pot 0.11.0 sedang dipersiapkan untuk dirilis, yang akan mencakup alat untuk mengelola tumpukan jaringan.

Sumber: opennet.ru

Tambah komentar