飞牛系统FNOS添加NTFS3模块并挂载NTFS分区
本文步骤已经验证,为初版整理,如有遗漏细节,可以和我沟通。
由于飞牛(FNOS)内核使用的是精简版内核,内核中没有NTFS3驱动,导致无法加载NTFS分区。 但是我的文件都是存储于NTFS硬盘分区的,挂载NTFS分区功能还是很有必要的。FNOS社区也有不少反馈的声音,但是官方貌似还没有计划将挂载NTFS分区功能开发例如路线图。
由于迫切的想挂载NTFS,所以自己尝试解决了。下面分享自行编译NTFS3模块并在FNOS使用的过程。
1. 安装必要的依赖
sudo apt update
sudo apt install build-essential linux-headers-$(uname -r)
2. 下载 Linux 内核源码
由于 ntfs3
是 Linux 内核中的 fs/ntfs3
目录下的模块,我们需要获取与 6.6.38-trim
版本匹配的源码。
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.38.tar.xz
tar -xf linux-6.6.38.tar.xz
cd linux-6.6.38
3. 配置内核源码
复制系统的当前内核配置文件,以匹配 6.6.38-trim
内核的配置:
cp /boot/config-$(uname -r) .config
make oldconfig
然后启用 NTFS3
模块:
make menuconfig
进入 File systems -> DOS/FAT/NT Filesystems
,确保 NTFS3
选项 (CONFIG_NTFS3_FS
) 被选为 m
(模块)。
File systems --->
DOS/FAT/NT Filesystems --->
<M> NTFS read/write support
然后执行:
make olddefconfig
4. 仅编译 NTFS3 模块
不需要编译整个内核,只编译 ntfs3
模块:
make M=fs/ntfs3 modules
编译完成后,fs/ntfs3/
目录下应该会生成 ntfs3.ko
模块文件。
**** 需要注意的是,由于FNOS的内核是精简内核,编译会遇到无法找到链接符号的问题,这时候可以通过编译所有内核模块解决,编译整个内核时间会比较长,需要耐心等待。**
内核完成编译
make modules_prepare
make modules -j$(nproc)
同样在编译完成后可以在 fs/ntfs3/
目录下应该会生成 ntfs3.ko
模块文件。
5. 安装 NTFS3 模块
将编译好的模块拷贝到 /lib/modules/6.6.38-trim/kernel/fs/ntfs3/
并更新 depmod
:
sudo cp fs/ntfs3/ntfs3.ko /lib/modules/6.6.38-trim/kernel/fs/ntfs3/
sudo depmod -a
然后尝试手动加载:
sudo modprobe ntfs3
如果没有报错,检查模块是否成功加载:
lsmod | grep ntfs3
为了保持系统干净,也可以复制ntfs3.ko到FNOS系统。
系统路径为 /lib/modules/6.6.38-trim/kernel/fs/ntfs3/ ,注意权限问题,权限应为 644
6. 挂载 NTFS 分区
假设你的 NTFS 分区在 /dev/sdXn
(比如 /dev/sdb1
),可以测试挂载:
sudo mount -t ntfs3 /dev/sdb1 /mnt
如果挂载成功,可以将其加入 /etc/fstab
,使其在系统启动时自动挂载:
echo "/dev/sdb1 /mnt ntfs3 defaults 0 0" | sudo tee -a /etc/fstab
7. 解决模块丢失问题
如果内核更新后 ntfs3.ko
丢失,你可能需要重新编译并安装它。可以创建一个 dkms
模块,或者将 ntfs3.ko
复制到 /lib/modules/6.6.38-trim/extra/
,然后执行:
sudo depmod -a
这样即使系统更新,ntfs3
仍然可用。
评论