DragonFly BSD 是一個開源BSD操作系統,旨在成為FreeBSD-4.x OS系列的邏輯延續。它與其他基於BSD的發行版非常相似,例如FreeBSD,NetBSD或OpenBSD。它是路徑中的一個分支,可以說,讓BSD基地有機會從FreeBSD-5系列中的全新方向發展。最重要的是,它包含一組獨特的功能,使其與其他類似的操作系統區別開來。
HAMMER是主要景點
HAMMER是DragonFly的主要吸引力,是一種現代化的高性能文件系統,具有歷史訪問功能和內置鏡像功能。內核也是DragonFly成為更好的BSD發行版的原因之一。
為內核提供兩種不同的調度程序
DragonFly的內核包括兩個不同的調度程序,一個調度所有可執行實體(輕量級內核線程),另一個調度程序一次為每個處理器選擇一個用戶線程並抽像出用戶線程(用戶線程調度程序)。此外,內核還有一個複雜的內核內存分配器,包括面向對象的內存分配器和一個名為kmalloc()的基本內核malloc,DragonFly設備文件系統(DEVFS),虛擬內核(VKERNEL),NFS V3 RPC異步,以及磁盤I / O調度程序框架(已刪除)。
功能,很多功能
在其他有趣的功能中,我們可以提到支持非循環任意掛載點的NULL文件系統層(NULLFS),TMPFS(臨時文件系統VFS),透明磁盤加密,託管SSD(固態存儲設備)支持,變體(上下文) -sensitive)符號鏈接,DNTPD(DragonFly網絡時間守護程序)和DMA(DragonFly郵件代理)。此外,用戶可以隨時檢查點或將進程掛起到磁盤。該發行版提供強大的AHCI驅動程序,穩定的設備名稱,以及良好的加密和捲管理。
底線
總的來說,DragonFly被證明是一個現代的,用戶友好且易於訪問的類UNIX操作系統。它可以作為桌面系統或強大的BSD服務器每天使用。
此版本中的新功能:
- DragonFly版本5.2.1已經發布,包括Meltdown / Spectre緩解,對HAMMER2,ipfw和加速視頻的許多改進,以及(在5.2.1更新中)對CVE-2018-8897的修復。
版本中的新功能:
- Christian Groessler(1):
- telnetd:在登錄提示之前打印系統信息(操作系統和體系結構)。
- Matthew Dillon(7):
- hammer2 - 修正除以0比賽
- 內核 - 內核umtx的選擇性MFC從主 開始工作
- kernel - 更新umtx文檔
- libc和pthreads - 使用nmalloc修復atfork問題,更新dmalloc
- hammer2 - 修復重命名
- hammer2 - 優化hammer2_pfs_memory_wakeup()
- hammer2 - 修復由於重命名而產生的無限臟鏈
- Sascha Wildner(5):
- hammer2.8:修復拼寫錯誤。
- 在各個地方說'hammer2'而不是'錘子'。
- mtree:修復/ usr / share中幾個目錄的所有者。
- libc / nls:使用當前區域設置(由線程設置)。
- libarchive:恢復無意推送的提交。
版本4.8.1中的新功能:
- 內核:
- 重構緩衝區緩存代碼以刪除動態KVA預留。相反,所有KVA都在啟動時保留。使我們免於不必要的IPI,並允許顯著簡化緩衝區緩存代碼。
- 添加vfs.repurpose_enable(在測試中,默認情況下禁用)。通過繞過正常的VM頁面回收機制,可以啟用此功能以顯著減少執行大量文件I / O的計算機上的IPI和VM管理負載,例如來自NVMe SSD。啟用後,該功能僅在高I / O負載下觸發。它通過在適當的位置重新利用緩衝區下的VM頁面(如果可能)來工作,以便不必kremove / kenter緩衝區的KVA中的頁面。正常的VM頁面回收(否則會被I / O負載壓倒)也會被繞過。
- 更改IPIQ的處理方式,特別是為頁面失效創建一個獨立的Xinterrupt向量機制,即使關鍵部分被保持,也會忽略(將運行)。實現machdep.optimized_invltlb(默認情況下禁用,在測試中),避免將tlb失效IPI發送到空閒cpu。
- 修復在極端負荷下可能發生的無數次比賽。大多數用例永遠不會觸發這些,但我們的構建盒偶爾會觸發。例如,有兩個指令競爭,其中pmap的cpu位將被清除(對於兩個指令)並導致同一pmap上的TLB IPI同時發生在同一個pmap上,而沒有意識到cpu正在使用pmap 。解決方法是禁用LWP-> LWP(相同proc)開關盒的CR3重載優化。
- 修復HAMMER錯誤,該錯誤可能導致數據CRC錯誤報告不正確。
- 修復由HAMMER使用cluster_write()的方式觸發的雙寫。這顯著提高了HAMMER的寫入性能。
- 許多其他HAMMER清理和修復也進入了。
- 修復了getpbuf *()中可能發生的硬鎖定,原因在於錯誤解釋了原子操作的返回值。
- 修復可能在10指令窗口中發生的堆疊中斷,可能(但在野外找不到)運行內核堆棧。
- 通過不打擾使TLB無效來將pmap相關的IPI切成兩半以進行某些緩衝區高速緩存操作,並且在進入新的PTE時,即使先前的內容無效,翻頁也總是使TLB無效。這樣可以通過消除有問題的優化來提高性能並簡化調試。
- 修復了許多難以觸發的SMP比賽,特別是與同時進行大量構建可能觸發的不同安裝點相關的比賽。同時修復mountctl vs umount race。
- 減少交換路徑中的原子操作數。
- 修復了在極端負載下加上大量mount / umount活動時可能發生的namecache競爭/恐慌。
- 將%rip採樣限制為root。
- 在線程化時修復vfork()中的getpid()問題。特別是,線程程序中的並發vfork()可能會導致錯誤的PID由exec之前的子進程中的getpid()返回。
- 在tsleep()完成設置之前,當標註計時器觸發時,修復罕見的tsleep / callout競賽。
- 清理控制台上的namecache停止消息。特別是,報告正確的經過時間和所涉及的線程的td_comm。
- 進一步減少內存測試和早期啟動歸零,以改善具有大量RAM的系統的啟動時間。
- 完全刪除空閒頁面清零代碼。由於許多原因,將現有CPU上的頁面歸零是更好的,並且由於緩存效應,當與消費者訪問頁面中的數據結合時實際上可能更快。刪除PG_ZERO,因為不再需要它。通過刪除另一個可能的交叉污染源,刪除PG_ZERO也可以使內核更具可調試性。
- 重構並完成內核內存分配的CPU本地化。結合NUMA意識。這適用於cpu本地化或短期內核數據結構。這兩個在我們的PQ_L2_SIZE抽像中組合在一起,該抽象曾經是VM頁面著色代碼。此代碼現在還處理CPU本地化和NUMA感知。
- 修復了許多vkernel問題並顯著提高了vkernel性能。
- 更新kern.proc.pathname,這是程序用來查找正在運行的程序路徑的sysctl。這個sysctl最初是在我們存儲足夠的數據以返回完整,正確的路徑之前實現的。
- 從英特爾同步ACPICA(這是經常發生的事情)。
- 修復memcpy()程序集ABI。程序集沒有返回原始(dst)參數。當GCC有時決定在生成代碼時調用memcpy時,不會解決任何已知問題,但會堵塞漏洞。
- 許多人承諾清理-O2警告和錯誤。現在內核默認編譯為-O2。
- 在ACPI路徑中添加一個不正確的產量的變通方法(也就是錯誤的ACPI代碼)。
- 修復STOP / CONT比賽,該比賽可能在錯誤的時間由未決信號觸發。
- 當同一進程的多個線程同時出現故障時,線程coredump修復並修復與之相關的鎖定。
- 修復由於uiomove_nofault()中的錯誤而可能發生的CAM / VM死鎖。在繁重的分頁/交換期間,這可能會導致“無限期等待緩衝區”。
- 添加代碼以檢測和處理丟失的IPI。這主要適用於某些虛擬主機可能丟失IPI的虛擬主機。真正的CPU不會失去IPI。
- 對clock_gettime()的各種修正。
- 刪除更多MPLOCK的痕跡。所有關鍵路徑早已從此鎖定中消失,但仍有一些非關鍵位置使用它。
- 重寫低內存進程查殺代碼並修復一些可能阻止該功能正常工作的比賽。
- 使用VMM修復系統鎖定並重構VMX代碼。
- 修復numvnodes到達maxvnodes時的死鎖,這可能在重負載下發生。當'df'或文件系統同步競爭umount時,還要修復次要的內核內存洩漏。同時適度減少maxvnodes計算。例如,一台8GB內存的機器現在將maxvnodes設置為478483而不是598103.
- 修復了一個罕見的恐慌,當持有自旋鎖時,如果不正確地調用user_yield(),則可以由vm_object_page_remove()觸發,然後決定進行計劃。
- 減少一些動態分配的內核結構的大小。特別是,過大的inode哈希表分配現在更小。主要影響UFS(DragonFlyBSD使用不多)。
- 為AMD erratum 793添加解決方法。
- 修復堆疊群集_ *()I / O調用中可能發生的死鎖。
- 修復了遞歸模塊加載可能會死鎖的錯誤。
- 修復NFS sillyrename代碼(服務器端NFS)中的一個愚蠢的錯誤,這可能導致NFS服務器的sillyrename代碼永遠不會刪除愚蠢重命名的文件。多麼愚蠢!
- 更好地適應高ncpu +低內存配置。
- 重構共享自旋鎖以減少多個cpus同時獲取共享自旋鎖時可能發生的旋轉量。
- 徹底改進namecache操作以進一步減少SMP爭用。這可以在具有多個內核的系統上同時將非衝突的單組件性能提高至少25倍,並顯著降低vnode和mount結構ref和unref操作。
- 檢修眾多其他內核結構,以改善緩存局部性並減少緩存行反彈。
- 修復SMBFS文件重命名代碼中的錯誤。
- 實施RLIMIT_RSS,一個每進程RSS限制器,它將在每個進程的基礎上強制進行本地化分頁。此功能可用於防止一個進程將機器的其餘部分轉變為硬盒。
- 增加支持的最大交換空間。最大值現在主要受到ram的限制,並且將達到數十TB(如果你有足夠的ram用於支持管理結構)。同時將內核的KVM從128G增加到511G。
- 實施動態pmap刪除(默認情況下禁用)。這將指示pmap代碼在運行時從pmap中刪除中間頁表頁面和PD。如果內存非常有用,它會很有用,但請注意,如果啟用它,它將減慢執行以高速分配和釋放內存的程序的速度。
- 重構用戶'不錯'級別的工作方式,使選定的nice值比以前更重要。
- 為Matt Dillon編寫的DragonFly添加高性能原生NVME驅動程序。該驅動程序將使用MSI-X向量和設備支持的所有可用隊列,每個cpu本地化,無鎖定或最小鎖定(在大多數情況下沒有SMP衝突),並且能夠產生瘋狂的IOPS和吞吐量。
- 圖形:
- 穩定Broadwell和Skylake,將我們帶到Linux 4.6等效DRM。
- 實施Linux i2c API以簡化移植工作。
- 修復一些舊錯誤,包括鎖定順序反轉,這可能會導致視頻播放停止(以及X的其餘部分)。
- 修復內核drm線程優先級錯誤,該錯誤允許用戶進程具有比drm幫助程序線程更高的優先級。這修復了瀏覽器上報告的大多數臨時視頻停頓。
- 處理EFI幀緩衝區傳遞到DRM,改進syscons VT切換並修復相關的死鎖。當發生恐慌時,內核也會嘗試從X切換回控制台VT。
- 網絡:
- 全面改進。
- iwm - 修復了由反向邏輯引起的問題。許多其他改進可以顯著提高性能。
- wlan - 支持異步bg掃描和其他功能。
- 其他司機:
- nvme - 添加到默認內核構建,以及修復和性能改進。
- mmcsd - 為DragonFly添加了重要的eMMC支持。
- ahci - 添加了一些兼容性調整和更多怪癖,以支持損壞的芯片組,特別是端口倍增器。當芯片組支持時,也實現FBS(基於FIS的切換)。
- Trackpoint和Elantech支持補充。
- 用戶空間:
- 增強了systat以折疊屬於同一驅動程序的多個中斷,因為現在通常會列出太多中斷。
- systat -vm 1顯著增強和修改以報告更多有用信息並解壓縮字段,以便它們不會相互碰撞。並將'nvme'添加到塊設備匹配中。同時調整擴展的vmstats顯示並更改ozfod和nzfod的報告方式。
- 'vmstat 1'輸出重構。由於30年前存在的現代機器的高性能,所有的領域都相互碰撞。
- 更改mount / mountd信令,以減少mount_null和mount_tmpfs操作中不必要的mountlist掃描和命令。只有在大量並發使用mount / umount時才真正重要,但批量構建實際上會產生這種情況。
- 修復由於不以原子方式使用O_CLOEXEC而導致libc可以觸發的大量fork / exec *()洩漏。將各種O_CLOEXEC功能添加到popen()和mk * stemp *()等函數中(添加mkostemp()和mkostemps())。在線程環境中運行時修復popen()中的文件描述符洩漏。
- 通過為新子進程的lwp提供與調用vfork()的TID相同的TID,更好地在vfork()中進行pthread。這允許在vfork期間在子進程中執行pthread支持函數,而不會破壞pthread。
- 對標頭進行了大量兼容性修補,以改善dports批量構建。
- 用於安全修復的幾個OpenSSL導入。
- 重新同步OpenSSH,以便更容易使其保持最新狀態。
- 通過讓內核構建使用KCFLAGS而不是CFLAGS來分離內核C標誌。
- 完全從樹中刪除了許多舊的ISA驅動程序。由於DragonFlyBSD現在只有64位,我們可以開始刪除64位平台上不存在的舊驅動程序。
- 介紹WORLD_CFLAGS和WORLD_CCOPTLEVEL,默認為-O。這樣可以更輕鬆地編譯你的世界-O2或其他(例如WORLD_CCOPTLEVEL = 2)。但是,我們不鼓勵使用3或更高版本。有效值為0,1,2,3,s,g和'fast'。
- 調整ps的STATUS格式以使其更具可讀性,並刪除不再適用的古老標誌,只是創建混亂。
- 修復小分配的malloc()對齊方式。對於16-128字節範圍內的分配而言,最小對齊現在為16而不是8.請注意,2次冪分配始終是自然對齊的,但有些程序使用(例如)16的倍數,如'48',以及假設16字節對齊。
- Fortunes重構,補充道。
- powerd - 使用新的-H lotemp:hightemp選項添加基於溫度的管理。此功能對於冷卻效果不佳的筆記本電腦非常有用,並且BIOS會故意在過高的溫度下進行節流。 Powerd現在還可以檢測電源狀態變化(可以更改可用頻率列表),並在電源狀態發生變化時正確轉換服務。
- 大量的libthread_xu / pthreads修復和調整,以提高dports的兼容性。
- 向vkernel添加寫時復制功能。例如,允許多個vkernel使用單個磁盤映像,方法是在內部對RAM進行每次COW修改。
- / usr / src / secure rewired,從libmd,libcrypt中刪除了衝突。
- 基本系統中已升級各種工具:
- 編譯器更新為GCC 5.4.1。
- 我們現在有一個帶有LTO的黃金鍊接器。
- binutils 2.25
- 少481。
- OpenSSL / LibRESSL完全改版。 Base現在使用libressl。
- 多個時區更新。
- 錘子狀態:
- 雜項改進。沒有進入版本的一件事是使用更快的CRC算法和不同的多項式的版本。一旦測試完成,這項工作將由MFC進行 - 發布。但是,用戶不應該擔心它太多,因為發布中最嚴重的性能修復IS(對文件系統寫入的cluster_write()代碼的修復)。
- Hammer2狀態:
- 開發工作仍在繼續,但在首次發佈時還沒有任何消息。
- Clang狀態:
- 添加了一個啟動框架,用於在DragonFly中使用clang作為備用基本編譯器,以替換gcc 4.7。它尚未完成。 Clang當然可以作為一個包添加。
- 64位狀態:
- 請注意,DragonFly是一個64位操作系統,從4.6開始,不能在32位硬件上運行。
- AMD Ryzen支持即將發布,隨著新Ryzen的發展,將會引入更多工作。有一些cpu報告的拓撲問題將被修復和MFC。目前有一些穩定性問題正在等待AMD微碼更新來解決/重新測試。 Ryzen的用戶可以放心,我們會保持最佳狀態!
4.8.0版中的新功能:
- 內核:
- 重構緩衝區緩存代碼以刪除動態KVA預留。相反,所有KVA都在啟動時保留。使我們免於不必要的IPI,並允許顯著簡化緩衝區緩存代碼。
- 添加vfs.repurpose_enable(在測試中,默認情況下禁用)。通過繞過正常的VM頁面回收機制,可以啟用此功能以顯著減少執行大量文件I / O的計算機上的IPI和VM管理負載,例如來自NVMe SSD。啟用後,該功能僅在高I / O負載下觸發。它通過在適當的位置重新利用緩衝區下的VM頁面(如果可能)來工作,以便不必kremove / kenter緩衝區的KVA中的頁面。正常的VM頁面回收(否則會被I / O負載壓倒)也會被繞過。
- 更改IPIQ的處理方式,特別是為頁面失效創建一個獨立的Xinterrupt向量機制,即使關鍵部分被保持,也會忽略(將運行)。實現machdep.optimized_invltlb(默認情況下禁用,在測試中),避免將tlb失效IPI發送到空閒cpu。
- 修復在極端負荷下可能發生的無數次比賽。大多數用例永遠不會觸發這些,但我們的構建盒偶爾會觸發。例如,有兩個指令競爭,其中pmap的cpu位將被清除(對於兩個指令)並導致同一pmap上的TLB IPI同時發生在同一個pmap上,而沒有意識到cpu正在使用pmap 。解決方法是禁用LWP-> LWP(相同proc)開關盒的CR3重載優化。
- 修復HAMMER錯誤,該錯誤可能導致數據CRC錯誤報告不正確。
- 修復由HAMMER使用cluster_write()的方式觸發的雙寫。這顯著提高了HAMMER的寫入性能。
- 許多其他HAMMER清理和修復也進入了。
- 修復了getpbuf *()中可能發生的硬鎖定,原因在於錯誤解釋了原子操作的返回值。
- 修復可能在10指令窗口中發生的堆疊中斷,可能(但在野外找不到)運行內核堆棧。
- 通過不打擾使TLB無效來將pmap相關的IPI切成兩半以進行某些緩衝區高速緩存操作,並且在進入新的PTE時,即使先前的內容無效,翻頁也總是使TLB無效。這樣可以通過消除有問題的優化來提高性能並簡化調試。
- 修復了許多難以觸發的SMP比賽,特別是與同時進行大量構建可能觸發的不同安裝點相關的比賽。同時修復mountctl vs umount race。
- 減少交換路徑中的原子操作數。
- 修復了在極端負載下加上大量mount / umount活動時可能發生的namecache競爭/恐慌。
- 將%rip採樣限制為root。
- 在線程化時修復vfork()中的getpid()問題。特別是,線程程序中的並發vfork()可能會導致錯誤的PID由exec之前的子進程中的getpid()返回。
- 在tsleep()完成設置之前,當標註計時器觸發時,修復罕見的tsleep / callout競賽。
- 清理控制台上的namecache停止消息。特別是,報告正確的經過時間和所涉及的線程的td_comm。
- 進一步減少內存測試和早期啟動歸零,以改善具有大量RAM的系統的啟動時間。
- 完全刪除空閒頁面清零代碼。由於許多原因,將現有CPU上的頁面歸零是更好的,並且由於緩存效應,當與消費者訪問頁面中的數據結合時實際上可能更快。刪除PG_ZERO,因為不再需要它。通過刪除另一個可能的交叉污染源,刪除PG_ZERO也可以使內核更具可調試性。
- 重構並完成內核內存分配的CPU本地化。結合NUMA意識。這適用於cpu本地化或短期內核數據結構。這兩個在我們的PQ_L2_SIZE抽像中組合在一起,該抽象曾經是VM頁面著色代碼。此代碼現在還處理CPU本地化和NUMA感知。
- 修復了許多vkernel問題並顯著提高了vkernel性能。
- 更新kern.proc.pathname,這是程序用來查找正在運行的程序路徑的sysctl。這個sysctl最初是在我們存儲足夠的數據以返回完整,正確的路徑之前實現的。
- 從英特爾同步ACPICA(這是經常發生的事情)。
- 修復memcpy()程序集ABI。程序集沒有返回原始(dst)參數。當GCC有時決定在生成代碼時調用memcpy時,不會解決任何已知問題,但會堵塞漏洞。
- 許多人承諾清理-O2警告和錯誤。現在內核默認編譯為-O2。
- 在ACPI路徑中添加一個不正確的產量的變通方法(也就是錯誤的ACPI代碼)。
- 修復STOP / CONT比賽,該比賽可能在錯誤的時間由未決信號觸發。
- 當同一進程的多個線程同時出現故障時,線程coredump修復並修復與之相關的鎖定。
- 修復由於uiomove_nofault()中的錯誤而可能發生的CAM / VM死鎖。在繁重的分頁/交換期間,這可能會導致“無限期等待緩衝區”。
- 添加代碼以檢測和處理丟失的IPI。這主要適用於某些虛擬主機可能丟失IPI的虛擬主機。真正的CPU不會失去IPI。
- 對clock_gettime()的各種修正。
- 刪除更多MPLOCK的痕跡。所有關鍵路徑早已從此鎖定中消失,但仍有一些非關鍵位置使用它。
- 重寫低內存進程查殺代碼並修復一些可能阻止該功能正常工作的比賽。
- 使用VMM修復系統鎖定並重構VMX代碼。
- 修復numvnodes到達maxvnodes時的死鎖,這可能在重負載下發生。當'df'或文件系統同步競爭umount時,還要修復次要的內核內存洩漏。同時適度減少maxvnodes計算。例如,一台8GB內存的機器現在將maxvnodes設置為478483而不是598103.
- 修復了一個罕見的恐慌,當持有自旋鎖時,如果不正確地調用user_yield(),則可以由vm_object_page_remove()觸發,然後決定進行計劃。
- 減少一些動態分配的內核結構的大小。特別是,過大的inode哈希表分配現在更小。主要影響UFS(DragonFlyBSD使用不多)。
- 為AMD erratum 793添加解決方法。
- 修復堆疊群集_ *()I / O調用中可能發生的死鎖。
- 修復了遞歸模塊加載可能會死鎖的錯誤。
- 修復NFS sillyrename代碼(服務器端NFS)中的一個愚蠢的錯誤,這可能導致NFS服務器的sillyrename代碼永遠不會刪除愚蠢重命名的文件。多麼愚蠢!
- 更好地適應高ncpu +低內存配置。
- 重構共享自旋鎖以減少多個cpus同時獲取共享自旋鎖時可能發生的旋轉量。
- 徹底改進namecache操作以進一步減少SMP爭用。這可以在具有多個內核的系統上同時將非衝突的單組件性能提高至少25倍,並顯著降低vnode和mount結構ref和unref操作。
- 檢修眾多其他內核結構,以改善緩存局部性並減少緩存行反彈。
- 修復SMBFS文件重命名代碼中的錯誤。
- 實施RLIMIT_RSS,一個每進程RSS限制器,它將在每個進程的基礎上強制進行本地化分頁。此功能可用於防止一個進程將機器的其餘部分轉變為硬盒。
- 增加支持的最大交換空間。最大值現在主要受到ram的限制,並且將達到數十TB(如果你有足夠的ram用於支持管理結構)。同時將內核的KVM從128G增加到511G。
- 實施動態pmap刪除(默認情況下禁用)。這將指示pmap代碼在運行時從pmap中刪除中間頁表頁面和PD。如果內存非常有用,它會很有用,但請注意,如果啟用它,它將減慢執行以高速分配和釋放內存的程序的速度。
- 重構用戶'不錯'級別的工作方式,使選定的nice值比以前更重要。
- 為Matt Dillon編寫的DragonFly添加高性能原生NVME驅動程序。該驅動程序將使用MSI-X向量和設備支持的所有可用隊列,每個cpu本地化,無鎖定或最小鎖定(在大多數情況下沒有SMP衝突),並且能夠產生瘋狂的IOPS和吞吐量。
- 圖形:
- 穩定Broadwell和Skylake,將我們帶到Linux 4.6等效DRM。
- 實施Linux i2c API以簡化移植工作。
- 修復一些舊錯誤,包括鎖定順序反轉,這可能會導致視頻播放停止(以及X的其餘部分)。
- 修復內核drm線程優先級錯誤,該錯誤允許用戶進程具有比drm幫助程序線程更高的優先級。這修復了瀏覽器上報告的大多數臨時視頻停頓。
- 處理EFI幀緩衝區傳遞到DRM,改進syscons VT切換並修復相關的死鎖。當發生恐慌時,內核也會嘗試從X切換回控制台VT。
- 網絡:
- 全面改進。
- iwm - 修復了由反向邏輯引起的問題。許多其他改進可以顯著提高性能。
- wlan - 支持異步bg掃描和其他功能。
- 其他司機:
- nvme - 添加到默認內核構建,以及修復和性能改進。
- mmcsd - 為DragonFly添加了重要的eMMC支持。
- ahci - 添加了一些兼容性調整和更多怪癖,以支持損壞的芯片組,特別是端口倍增器。當芯片組支持時,也實現FBS(基於FIS的切換)。
- Trackpoint和Elantech支持補充。
- 用戶空間:
- 增強了systat以折疊屬於同一驅動程序的多個中斷,因為現在通常會列出太多中斷。
- systat -vm 1顯著增強和修改以報告更多有用信息並解壓縮字段,以便它們不會相互碰撞。並將'nvme'添加到塊設備匹配中。同時調整擴展的vmstats顯示並更改ozfod和nzfod的報告方式。
- 'vmstat 1'輸出重構。由於30年前存在的現代機器的高性能,所有的領域都相互碰撞。
- 更改mount / mountd信令,以減少mount_null和mount_tmpfs操作中不必要的mountlist掃描和命令。只有在大量並發使用mount / umount時才真正重要,但批量構建實際上會產生這種情況。
- 修復由於不以原子方式使用O_CLOEXEC而導致libc可以觸發的大量fork / exec *()洩漏。將各種O_CLOEXEC功能添加到popen()和mk * stemp *()等函數中(添加mkostemp()和mkostemps())。在線程環境中運行時修復popen()中的文件描述符洩漏。
- 通過為新子進程的lwp提供與調用vfork()的TID相同的TID,更好地在vfork()中進行pthread。這允許在vfork期間在子進程中執行pthread支持函數,而不會破壞pthread。
- 對標頭進行了大量兼容性修補,以改善dports批量構建。
- 用於安全修復的幾個OpenSSL導入。
- 重新同步OpenSSH,以便更容易使其保持最新狀態。
- 通過讓內核構建使用KCFLAGS而不是CFLAGS來分離內核C標誌。
- 完全從樹中刪除了許多舊的ISA驅動程序。由於DragonFlyBSD現在只有64位,我們可以開始刪除64位平台上不存在的舊驅動程序。
- 介紹WORLD_CFLAGS和WORLD_CCOPTLEVEL,默認為-O。這樣可以更輕鬆地編譯你的世界-O2或其他(例如WORLD_CCOPTLEVEL = 2)。但是,我們不鼓勵使用3或更高版本。有效值為0,1,2,3,s,g和'fast'。
- 調整ps的STATUS格式以使其更具可讀性,並刪除不再適用的古老標誌,只是創建混亂。
- 修復小分配的malloc()對齊方式。對於16-128字節範圍內的分配而言,最小對齊現在為16而不是8.請注意,2次冪分配始終是自然對齊的,但有些程序使用(例如)16的倍數,如'48',以及假設16字節對齊。
- Fortunes重構,補充道。
- powerd - 使用新的-H lotemp:hightemp選項添加基於溫度的管理。此功能對於冷卻效果不佳的筆記本電腦非常有用,並且BIOS會故意在過高的溫度下進行節流。 Powerd現在還可以檢測電源狀態變化(可以更改可用頻率列表),並在電源狀態發生變化時正確轉換服務。
- 大量的libthread_xu / pthreads修復和調整,以提高dports的兼容性。
- 向vkernel添加寫時復制功能。例如,允許多個vkernel使用單個磁盤映像,方法是在內部對RAM進行每次COW修改。
- / usr / src / secure rewired,從libmd,libcrypt中刪除了衝突。
- 基本系統中已升級各種工具:
- 編譯器更新為GCC 5.4.1。
- 我們現在有一個帶有LTO的黃金鍊接器。
- binutils 2.25
- 少481。
- OpenSSL / LibRESSL完全改版。 Base現在使用libressl。
- 多個時區更新。
- 錘子狀態:
- 雜項改進。沒有進入版本的一件事是使用更快的CRC算法和不同的多項式的版本。一旦測試完成,這項工作將由MFC進行 - 發布。但是,用戶不應該擔心它太多,因為發布中最嚴重的性能修復IS(對文件系統寫入的cluster_write()代碼的修復)。
- Hammer2狀態:
- 開發工作仍在繼續,但在首次發佈時還沒有任何消息。
- Clang狀態:
- 添加了一個啟動框架,用於在DragonFly中使用clang作為備用基本編譯器,以替換gcc 4.7。它尚未完成。 Clang當然可以作為一個包添加。
- 64位狀態:
- 請注意,DragonFly是一個64位操作系統,從4.6開始,不能在32位硬件上運行。
- AMD Ryzen支持即將發布,隨著新Ryzen的發展,將會引入更多工作。有一些cpu報告的拓撲問題將被修復和MFC。目前有一些穩定性問題正在等待AMD微碼更新來解決/重新測試。 Ryzen的用戶可以放心,我們會保持最佳狀態!
版本4.6.0中
什麼是新:
- mmcsd(4):修復disk_create()args中的拼寫錯誤。允許訪問> 1 SD- / MMC卡。
- 添加解壓縮(1)。如果你無法擊敗他們,請加入'em
- 恢復主世界構建版本4.4的能力
- buildworld - 允許-release在master上構建
- etc / rc.d - 無盤調整
- kernel - 向NFS添加kqueue支持(修復與nfs的firefox問題)
- 導入OpenSSL 1.0.1s。
- OpenSSL 1.0.1s的本地調整。
- 使用來自ftp://ftp.iana.org/tz/releases的tzdata2016b同步zoneinfo數據庫
- zic(8)/ zdump(8):不要警告像'-05'這樣的縮寫。
- zic(8):刪除上一次提交中悄悄進入的“註冊”。
- kernel / acpi_timer:在定時器測試後添加缺少的cpu_enable_intr()。
- em.4:提及i219支持。
- ig_hal / em / emx:添加I219(Skylake)支持
- sys / vfs / hammer:修復刪除卷標題的錯誤
- sbin / hammer:不要訪問超過16KB的HAMMER用戶空間緩衝區
- sbin / hammer:向hash show添加obfuscate選項
- sys / vfs / hammer:對volume-del 進行內核崩潰的臨時修復
版本4.4.3 / 4.6.0 RC2中的新功能:
- mmcsd(4):修復disk_create()args中的拼寫錯誤。允許訪問> 1 SD- / MMC卡。
- 添加解壓縮(1)。如果你無法擊敗他們,請加入'em
- 恢復主世界構建版本4.4的能力
- buildworld - 允許-release在master上構建
- etc / rc.d - 無盤調整
- kernel - 向NFS添加kqueue支持(修復與nfs的firefox問題)
- 導入OpenSSL 1.0.1s。
- OpenSSL 1.0.1s的本地調整。
- 使用來自ftp://ftp.iana.org/tz/releases的tzdata2016b同步zoneinfo數據庫
- zic(8)/ zdump(8):不要警告像'-05'這樣的縮寫。
- zic(8):刪除上一次提交中悄悄進入的“註冊”。
- kernel / acpi_timer:在定時器測試後添加缺少的cpu_enable_intr()。
- em.4:提及i219支持。
- ig_hal / em / emx:添加I219(Skylake)支持
- sys / vfs / hammer:修復刪除卷標題的錯誤
- sbin / hammer:不要訪問超過16KB的HAMMER用戶空間緩衝區
- sbin / hammer:向hash show添加obfuscate選項
- sys / vfs / hammer:對volume-del 進行內核崩潰的臨時修復
版本4.4.3中的
新功能:
- mmcsd(4):修復disk_create()args中的拼寫錯誤。允許訪問> 1 SD- / MMC卡。
- 添加解壓縮(1)。如果你無法擊敗他們,請加入'em
- 恢復主世界構建版本4.4的能力
- buildworld - 允許-release在master上構建
- etc / rc.d - 無盤調整
- kernel - 向NFS添加kqueue支持(修復與nfs的firefox問題)
- 導入OpenSSL 1.0.1s。
- OpenSSL 1.0.1s的本地調整。
- 使用來自ftp://ftp.iana.org/tz/releases的tzdata2016b同步zoneinfo數據庫
- zic(8)/ zdump(8):不要警告像'-05'這樣的縮寫。
- zic(8):刪除上一次提交中悄悄進入的“註冊”。
- kernel / acpi_timer:在定時器測試後添加缺少的cpu_enable_intr()。
- em.4:提及i219支持。
- ig_hal / em / emx:添加I219(Skylake)支持
- sys / vfs / hammer:修復刪除卷標題的錯誤
- sbin / hammer:不要訪問超過16KB的HAMMER用戶空間緩衝區
- sbin / hammer:向hash show添加obfuscate選項
- sys / vfs / hammer:對volume-del 進行內核崩潰的臨時修復
版本4.4.2中的新功能:
- virtio_blk:使用contigmalloc / contigfree進行vtblk_request分配。
- drm / radeon:我們需要虛擬頁面的物理地址,而不是虛擬
- if_iwm:從OpenBSD應用一些更改,if_iwm.c rev 1.39 - > 1.42
- if_iwm:只需存儲struct固件指針,就像if_iwn一樣。
- if_iwm:刪除引用Linux iwlwifi源文件名的評論。
- if_iwm:修復IEEE80211_ADDR_COPY()用法。
- if_iwm:修正費率控制設置代碼。
- etc / rc.d:更新rtsold
- i915 - 在連接後添加延遲以避免控制台/ X比賽
- kernel - 減少lwp_signotify()延遲
- devfs - 在存在規則時修復額外devfs掛載時的恐慌
- ssh - 刪除未記錄的漫遊支持CVE-2016-0777 CVE-2016-0778
- kernel - 為xhci(usb)添加怪癖
- 錘子 - 刪除調試kprintf
- libc / stdtime:修復兩種情況,其中NULL指針可以是空閒的()'d。
- kernel / vga:刪除錯誤的lwkt_reltoken()。目前尚未採取此措施。
- libc / nls:使用。 同步str {error,signal}()消息
- w(1):inet_addr()失敗時返回INADDR_NONE。
- ee(1):修復未初始化的變量。
- kernel:修復kern.dumpdev sysctl。
- 導入OpenSSL 1.0.1r。
- OpenSSL 1.0.1r的本地調整。
- gcc50 / libconv_supc:cp-demangle.c需要HAVE_CONFIG_H。
- 使用來自ftp://ftp.iana.org/tz/releases的tzdata2016a同步zoneinfo數據庫
- 進行升級:添加過時的時區。
- igb:修復DMACR設置
- ifconfig:修復inet6地址刪除
版本4.4.1中的
新功能:
- 內核:
- 改進的CPU省電設置
- 減少文件分配/免費爭用
- 減少kqueue爭用
- 實施lwp_setname(2)系統調用
- 修復了dsp(4)非阻塞操作支持
- 添加aperf(4)驅動程序以顯示有效的CPU頻率
- 對HAMMER進行了大量清理和修復
- 將ACPICA同步至20151124
- 主要完成刪除i386(32位)位
- 調整啟動加載程序堆以處理更大的MD映像
- 清除傳遞死內核代碼(syslink仍然存在等)
- 已刪除dsched(錯誤問題,但無法與SSD配合使用)
- 重新編碼低內存和內存不足的尋呼機算法
- 圖形:
- drm / i915和drm / radeon驅動程序現在匹配Linux內核3.18
- i915支持ValleyView / Baytrail和Cherryview Atom SOC
- Broadwell GPU現已全面加速
- Skylake支持的準備工作
- 系統控制台現在默認支持drm圖形;一旦Xorg啟動並加載了一個kms內核模塊,虛擬終端就不再只顯示黑屏了。
- 改進了電源管理。 i915硬件上提供面板自刷新
- Radeon硬件現在支持溫度傳感器
- 網絡:
- re(4) 中的Realtek 8168H支持
- iwm(4)添加了驅動程序
- rtadvd已更新,rtadvctl已添加
- 異步UDP連接,用於處理更大的負載
- 新的更大的TCP啟動窗口,用於高延遲連接
- 內核nmbcluster值可實時調整,適用於極端流量網絡:
- 穩定UNIX域套接字
- 用於通過unix域套接字傳遞fd的新GC代碼
- 使用FreeBSD進行其他IPv6同步
- 改進了TCP和UDP的套接字(2)性能
- 改進的TCP連接(2)本地端口選擇
- 添加了accept(4)系統調用
- 添加了對SOCK_CLOEXEC和SOCK_NONBLOCK socket(2)和accept4(2)標誌的支持
- 使ifconfig 可以使用HW流控制功能
- 添加可調參數以允許設置NFSROOT iosize和readahead
- 從FreeBSD引入擴展ipfw(在DFly中稱為ipfw3)
- 其他司機:
- MIDI支持已經讀過
- 設備映射器的許多錯誤修正
- dm-delay和dm-flakey已添加到設備映射器
- USB調製解調器工作得更好(或者至少不要使內核感到恐慌)
- 改進了對ram ECC功能和狀態的訪問
- wlan從FreeBSD更新(到分割設備刪除之前)
- 用戶空間:
- 正則表達式庫已經被多字節和通常功能更強的TRE正則表達式庫所取代。它在功能上與OSX相匹配。 (DF是MacOS之後第一個轉向TRE的BSD)
- libm已替換為OpenBSD版本(這是一項正在進行的協作工作)
- libc現在具有符號版本控制功能,可以使4.4版本上創建的二進製文件在DragonFly上執行多年。
- 完成對區域設置的檢修和更新,包括實施整理。
- malloc.h已刪除(DragonFly是第一個刪除此標頭的BSD)
- gcc50 libstdc ++已修改為能夠在clang上完全使用C99函數
- 作為區域設置更新的結果,當使用命名區域設置時,ls(1)長格式和-T格式的輸出已更改。值得注意的是,長格式月份總是用英語縮寫(使用POSIX定義,因此保證快速和三個字母寬),並始終顯示年,小時和秒信息。在C / POSIX語言環境下,除了未來的時間戳處理被修正以匹配POSIX標準要求之外,ls(1)輸出沒有變化。
- 如果使用來自base的WPA Supplicant,則在啟動過程中會有10秒的延遲,因為會顯示一條消息,強烈建議使用DPorts版本(security / wpa_supplicant)。
- 強化動力(8)
- 改進了LWP和內核線程的top(1)和ps(1)輸出
- 修正了對pthread_set_name_np(3) 的支持
- 移植tcpdrop(8)
- 增加了許多新的語言環境,包括六個阿拉伯語區域(阿聯酋,沙特阿拉伯,埃及,約旦,摩洛哥,卡塔爾),其他西班牙語區域(墨西哥,阿根廷,哥斯達黎加),其他英語語言環境(菲律賓,新加坡,香港) ,更正的挪威語地區(僅限nb和nn),擴展的瑞典語(芬蘭語),薩米語(芬蘭語,挪威語),塞爾維亞語現在以西里爾語和拉丁語形式呈現。 ('locale -a'提供了完整列表。)
- rtadvc從FreeBSD導入
- 基本系統中已升級各種工具:
- nvi2已更新至2.1.3版
- libexecinfo添加(從FreeBSD同步)
- iconv與FreeBSD同步
- openssl已更新至1.0.1q
- xz已更新至5.2.2
- libedit已更新至2015-03-25版
- binutils已更新至2.25.1
- grep更新為2.22
- tcsh更新至6.19.00
- libdialog已更新至v1.2-20150920
- (tn)ftp更新至'2015年10月10日'
- gcc更新為5.2
- acpica已更新至20150717
- sort(1),來自NetBSD,被FreeBSD版本取代
- localedef(1),內容工具,起源於Illumos
- cldr2def,內部工具,起源於廢棄的FreeBSD項目,但擴展為DF
- 從基本系統中刪除:
- hostapd(最新版本可通過dports:net / hostapd獲得)
- mklocale(由localedef取代)
- colldef(由localedef取代)
- HAMMER的改進:
- 感謝Tomohiro Kusumi ,對Hammer1進行了許多清理和修復
- 其他改進:
- DPort計數在22,800個端口上空盤旋。由於通過GitHub的Pull Request機制提供的貢獻,許多以前破壞的端口已由常規用戶修復。 (謝謝!)
- 在x11-themes / dragonfly-wallpapers(pkg install dragonfly-wallpapers)上可以找到六套“官方”的DragonFly壁紙。這些是為KDE用戶自動安裝和預選的,並為XFCE4用戶自動安裝,但仍然可以使用該桌面手動選擇壁紙(至少目前為止)。它們安裝在共享/壁紙上,符號鏈接到share / backgrounds / dragonfly。
評論沒有發現