Laporan Kemajuan FreeBSD Q2019 XNUMX

diterbitkan laporan perkembangan proyek FreeBSD dari bulan April hingga Juni 2019. Di antara perubahan yang dapat kami catat:

  • Masalah umum dan sistemik
    • Tim Inti memutuskan untuk membentuk kelompok kerja untuk menjajaki kemungkinan pemindahan kode sumber dari sistem kendali sumber Subversion terpusat ke sistem Git yang terdesentralisasi.
    • Melakukan pengujian fuzz pada kernel FreeBSD menggunakan sistem syzkaller dan sejumlah kesalahan yang teridentifikasi telah diperbaiki. Menambahkan lapisan untuk pengujian fuzzing perpustakaan untuk kompatibilitas dengan lingkungan 32-bit pada sistem dengan kernel 64-bit. Menerapkan kemampuan untuk menjalankan syzkaller di mesin virtual berbasis bhyve. Pada tahap selanjutnya, direncanakan untuk memperluas cakupan pengujian panggilan sistem, menggunakan pembersih LLVM untuk memeriksa kernel, menggunakan netdump untuk menyimpan dump kernel jika terjadi crash selama pengujian fuzzing, dll.
    • Pekerjaan telah dimulai untuk memperbarui implementasi zlib di tingkat kernel. Untuk akses kernel ke kode zlib, direktori contrib/zlib diubah namanya menjadi sys/contrib/zlib, dan file header crc.h juga diubah namanya untuk menghindari konflik dengan zlib/crc.h. Membersihkan kode lama yang bergantung pada zlib dan inflate. Selanjutnya, direncanakan untuk menyediakan kemampuan untuk membangun kernel secara bersamaan dengan zlib lama dan baru untuk transfer bertahap ke versi baru fungsi yang menggunakan kompresi;
    • Infrastruktur emulasi lingkungan Linux (Linuxulator) telah diperbarui. Peningkatan dukungan untuk alat debugging Linux seperti utilitas strace. Paket linux-c7-strace telah ditambahkan ke port, yang dapat digunakan untuk melacak file executable Linux alih-alih utilitas truss dan ktrace standar, yang belum dapat memecahkan kode beberapa flag dan struktur khusus Linux. Selain itu, paket linux-ltp dengan executable Proyek Uji Linux telah ditambahkan dan masalah kompatibilitas dengan executable yang terkait dengan versi baru glibc telah diselesaikan;
    • Implementasi operasi pembatalan yang tertunda dalam mekanisme pmap telah dialihkan ke penggunaan algoritma pemrosesan antrian yang bekerja tanpa kunci, yang memungkinkan penyelesaian masalah skalabilitas saat melakukan sejumlah besar operasi unmap paralel;
    • Mekanisme pemblokiran vnode selama eksekusi panggilan sistem dari keluarga execve() telah diubah, yang memungkinkan peningkatan efisiensi saat mengeksekusi execve() secara bersamaan untuk file yang sama (misalnya, saat melakukan operasi perakitan dengan paralelisasi dari peluncuran kompiler);
  • keamanan
    • Hypervisor bhyve terus meningkatkan dukungan untuk migrasi langsung lingkungan tamu dari satu host ke host lainnya dan fungsi Simpan/Pulihkan, yang memungkinkan Anda membekukan sistem tamu, menyimpan status ke file, dan kemudian melanjutkan eksekusi.
    • Melalui penggunaan perpustakaan libvdsk, bhyve telah menambahkan dukungan untuk image disk dalam format QCOW2. Membutuhkan instalasi agar berfungsi
      dimodifikasi secara khusus versi bhyve, yang telah dikonversi untuk menggunakan penangan operasi file berdasarkan libvdsk. Selama periode pelaporan, libvdsk juga melakukan upaya untuk menyederhanakan integrasi dukungan untuk format baru, meningkatkan kinerja baca dan tulis, dan menambahkan dukungan untuk Copy-On-Write. Dari tugas yang tersisa, integrasi libvdsk ke dalam struktur utama bhyve dicatat;

    • Sebuah sistem untuk mengumpulkan informasi lalu lintas telah ditambahkan ke pelabuhan
      maltrail, yang memungkinkan Anda membuat jebakan untuk permintaan jaringan berbahaya (IP dan domain dari daftar hitam diperiksa) dan mengirim informasi tentang aktivitas yang terdeteksi ke server terpusat untuk pemblokiran selanjutnya atau analisis upaya serangan;

    • Platform telah ditambahkan ke port untuk mendeteksi serangan, menganalisis log, dan memantau integritas file Wazuh (garpu Ossec dengan dukungan untuk integrasi dengan ELK-Stack);
  • Subsistem jaringan
    • Driver ena telah diperbarui untuk mendukung 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. Dukungan NETMAP telah ditambahkan ke driver ena.
    • FreeBSD HEAD mengadopsi tumpukan MMC/SD baru, berdasarkan kerangka CAM dan memungkinkan Anda menghubungkan perangkat dengan antarmuka SDIO (Secure Digital I/O). Misalnya, SDIO digunakan dalam modul WiFi dan Bluetooth untuk banyak papan, seperti Raspberry Pi 3. Tumpukan baru ini juga memungkinkan antarmuka CAM digunakan untuk mengirim perintah SD dari aplikasi di ruang pengguna, sehingga memungkinkan untuk membuat perangkat driver yang beroperasi di tingkat pengguna. Pekerjaan telah dimulai untuk membuat driver untuk chip nirkabel Broadcom yang beroperasi dalam mode FullMAC (di sisi chip, ia menjalankan sistem operasinya sendiri dengan implementasi tumpukan nirkabel 802.11);
    • Pekerjaan sedang dilakukan untuk mengimplementasikan NFSv4.2 (RFC-7862) untuk FreeBSD. Versi baru NFS menambahkan dukungan untuk fungsi posix_fadvise, posix_fallocation, mode SEEKHOLE/SEEKDATA di lseek, dan pengoperasian penyalinan lokal bagian file di server (tanpa transfer ke klien).

      FreeBSD saat ini menyediakan dukungan dasar untuk operasi LayoutError, IOAdvise, Allocation, dan Copy. Yang tersisa hanyalah mengimplementasikan operasi Seek yang diperlukan untuk menggunakan lseek(SEEKHOLE/SEEKDATA) dengan NFS. Dukungan NFSv4.2 direncanakan untuk FreeBSD 13;

  • Penyimpanan dan sistem file
    • Proyek untuk mengerjakan ulang driver untuk subsistem FUSE (Sistem file di USerspace), yang memungkinkan pembuatan implementasi sistem file di ruang pengguna, hampir selesai. Driver yang awalnya disediakan sudah usang dan mengandung banyak bug. Sebagai bagian dari proyek modernisasi driver, dukungan untuk protokol FUSE 7.23 diterapkan (sebelumnya versi 7.8, dirilis 11 tahun lalu didukung), kode ditambahkan untuk memeriksa hak akses di sisi kernel (β€œ-o default_permissions”), panggilan ke VOP_MKNOD, VOP_BMAP dan VOP_ADVLOCK telah ditambahkan, kemampuan untuk menginterupsi operasi FUSE, menambahkan dukungan untuk pipa yang tidak disebutkan namanya dan soket unix di fusefs, kemampuan untuk menggunakan kqueue untuk /dev/fuse, memungkinkan memperbarui parameter mount melalui β€œmount -u”, menambahkan dukungan untuk mengekspor Fusef melalui NFS, menerapkan akuntansi RLIMIT_FSIZE, menambahkan flag FOPEN_KEEP_CACHE dan FUSE_ASYNC_READ, optimalisasi kinerja yang signifikan telah dilakukan dan organisasi caching telah ditingkatkan;
    • Dukungan untuk operasi BIO_DELETE telah ditambahkan ke kode pager swap, yang memungkinkan Anda menggunakan perintah TRIM saat menghapus blok dari drive SSD untuk meningkatkan masa pakainya.
  • Dukungan perangkat keras
    • Pekerjaan terus dilakukan untuk mengimplementasikan dukungan untuk ARM64 SoC Broadcom BCM5871X dengan prosesor ARMv8 Cortex-A57, yang ditujukan untuk digunakan di router, gateway, dan penyimpanan jaringan. Selama periode pelaporan, dukungan untuk bus iProc PCIe internal dan eksternal ditingkatkan, dukungan untuk BNXT Ethernet ditambahkan, dan pekerjaan sedang dilakukan untuk menggunakan mesin kripto bawaan untuk mempercepat IPsec. Integrasi kode tersebut ke dalam cabang HEAD diharapkan terjadi pada paruh kedua tahun ini;
    • Pekerjaan telah dimulai pada dukungan 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. Dukungan untuk platform dasar (SMMP multi-pengguna) dan SATA 3.0 telah diterapkan. Dukungan untuk USB 3.0, SD/MMC dan I2C sedang dalam pengembangan. Paket tersebut mencakup dukungan untuk Ethernet, GPIO dan QSPI. Penyelesaian pekerjaan dan penyertaan di cabang HEAD diharapkan pada kuartal ke-4 tahun 2019.
    • Driver mlx5en dan mlx5ib yang diperbarui untuk adaptor Ethernet dan InfiniBand Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex], dan ConnectX-6 [Dx]. Menambahkan dukungan untuk adaptor Mellanox Socket Direct (ConnectX-6), memungkinkan throughput hingga 200 Gb/s pada bus PCIe Gen 3.0. Untuk chip BlueField multi-core, dukungan untuk driver RShim telah ditambahkan. Paket mstflint dengan seperangkat utilitas diagnostik untuk adaptor Mellanox telah ditambahkan ke port;
  • Aplikasi dan sistem port
    • Komponen tumpukan grafis telah diperbarui. Driver drm.ko (Direct Rendering Manager) telah di-porting dari kernel Linux 5.0. Driver ini dianggap eksperimental dan telah ditambahkan ke pohon port sebagai grafis/drm-devel-kmod. Karena driver menggunakan kerangka KPI Linux yang diperbarui agar kompatibel dengan DRM API kernel Linux, FreeBSD CURRENT diperlukan untuk dijalankan. Driver vboxvideo.ko drm untuk GPU virtual VirtualBox juga telah di-porting dari Linux. Paket Mesa telah diperbarui ke rilis 18.3.2 dan beralih menggunakan LLVM dari port devel/llvm80 alih-alih devel/llvm60.
    • Pohon port FreeBSD telah melampaui 37000 port, jumlah PR yang belum ditutup tetap di angka 2146. Selama periode pelaporan, 7837 perubahan dilakukan dari 172 pengembang. Tiga peserta baru menerima hak komit. Di antara pembaruan versi signifikan pada port adalah: MySQL 5.7, Python 3.6, Ruby 2.5, Samba 4.8, Julia 1.0, Firefox 68.0, Chromium 75.0.3770.100. Semua port Go telah dikonversi untuk menggunakan flag "USES=go". Menambahkan tanda "USES=cabal" ke manajer paket Cabal yang digunakan untuk kode Haskell. Mode perlindungan tumpukan yang ketat diaktifkan. Versi Python default adalah 3.6, bukan 2.7.
    • Rilis utilitas telah disiapkan nsysctl 1.0, yang menawarkan analog dengan /sbin/sysctl yang menggunakan libxo untuk keluaran dan menyediakan serangkaian opsi yang diperluas. Nsysctl dapat digunakan untuk memantau secara visual keadaan nilai sysctl dan menyajikan informasi pada objek dalam bentuk terstruktur. Output dalam format XML, JSON dan HTML dimungkinkan;

Sumber: opennet.ru

Tambah komentar