FreeBSD 2019 年第 XNUMX 季進度報告

發表 2019 年 XNUMX 月至 XNUMX 月 FreeBSD 計畫發展報告。 在這些變化中我們可以注意到:

  • 一般性和系統性問題
    • Core 團隊決定成立一個工作小組來探索將原始碼從集中式 Subversion 來源控制系統轉移到分散式 Git 系統的可能性。
    • 使用該系統對FreeBSD核心進行模糊測試 塞茲卡勒 並修正了一些已發現的錯誤。 新增了一個用於對庫進行模糊測試的層,以確保與具有 32 位元核心的系統上的 64 位元環境的兼容性。 已實現在基於 bhyve 的虛擬機器中運行 syzkaller 的能力。 下一階段計劃擴大系統呼叫測試的覆蓋範圍,使用LLVM sanitizer檢查內核,使用netdump在模糊測試期間崩潰時保存內核轉儲等。
    • 在核心層級更新 zlib 實作的工作已經開始。 為了內核存取zlib程式碼,contrib/zlib目錄被重新命名為sys/contrib/zlib,crc.h頭檔也被重新命名,以避免與zlib/crc.h衝突。 清理了依賴 zlib 和 inflate 的遺留程式碼。 接下來,計畫提供新舊zlib同時建構核心的能力,以便逐步轉移到使用壓縮的新版本功能;
    • Linux 環境模擬基礎架構 (Linuxulator) 已更新。 增加了對 Linux 偵錯工具(例如 strace 實用程式)的支援。 linux-c7-strace 軟體包已添加到連接埠中,可用於追蹤 Linux 可執行文件,而不是標準 truss 和 ktrace 實用程序,後者尚無法解碼某些 Linux 特定的標誌和結構。 此外,還新增了具有 Linux 測試專案可執行檔的 linux-ltp 軟體包,並解決了與新版本 glibc 連結的可執行檔的兼容性問題;
    • pmap機制中延遲失效運算的實作已轉移到使用無鎖定工作的佇列處理演算法,這使得在執行大量並行unmap作業時解決可擴展性問題成為可能;
    • 更改了 execve() 系列系統呼叫執行期間阻塞 vnode 的機制,這使得在對相同檔案同時執行 execve() 時(例如,並行執行組譯操作時)可以提高效率編譯器啟動);
  • 安全
    • bhyve 虛擬機管理程式繼續改進對來賓環境從一台主機到另一台主機的即時遷移以及保存/恢復功能的支持,該功能允許您凍結來賓系統,將狀態保存到文件,然後恢復執行。
    • 透過使用 libvdsk 函式庫,bhyve 新增了對 QCOW2 格式磁碟映像的支援。 需要安裝才能運作
      特別修改的 bhyve 版本,已轉換為使用基於 libvdsk 的檔案操作處理程序。 報告期間內,libvdsk也進行了簡化新格式支援整合、提高讀寫效能、增加對Copy-On-Write的支援等工作。 在其餘任務中,值得注意的是將 libvdsk 整合到 bhyve 主要結構中;

    • 港口增加了交通資訊收集系統
      馬爾特雷爾,它允許您為惡意網路請求建立陷阱(檢查黑名單中的 IP 和網域),並將有關檢測到的活動的資訊發送到集中式伺服器,以便隨後阻止或分析攻擊嘗試;

    • 連接埠中新增了用於偵測攻擊、分析日誌和監控檔案完整性的平台 瓦祖赫 (Ossec 的分支,支援與 ELK-Stack);
  • 網絡子系統
    • ena 驅動程式已更新,支援彈性運算雲端 (EC2) 基礎架構中使用的第二代 ENAv2(彈性網路適配器)網路適配器,以高達 2 Gb/s 的速度組織 EC25 節點之間的通訊。 NETMAP 支援已新增至 ena 驅動程式。
    • FreeBSD HEAD 採用新的 MMC/SD 堆疊,基於 CAM 框架,讓您可以使用 SDIO(安全數位 I/O)介面連接裝置。 例如,SDIO 用於許多板的 WiFi 和藍牙模組,例如 Raspberry Pi 3。新堆疊還允許使用 CAM 介面從用戶空間的應用程式發送 SD 命令,從而可以建立裝置在使用者層級運行的驅動程式。 為在 FullMAC 模式下運行的 Broadcom 無線晶片創建驅動程式的工作已經開始(在晶片方面,它運行類似自己的作業系統,並實現其 802.11 無線堆疊);
    • 為 FreeBSD 實施 NFSv4.2 (RFC-7862) 的工作正在進行中。 新版本的 NFS 新增了對 posix_fadvise、posix_fallocate 函數、lseek 中的 SEEKHOLE/SEEKDATA 模式的支持,以及在伺服器上本地複製部分檔案的操作(無需傳輸到客戶端)。

      FreeBSD 目前提供對 LayoutError、IOAdvise、Allocate 和 Copy 操作的基本支援。 剩下的工作就是實作將 lseek(SEEKHOLE/SEEKDATA) 與 NFS 結合使用所需的 Seek 操作。 FreeBSD 4.2 計畫支援 NFSv13;

  • 儲存和檔案系統
    • 重新設計 FUSE(使用者空間中的檔案系統)子系統驅動程式的專案已接近完成,該子系統允許在使用者空間中建立檔案系統的實作。 最初提供的驅動程式已過時並且包含許多錯誤。 作為驅動程式現代化專案的一部分,實作了對 FUSE 7.23 協定的支援(先前支援 7.8 年前發布的 11 版本),新增了程式碼來檢查核心端的存取權限(「-o default_permissions」),呼叫新增了VOP_MKNOD、 VOP_BMAP 和VOP_ADVLOCK,中斷FUSE 操作的能力,添加了對fusefs中無名管道和unix套接字的支持,將kqueue 用於/dev/fuse 的能力,允許通過“mount -u”更新掛載參數,添加了支援對於透過 NFS 導出fusef,實施了 RLIMIT_FSIZE 記賬,添加了 FOPEN_KEEP_CACHE 標誌和 FUSE_ASYNC_READ,進行了重大性能優化並改進了緩存組織;
    • 交換分頁器程式碼中新增了對 BIO_DELETE 操作的支持,這允許您在從 SSD 磁碟機刪除區塊時使用 TRIM 命令以延長其使用壽命。
  • 硬體支援
    • 我們正在繼續努力實現對採用 ARMv64 Cortex-A5871 處理器的 ARM8 SoC Broadcom BCM57X 的支持,旨在用於路由器、網關和網路儲存。 在報告期間內,改善了對內部和外部iProc PCIe匯流排的支持,增加了對BNXT乙太網路的支持,並正在進行使用內建加密引擎加速IPsec的工作。 預計下半年將代碼整合到 HEAD 分支;
    • 支援基於 ARMv64 Cortex-A1046 處理器的 8 位元 SoC NXP LS72A 的工作已經開始,該處理器具有整合式網路封包處理加速引擎、10 Gb 乙太網路、PCIe 3.0、SATA 3.0 和 USB 3.0。 對基礎平台(多用戶 SMP)和 SATA 3.0 的支援已經實現。 對 USB 3.0、SD/MMC 和 I2C 的支援正在開發中。 該計劃包括對乙太網路、GPIO 和 QSPI 的支援。 預計工作將於 4 年第四季完成並納入 HEAD 分支。
    • 更新了 Mellanox ConnectX-5 [Lx]、ConnectX-5 [Ex] 和 ConnectX-4 [Dx] 乙太網路和 InfiniBand 適配器的 mlx5en 和 mlx6ib 驅動程式。 增加了對 Mellanox Socket Direct (ConnectX-6) 適配器的支持,允許 PCIe Gen 200 總線上高達 3.0Gb/s 的吞吐量。 對於多核心 BlueField 晶片,新增了對 RShim 驅動程式的支援。 mstflint 軟體包以及一組適用於 Mellanox 適配器的診斷公用程式已新增至連接埠;
  • 應用程式和連接埠系統
    • 圖形堆疊組件已更新。 drm.ko(直接渲染管理器)驅動程式已從 Linux 5.0 核心移植。 該驅動程式被認為是實驗性的,並已作為graphics/drm-devel-kmod 添加到 ports 樹中。 由於該驅動程式使用更新的Linux KPI框架來相容於Linux核心DRM API,因此需要FreeBSD CURRENT才能運作。 VirtualBox 虛擬 GPU 的 vboxvideo.ko drm 驅動程式也已從 Linux 移植。 Mesa 軟體套件已更新至版本 18.3.2,並切換為使用 devel/llvm80 連接埠的 LLVM,而不是 devel/llvm60。
    • FreeBSD 端口樹已超過 37000 個端口,未關閉的 PR 數量仍為 2146 個。報告期間內,7837 個開發者進行了 172 項更改。 三位新參與者獲得了提交者權利。 移植中的重要版本更新包括:MySQL 5.7、Python 3.6、Ruby 2.5、Samba 4.8、Julia 1.0、Firefox 68.0、Chromium 75.0.3770.100。 所有 Go 連接埠都已轉換為使用“USES=go”標誌。 在用於 Haskell 程式碼的 Cabal 套件管理器中新增了“USES=cabal”標誌。 啟用嚴格堆疊保護模式。 預設的 Python 版本是 3.6,而不是 2.7。
    • 實用程式版本已準備就緒 nsysctl 1.0,它提供了 /sbin/sysctl 的類似功能,使用 libxo 用於輸出並提供一組擴充的選項。 Nsysctl 可用於直觀地監視 sysctl 值的狀態,並以結構化形式呈現物件的資訊。 可以以 XML、JSON 和 HTML 格式輸出;

來源: opennet.ru

添加評論