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。
评论没有发现