Laporan Kemajuan S2019 XNUMX FreeBSD

diterbitkan melaporkan perkembangan projek FreeBSD dari April hingga Jun 2019. Antara perubahan yang boleh kita perhatikan:

  • Isu umum dan sistemik
    • Pasukan Teras memutuskan untuk menubuhkan kumpulan kerja untuk meneroka kemungkinan memindahkan kod sumber daripada sistem kawalan sumber Subversion terpusat kepada sistem Git terdesentralisasi.
    • Menjalankan ujian fuzz kernel FreeBSD menggunakan sistem syzkaller dan beberapa ralat yang dikenal pasti telah diperbetulkan. Menambah lapisan untuk ujian kabur perpustakaan untuk keserasian dengan persekitaran 32-bit pada sistem dengan kernel 64-bit. Keupayaan untuk menjalankan syzkaller dalam mesin maya berasaskan bhyve telah dilaksanakan. Pada peringkat seterusnya, ia dirancang untuk meluaskan liputan ujian panggilan sistem, menggunakan sanitizer LLVM untuk memeriksa kernel, menggunakan netdump untuk menyimpan pembuangan kernel semasa ranap semasa ujian fuzzing, dsb.
    • Kerja telah bermula untuk mengemas kini pelaksanaan zlib di peringkat kernel. Untuk akses kernel kepada kod zlib, direktori contrib/zlib telah dinamakan semula kepada sys/contrib/zlib, dan fail pengepala crc.h juga dinamakan semula untuk mengelakkan konflik dengan zlib/crc.h. Membersihkan kod warisan yang bergantung pada zlib dan mengembang. Seterusnya, ia dirancang untuk menyediakan keupayaan untuk membina kernel serentak dengan zlib lama dan baharu untuk pemindahan beransur-ansur ke versi baharu fungsi yang menggunakan pemampatan;
    • Infrastruktur emulasi persekitaran Linux (Linuxulator) telah dikemas kini. Peningkatan sokongan untuk alat penyahpepijatan Linux seperti utiliti strace. Pakej linux-c7-strace telah ditambahkan pada port, yang boleh digunakan untuk mengesan fail boleh laku Linux dan bukannya utiliti kekuda dan ktrace standard, yang belum boleh menyahkod beberapa bendera dan struktur khusus Linux. Selain itu, pakej linux-ltp dengan Linux Test Project executable telah ditambah dan isu keserasian dengan executable yang dipautkan dengan versi baharu glibc telah diselesaikan;
    • Pelaksanaan operasi pembatalan tertunda dalam mekanisme pmap telah dipindahkan kepada penggunaan algoritma pemprosesan baris gilir yang berfungsi tanpa kunci, yang memungkinkan untuk menyelesaikan masalah kebolehskalaan apabila melakukan sejumlah besar operasi unmap selari;
    • Mekanisme untuk menyekat vnode semasa pelaksanaan panggilan sistem keluarga execve() telah diubah, yang memungkinkan untuk mencapai peningkatan kecekapan apabila melaksanakan execve() secara serentak untuk fail yang sama (contohnya, semasa menjalankan operasi pemasangan dengan penyejajaran daripada pelancaran pengkompil);
  • keselamatan
    • Hipervisor bhyve terus meningkatkan sokongan untuk pemindahan Langsung persekitaran tetamu daripada satu hos ke hos yang lain dan kefungsian Simpan/Pulihkan, yang membolehkan anda membekukan sistem tetamu, menyimpan keadaan ke fail, dan kemudian menyambung semula pelaksanaan.
    • Melalui penggunaan perpustakaan libvdsk, bhyve telah menambah sokongan untuk imej cakera dalam format QCOW2. Memerlukan pemasangan untuk berfungsi
      diubah suai khas versi bhyve, yang telah ditukar untuk menggunakan pengendali operasi fail berdasarkan libvdsk. Dalam tempoh pelaporan, libvdsk juga menjalankan kerja untuk memudahkan penyepaduan sokongan untuk format baharu, meningkatkan prestasi baca dan tulis serta menambah sokongan untuk Copy-On-Write. Daripada tugas yang selebihnya, penyepaduan libvdsk ke dalam struktur utama bhyve dicatatkan;

    • Sistem untuk mengumpul maklumat trafik telah ditambahkan pada pelabuhan
      Maltrail, yang membolehkan anda membuat perangkap untuk permintaan rangkaian berniat jahat (IP dan domain daripada senarai hitam disemak) dan menghantar maklumat tentang aktiviti yang dikesan ke pelayan berpusat untuk penyekatan atau analisis percubaan serangan berikutnya;

    • Platform telah ditambahkan pada port untuk mengesan serangan, menganalisis log dan memantau integriti fail Wazuh (cabang Ossec dengan sokongan untuk penyepaduan dengan ELK-Timbunan);
  • Subsistem rangkaian
    • Pemacu ena telah dikemas kini untuk menyokong penyesuai rangkaian ENAv2 (Penyesuai Rangkaian Elastik) generasi kedua yang digunakan dalam infrastruktur Elastic Compute Cloud (EC2) untuk mengatur komunikasi antara nod EC2 pada kelajuan sehingga 25 Gb/s. Sokongan NETMAP telah ditambahkan pada pemacu ena.
    • FreeBSD HEAD menggunakan tindanan MMC/SD baharu, berdasarkan rangka kerja CAM dan membolehkan anda menyambungkan peranti dengan antara muka SDIO (Secure Digital I/O). Sebagai contoh, SDIO digunakan dalam modul WiFi dan Bluetooth untuk banyak papan, seperti Raspberry Pi 3. Tindanan baharu juga membenarkan antara muka CAM digunakan untuk menghantar arahan SD daripada aplikasi dalam ruang pengguna, yang memungkinkan untuk mencipta peranti pemandu yang beroperasi di peringkat pengguna. Kerja telah bermula untuk mencipta pemacu untuk cip wayarles Broadcom yang beroperasi dalam mod FullMAC (pada bahagian cip ia menjalankan persamaan sistem pengendaliannya sendiri dengan pelaksanaan tindanan wayarles 802.11);
    • Kerja sedang dijalankan untuk melaksanakan NFSv4.2 (RFC-7862) untuk FreeBSD. Versi baharu NFS menambah sokongan untuk fungsi posix_fadvise, posix_fallocate, mod SEEKHOLE/SEEKDATA dalam lseek dan operasi penyalinan setempat bagi bahagian fail pada pelayan (tanpa pemindahan kepada klien).

      FreeBSD pada masa ini menyediakan sokongan asas untuk operasi LayoutError, IOAdvise, Allocate dan Copy. Yang tinggal hanyalah melaksanakan operasi Seek yang diperlukan untuk menggunakan lseek(SEEKHOLE/SEEKDATA) dengan NFS. Sokongan NFSv4.2 dirancang untuk FreeBSD 13;

  • Sistem storan dan fail
    • Projek untuk mengolah semula pemacu untuk subsistem FUSE (Sistem fail dalam USErspace), yang membolehkan mewujudkan pelaksanaan sistem fail dalam ruang pengguna, hampir siap. Pemandu asalnya dibekalkan sudah lapuk dan mengandungi banyak pepijat. Sebagai sebahagian daripada projek pemodenan pemacu, sokongan untuk protokol FUSE 7.23 telah dilaksanakan (sebelum ini versi 7.8, dikeluarkan 11 tahun lalu telah disokong), kod telah ditambahkan untuk menyemak hak akses pada bahagian kernel (β€œ-o default_permissions”), panggilan ke VOP_MKNOD, VOP_BMAP dan VOP_ADVLOCK telah ditambah, keupayaan untuk mengganggu operasi FUSE, menambah sokongan untuk paip yang tidak dinamakan dan soket unix dalam fius, keupayaan untuk menggunakan kqueue untuk /dev/fius, dibenarkan mengemas kini parameter pelekap melalui "mount -u", menambah sokongan untuk mengeksport fius melalui NFS, melaksanakan perakaunan RLIMIT_FSIZE, menambahkan bendera FOPEN_KEEP_CACHE dan FUSE_ASYNC_READ, pengoptimuman prestasi yang ketara telah dibuat dan organisasi caching telah dipertingkatkan;
    • Sokongan untuk operasi BIO_DELETE telah ditambahkan pada kod kelui swap, yang membolehkan anda menggunakan arahan TRIM apabila mengalih keluar blok daripada pemacu SSD untuk meningkatkan hayat perkhidmatannya.
  • Sokongan perkakasan
    • Kerja terus melaksanakan sokongan untuk ARM64 SoC Broadcom BCM5871X dengan pemproses ARMv8 Cortex-A57, bertujuan untuk digunakan dalam penghala, get laluan dan storan rangkaian. Dalam tempoh pelaporan, sokongan untuk bas PCIe iProc dalaman dan luaran telah dipertingkatkan, sokongan untuk BNXT Ethernet telah ditambah dan kerja sedang dijalankan untuk menggunakan enjin crypto terbina dalam untuk mempercepatkan IPsec. Integrasi kod ke dalam cawangan HEAD dijangka pada separuh kedua tahun ini;
    • Kerja-kerja telah bermula untuk sokongan 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. Sokongan untuk platform asas (SMP berbilang pengguna) dan SATA 3.0 telah pun dilaksanakan. Sokongan untuk USB 3.0, SD/MMC dan I2C sedang dibangunkan. Pelan itu termasuk sokongan untuk Ethernet, GPIO dan QSPI. Penyiapan kerja dan kemasukan di cawangan HEAD dijangka pada suku ke-4 2019.
    • Pemacu mlx5en dan mlx5ib yang dikemas kini untuk penyesuai Ethernet dan InfiniBand Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] dan ConnectX-6 [Dx]. Sokongan tambahan untuk penyesuai Mellanox Socket Direct (ConnectX-6), membolehkan daya pemprosesan sehingga 200Gb/s pada bas PCIe Gen 3.0. Untuk cip BlueField berbilang teras, sokongan untuk pemacu RShim telah ditambah. Pakej mstflint dengan set utiliti diagnostik untuk penyesuai Mellanox telah ditambahkan pada port;
  • Aplikasi dan sistem pelabuhan
    • Komponen tindanan grafik telah dikemas kini. Pemacu drm.ko (Pengurus Rendering Langsung) telah dialihkan daripada kernel Linux 5.0. Pemacu ini dianggap percubaan dan telah ditambahkan pada pokok port sebagai grafik/drm-devel-kmod. Memandangkan pemacu menggunakan rangka kerja KPI Linux yang dikemas kini untuk serasi dengan API DRM kernel Linux, FreeBSD CURRENT diperlukan untuk dijalankan. Pemacu drm vboxvideo.ko untuk GPU maya VirtualBox juga telah dialihkan dari Linux. Pakej Mesa telah dikemas kini untuk mengeluarkan 18.3.2 dan beralih menggunakan LLVM daripada port devel/llvm80 dan bukannya devel/llvm60.
    • Pohon pelabuhan FreeBSD telah melepasi 37000 pelabuhan, bilangan PR yang tidak ditutup kekal pada 2146. Dalam tempoh pelaporan, 7837 perubahan telah dibuat daripada 172 pemaju. Tiga peserta baharu menerima hak komitter. Antara kemas kini versi penting dalam port ialah: 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 ditukar untuk menggunakan bendera "USES=go". Menambahkan bendera "USES=cabal" pada pengurus pakej Cabal yang digunakan untuk kod Haskell. Mod perlindungan tindanan yang ketat didayakan. Versi lalai Python ialah 3.6 dan bukannya 2.7.
    • Keluaran utiliti telah disediakan nsysctl 1.0, yang menawarkan analog kepada /sbin/sysctl yang menggunakan libxo untuk output dan menyediakan set pilihan yang diperluaskan. Nsysctl boleh digunakan untuk memantau secara visual keadaan nilai sysctl dan menyampaikan maklumat mengenai objek dalam bentuk berstruktur. Output dalam format XML, JSON dan HTML adalah mungkin;

Sumber: opennet.ru

Tambah komen