2020年第一季FreeBSD發展報告

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

  • 一般性和系統性問題
    • 從 FreeBSD-CURRENT 原始碼樹中刪除了 GCC 編譯器集,以及未使用的 gperf、gcov 和 gtc(devicetree 編譯器)實用程式。所有不支援 Clang 的平台都已切換為使用從 ports 安裝的外部建置工具。基礎系統附帶了過時的 GCC 4.2.1 版本,由於 4.2.2 過渡到 GPLv3 許可證,因此無法整合較新的版本,這被認為不適合 FreeBSD 基礎元件。 GCC 的當前版本(包括 GCC 9)仍然可以從軟體包和連接埠安裝。
    • Linux 環境模擬基礎架構 (Linuxulator) 新增了對 sendfile 系統呼叫、TCP_CORK 模式(nginx 所需)和 MAP_32BIT 標誌(解決了從 Ubuntu Bionic 中使用 Mono 啟動套件的問題)的支援。使用高於 2.30 的 glibc(例如 CentOS 8)時的 DNS 解析問題已解決。
      持續整合基礎架構提供了運行 Linuxulator 的 LTP(Linux 測試專案)作業的能力,以測試程式碼所做的改進以支援 Linux。大約 400 個測試失敗並需要修復(有些錯誤是由誤報引起的,有些需要簡單修復,但還有其他錯誤需要添加對新系統呼叫的支援才能修復)。我們已經完成了清理 Linuxulator 程式碼並簡化偵錯的工作。支援擴充屬性和 fexecve 系統呼叫的補丁已經準備好,但尚未審核。

    • 為將原始碼從集中式來源控制系統 Subversion 遷移到分散式系統 Git 而建立的工作群組會議仍在繼續。一份包含遷移建議的報告正在準備中。
    • В RTLD (運行時連結器)改進了直接執行模式(“/libexec/ld-elf.so.1 {path} {arguments}”)。
    • 使用 syzkaller 系統對 FreeBSD 核心進行模糊測試的專案仍在繼續開發中。在報告期間,網路堆疊和使用 syzkaller 識別的檔案描述符表的程式碼中的問題已解決。錯誤診斷後,SCTP 堆疊中添加了更改,以使偵錯更加容易。在stress2 集中新增了規則以識別可能的回歸。新增了對新系統呼叫模糊測試的支持,包括 copy_file_range()、__realpathat() 和 Capsicum 子系統呼叫。透過模糊測試覆蓋 Linux 模擬層的工作仍在繼續。我們分析並消除了最新 Coverity Scan 報告中指出的錯誤。
    • 持續整合系統已切換為僅使用 clang/lld 執行所有頭分支測試。在測試 RISC-V 時,可確保形成完整的磁碟映像,以便使用 OpenSBI 在 QEMU 中執行測試。新增了測試映像和 powerpc64 虛擬機器的新任務(FreeBSD-head-powerpc64-images、FreeBSD-head-powerpc64-testvm)。
    • 目前正在進行將 Kyua 測試套件從連接埠(devel/kyua)轉移到基礎系統的工作,以解決在新架構上使用 Kyua 時出現的問題(軟體包安裝速度非常慢),其開發是使用模擬器或FPGA 。整合到基礎系統中將顯著簡化嵌入式平台的測試以及與持續整合系統的介面。
    • 已啟動一個專案來優化網橋驅動程式的效能 if_bridge,它使用單一互斥鎖來鎖定內部數據,這不允許在具有大量監獄環境或統一在一個網路中的虛擬機的系統上實現所需的效能。在此階段,已將測試新增至程式碼中,以防止在使用鎖定的現代化過程中發生迴歸。正在考慮使用 ConcurrencyKit 並行化資料傳輸處理程序(bridge_input()、bridge_output()、bridge_forward()...)的可能性。
    • 新增了新的 sigfastblock 系統調用,允許執行緒為快速訊號處理程序指定記憶體區塊,以提高異常處理程序的效能。
    • 核心增加了對 ARMv8.1 系統支援的 LSE(大型系統擴展)原子指令的支援。在 Cavium ThunderX2 和 AWS Graviton 2 板上運行時需要這些指令來提高效能。新增的變更會偵測 LSE 支援並基於它們動態啟用原子實作。在測試過程中,LSE 的使用使得組裝核心所花費的處理器時間減少了 15%。
    • 針對 ELF 格式的可執行檔進行了效能最佳化,並擴展了工具包的功能。
      新增了對快取 DWARF 偵錯資訊的支持,解決了 elfcopy/objcopy 實用程式中的問題,新增了 DW_AT_ranges 處理,
      readelf 實作了解碼 PROTMAX_DISABLE、STKGAP_DISABLE 和 WXNEEDED 標誌以及 Xen 和 GNU Build-ID 的功能。

  • 安全
    • 為了提高 FreeBSD 在 Azure 雲端環境中的效能,正在努力提供對 HyperV Socket 機制的支持,該機制允許使用套接字介面在來賓系統和主機環境之間進行交互,而無需設定網路。
    • 目前正在努力提供 FreeBSD 的可重複構建,從而確保系統組件的可執行檔完全根據聲明的源代碼編譯,並且不包含無關的更改。
    • elfctl 公用程式中加入了在各個進程層級控製附加保護機制(ASLR、PROT_MAX、堆疊間隙、W+X 映射)包含的能力
  • 儲存和檔案系統
    • 目前正在努力實現 NFS 在基於 TLS 1.3 的加密通訊通道上運行的能力,而不是使用 Kerberos(sec=krb5p 模式),後者僅限於加密 RPC 訊息,並且僅在軟體中實現。新的實作使用核心提供的 TLS 堆疊來啟用硬體加速。 NFS over TLS 程式碼幾乎已準備好進行測試,但仍需要支援簽署的用戶端憑證並調整核心 TLS 堆疊以傳送 NFS 資料(用於接收的修補程式已準備就緒)。
  • 硬體支援
    • 正在努力增加對基於 AMD 技術的中國 x86 CPU Hygon 的支援;
    • 作為 CheriBSD 的一部分,CheriBSD 是 FreeBSD 的分支,用於研究處理器架構 奇瑞 (能力硬體增強RISC指令),繼續實現對ARM Morello處理器的支持,這將支援基於Capsicum專案安全模型的CHERI記憶體存取控制系統。莫雷洛晶片 正在計劃 2021 年發布。目前的工作重點是增加對為 Morello 提供支援的 Arm Neoverse N1 平台的支援。針對 RISC-V 架構的 CheriBSD 的初始移植已經推出。 CheriBSD 持續開發基於 MIPS64 架構的 CHERI 參考原型。
    • FreeBSD 移植繼續針對基於 ARMv64 Cortex-A1046 處理器的 8 位元 SoC NXP LS72A,具有整合式網路封包處理加速引擎、10 Gb 乙太網路、PCIe 3.0、SATA 3.0 和 USB 3.0。目前,驅動程式 QorIQ 和 LS1046A、GPIO、QorIQ LS10xx AHCI、VF610 I2C、Epson RX-8803 RTC、QorIQ LS10xx SDHCI 正在準備轉移到主要 FreeBSD 元件。
    • ena 驅動程式已更新至版本2.1.1,支援彈性運算雲(EC2) 基礎設施中使用的第二代ENAv2(彈性網路適配器)網路適配器,以高達2 Gb/秒的速度組織EC25 節點之間的通訊。 s。 ENA 2.2.0 的更新正在準備中。
    • 針對 powerpc64 平台的 FreeBSD 連接埠的改進仍在繼續。重點是為採用 IBM POWER8 和 POWER9 處理器的系統提供優質效能。報告期間內,FreeBSD-CURRENT 已轉為使用 LLVM/Clang 10.0 編譯器和 lld 連結器,而非 GCC。預設情況下,powerpc64 系統使用 ELFv2 ABI,並且已停止支援 ELFv1 ABI。 FreeBSD-STABLE 仍然有 gcc 4.2.1。 virtio、aacraid 和 ixl 驅動程式的問題已解決。在 powerpc64 系統上,可以在沒有大頁面支援的情況下運行 QEMU。
    • 為 RISC-V 架構提供支援的工作仍在繼續。以目前的形式,FreeBSD 已經在 SiFive Hi Five Unleashed 板上成功啟動,並已準備好驅動程式
      UART、SPI 和 PRCI,支援 OpenSBI 和 SBI 0.2 韌體。報告期間內,工作重點是從 GCC 遷移到 clang 和 lld。

  • 應用程式和連接埠系統
    • FreeBSD 連接埠集合已突破 39 個連接埠的門檻,未關閉的 PR 數量略超過 2400 個,其中 640 個 PR 尚未排序。報告期間內,8146家開發商進行了173次變更。四名新參與者獲得了提交者權利(Loïc Bartoletti、Mikael Urankar、Kyle Evans、Lorenzo Salvadore)。新增了 USES=qca 標誌並刪除了 USES=zope 標誌(由於與 Python 3 不相容)。從 ports 樹中刪除 Python 2.7 的工作正在進行中 - 所有基於 Python 2 的 ports 都必須移植到 Python 3,否則將被刪除。 pkg 套件管理器已更新至版本 1.13.2。
    • 更新了圖形堆疊元件和 xorg 相關連接埠。
      X.org 伺服器已更新至版本 1.20.8(先前在 1.18 分支上發布),這使得 FreeBSD 預設使用 udev/evdev 後端來處理輸入裝置。 Mesa 套件已切換為預設使用 DRI3 擴充而不是 DRI2。正在進行的工作是保留圖形驅動程式、輸入裝置堆疊和 drm-kmod 元件(支援 amdgpu、i915 和 radeon DRM 模組操作的端口,使用 linuxkpi 框架與 Linux 核心的直接渲染管理器相容)最新。

    • KDE Plasma 桌面、KDE ​​框架、KDE ​​應用程式和 Qt 保持最新狀態並更新至最新版本。新的應用程式 kstars(星圖集)已新增至連接埠。
    • 已完成工作以消除將 Xfce 更新到版本 4 後出現的 xfwm4.14 視窗管理器中出現的回歸性變更(例如,裝飾視窗時出現的工件)。
    • Wine 連接埠已更新,並發布了 Wine 5.0(之前提供了 4.0.3)。
    • 從 1.14 版本開始,Go 語言編譯器為 FreeBSD 64 新增了對 ARM12.0 架構的官方支援。
    • 基礎系統上的 OpenSSH 已更新至版本 7.9p1。
    • sysctlmibinfo2 程式庫已實作並放置在連接埠 (devel/libsysctlmibinfo2) 中,提供用於存取 sysctl MIB 並將 sysctl 名稱轉換為物件識別碼 (OID) 的 API。
    • 已產生分發更新 游牧BSD 1.3.1,它是 FreeBSD 的一個版本,適合用作可從 USB 驅動器啟動的便攜式桌面。圖形環境基於視窗管理器 開箱。用於安裝驅動器 彈道飛彈防禦系統 (支援掛載CD9660、FAT、HFS+、NTFS、Ext2/3/4),設定無線網路 - 無線管理器,並控制音量 - DSBM混音器.
    • 開始 工作 為監獄環境管理器撰寫完整的文檔 。 Pot 0.11.0 正在準備發布,其中將包括用於管理網路堆疊的工具。

來源: opennet.ru

添加評論