2026-02-04早在去年十月,NTFS Plus 作为一款基于早期 NTFS 内核驱动(早于 Paragon Software 贡献 NTFS3 驱动代码)的全新 Linux NTFS 驱动程序被公布。这款新驱动的目标是实现更优性能、更多功能、配套的公共用户空间工具,并为依赖这一微软文件系统的用户带来全方位的显著提升。本周,这款重制版 NTFS 驱动迎来了第六次迭代。
这款重制版 NTFS 驱动持续集成更多功能,截至昨日已进行至第六轮修订,包含多项修复、代码改进及额外功能增强。Namjae Jeon 一直主导着这款更简洁、性能更优的开源 NTFS 驱动开发工作。该驱动支持 IOmap、无需缓冲头、提供 fsck/mkfs 等公共工具、支持 idmapped 挂载处理等特性,同时性能表现更佳,有望最终成为 Linux 内核主线中事实标准的 NTFS 驱动。
NTFS v6 驱动的变更内容如下:
v6:
- 更新 ntfs.rst 文档(根据评审反馈移除了历史对比和时效性表述)
- 移除过时的 Linux-NTFS 项目引用
- 为函数补充缺失的返回值注释
- 将结构体中的注释移至上方
- 用 filemap_write_and_wait_range 替换 wait_for_stable_page
- 直接解引用 ntfs_inode 字段而非使用类型转换
- 移除 malloc.h 文件,改用 kvmalloc 及相关函数
- 更新 Kconfig 中 NTFS_FS_POSIX_ACL 的帮助文本
- 移除 __always_unused 指令
- 在调试代码中将 #ifndef 改为 #ifdef
- 重构 ntfs_collate_ntofs_ulongs 函数
- 修改索引键长度类型
- 移除 ntfs_collate 中的冗余调试日志
- 修复稀疏警告
- 将初始化移至声明行
- 避免从指针到 void 的类型转换
- 重构 ntfs_collate 函数
- 使用 iomap 重新实现 llseek
- 配置禁用时阻止 acl 挂载选项
- 修复内核文档警告
- 更新魔法常量的注释
- 使用 sizeof(unsigned char) 替代 UCHAR_T_SIZE_BITS
- 用内联辅助函数替换宏
- 添加/使用通用 FS_IOC_SHUTDOWN 定义
- 移除 flush_dcache_folio
- 为 $MFT 引入地址空间操作
- 为 ntfs_bio_end_io 添加注释
- 新增 ntfs_get_locked_folio 辅助函数
- 移除过时的 ntfs_setattr 注释
- 删除不必要的内核文档注释
- 修复 setattr 中压缩/加密文件缺失的错误处理
- 将 ATTR_SIZE 处理逻辑重构至 ntfs_setattr_size()
- 依赖 iomap 处理直接 I/O 对齐状态
- 在 getattr 中报告高级文件属性和 DIO 对齐信息
- 将 ntfs_attr_expand 和 ntfs_extend_initialized_size 移至 ntfs iomap
- 从 ntfs_write_iter() 中分离出 ntfs_dio_write_iter
- 移除 ntfs_filemap_page_mkwrite 中不必要的 IS_IMMUTABLE 检查
- 移除 ntfs_fallocate 中的常规文件检查
- 将 COMPRESS_CONTEXT 改为小写
- 为哈希乘数添加注释
- 修复 inode 释放时可能出现的死锁问题
- 修复启用 acl 时 generic/321 测试失败问题
- 在 ntfs_bdev_read 中使用 bdev_rw_virt
- 从 ntfs_writepages 中移除 mft_writepage
- 让 ntfs_mft_writepages 调用 ntfs_write_mft_block 而非 ntfs_mft_writepage
- 将 ntfs_write_mft_block 移至 mft.c
- 将 ntfs_bdev_read/write 移至 bdev-io.c
- 将 ntfs_mft_writepages 移至 mft.c
我们仍需观察其最终提交至内核主线的时间。对当前版本 NTFS 重制驱动感兴趣的用户可从 Linux 内核邮件列表获取相关补丁。
为迎接下月GNOME 50版本的发布,今日Mutter合成器代码合并了若干改进,为屏幕录制API和DevKit新增了HiDPI与显示器模式模拟支持。
GNOME 50版本将带来大量新功能。最新合并至Mutter的代码是由Jonas Ådahl历时三个月开发的合并请求,旨在通过HiDPI和显示器模式模拟功能增强GNOME虚拟显示器与远程桌面能力。

Ådahl在已合并的请求中说明:
"本次合并请求实现了若干相互关联的功能,旨在重构虚拟显示器的尺寸调整机制:
- 虚拟显示器在流传输时使用的缩放比例将通过名为org.gnome.scale的PipeWire标签传递,使Devkit能够对显示器流控件应用相应缩放。
- 远程桌面API新增了向org.gnome.Mutter.ScreenCast.RecordVirtual()传递预定义虚拟显示器模式集合的功能,支持创建仅能通过切换显示器模式调整尺寸的不可缩放流(通过PipeWire协商实现)。
- 虚拟CRTC现可选择性指定首选缩放比例,用于确定其所处逻辑显示器的缩放比例。
- 新增由Devkit设置的org.gnome.preferred-scale标签,该标签将作为'首选缩放比例'转发至虚拟CRTC。
最终实现的效果是:Devkit(理论上也适用于远程桌面服务器)现能以HiDPI显示内容,使其与展示嵌套合成器内容的GTK窗口缩放比例相匹配,同时支持通过主窗口菜单的切换开关模拟显示器模式选择。"
在Ubuntu 26.04 LTS和Fedora Workstation 44版本发布前,这项改进将为使用GNOME虚拟显示器/远程桌面功能的用户带来显著体验提升。
尽管FreeBSD上存在Linuxulator这一内核级解决方案,可用于运行未经修改的Linux二进制文件(甚至能在FreeBSD上支持游戏运行),但在Linux上运行BSD应用程序的讨论却相对较少。不过开发者发现,对于希望在Linux环境中运行BSD应用的用户而言,轻量级容器运行时urunc能够相当出色地实现在Linux上高效处理BSD应用程序。
针对那些仅适配BSD系统而非Linux环境的软件,或某些在BSD环境下可能表现更优的网络工作负载等场景,开发者已证实urunc容器运行时能够很好地支持BSD环境在Linux主机上高效运行。

上周末在FOSDEM 2026大会上,Charalampos Mainas与Anastassios Nanos展示了他们通过urunc容器在Linux上运行BSD应用的研究成果。除urunc运行时本身外,该方案的另一关键组件是Bunny——这款工具使得构建Unikernel像构建容器一样简便。


他们发现这种基于urunc的方案相比采用QEMU的Kata Containers等方案具有更短的启动时间,同时还能获得更高性能。该解决方案同样兼容Kubernetes等编排系统。

团队还计划进一步精简内核与根文件系统,探索与FreeBSD OCI镜像集成、使用ZFS构建含BSD根文件系统的Docker镜像,以及其他潜在发展方向。

欲深入了解通过urunc在Linux环境中运行BSD应用的完整技术路径,可通过FOSDEM.org上的演示资料获取更多信息。