linux启动nfs失败,【已解决】安装NFS服务器nfs-kernel-server后启动失败:Not starting NFS kernel daemon: no exports...

本文解决了在Ubuntu中启动NFS服务时遇到的Not starting NFS kernel daemon: no exports错误。通过检查并编辑配置文件/etc/exports,添加要共享的文件夹路径,最终成功启用了NFS服务。

【背景】

折腾:

期间,在安装了NFS服务器nfs-kernel-server之后,启动nfs的服务,结果失败了:Creating config file /etc/exports with new version

Creating config file /etc/default/nfs-kernel-server with new version

* Not starting NFS kernel daemon: no exports.

Processing triggers for libc-bin (2.19-0ubuntu6.6) ...

Processing triggers for ureadahead (0.100.0-16) ...

root@iZ23lqgttauZ:~#

【解决过程】

1.搜:

Ubuntu Not starting NFS kernel daemon: no exports

参考:

感觉是:

好像缺少的所谓的exports,是需要我们后续自己手动创建的。

所以此处的警告,暂时就可以忽略了。

2.后来验证此处已经存在了nfs的配置文件:

/etc/exports

但是实际上是空的,没有添加任何配置内容。

所以可能才报错,说没有配置的。

【总结】

此处启动nfs服务失败:

Not starting NFS kernel daemon: no exports

不是因为不存在对应的配置文件:/etc/exports

估计是由于没有添加对应的要导出的配置,即没有共享出任何要共享的文件夹,所以才报错的。

解决办法:

编辑该配置文件vi /etc/exports

然后加上要导出的文件夹的配置信息,比如:/home/share/image *(rw,sync,no_subtree_check)

然后之后再去执行exportfs –a

即可消除此警告了。

<think>我们正在解决在执行 `sudo service nfs-kernel-server restart` 时出现的错误: `Not starting NFS kernel daemon: no support in current kernel` 根据引用[2]中的信息,这个错误通常是因为当前内核不支持NFS内核服务器。在引用[2]中,提供了一个解决方案:编辑 `/etc/init.d/nfs-kernel-server` 文件,注释掉检查内核支持的部分。 ### 解决步骤 1. **编辑启动脚本** 使用文本编辑器(如`vi`或`gedit`)打开 `/etc/init.d/nfs-kernel-server` 文件: ```bash sudo vi /etc/init.d/nfs-kernel-server ``` 2. **注释掉内核检查代码** 在文件中找到以下代码段(通常在脚本的靠前部分): ```bash # See if our running kernel supports the NFS kernel server if [ -f /proc/kallsyms ] && ! grep -qE 'init_nf(sd|)' /proc/kallsyms; then log_warning_msg "Not starting $DESC: no support in current kernel." exit 0 fi ``` 将这段代码注释掉(在每行前面添加`#`),使其变成: ```bash # See if our running kernel supports the NFS kernel server #if [ -f /proc/kallsyms ] && ! grep -qE 'init_nf(sd|)' /proc/kallsyms; then # log_warning_msg "Not starting $DESC: no support in current kernel." # exit 0 #fi ``` 3. **保存并退出编辑器** 在`vi`编辑器中,按`Esc`键,然后输入`:wq`保存并退出。 如果使用`gedit`,直接保存并关闭窗口。 4. **重启NFS服务** 重新启动NFS服务: ```bash sudo service nfs-kernel-server restart ``` ### 注意事项 - **内核支持问题**:这个方法绕过了内核检查,强制启动NFS服务。但请注意,如果内核真的不支持NFS,可能会导致服务运行不稳定或其他问题。因此,建议在确认内核确实支持NFS的情况下使用此方法(例如,之前支持但升级后出现问题)。 - **内核模块加载**:另一种可能是内核模块没有加载。可以尝试手动加载NFS内核模块: ```bash sudo modprobe nfs sudo modprobe nfsd ``` 然后再次尝试启动服务。 ### 根本原因 该错误是因为启动脚本检查 `/proc/kallsyms` 内核符号文件,发现其中没有包含NFS内核服务器所需的符号(如`init_nfsd`或`init_nfs`)。这通常发生在内核编译时未包含NFS服务器支持,或者内核模块未正确加载的情况下[^2]。 ### 替代方法:重新编译内核(高级) 如果上述方法无效,或者需要完整的NFS支持,可以考虑重新编译内核并启用NFS服务器支持: 1. 安装内核源码:`sudo apt-get install linux-source` 2. 配置内核:在`make menuconfig`中确保以下选项启用: ``` File systems -> Network File Systems -> NFS server support ``` 3. 编译并安装新内核。 ### 相关问题 §§相关问题§§ 1. 如何检查当前内核是否支持NFS服务器? 2. 如何手动加载NFS内核模块? 3. 如何在Ubuntu上重新编译内核以支持NFS? [^2]: 引用[2]中提供了绕过内核检查的方法 </think>### 解决 `Not starting NFS kernel daemon: no support in current kernel` 错误 此错误表明当前 Linux 内核缺乏 NFS 服务器所需的支持模块。以下是逐步解决方案: --- ### 🔧 解决方法 1. **检查内核支持(关键步骤)** 查看当前内核是否包含 NFS 服务器模块: ```bash grep -E 'init_nf(sd|)' /proc/kallsyms ``` - **无输出结果**:表示内核缺少 NFS 支持 ✅ - **有输出**:表示内核支持但未加载模块(跳到步骤4) 2. **编辑服务脚本绕过检查(临时方案)** 修改启动脚本注释掉内核检查(引用[2]): ```bash sudo vi /etc/init.d/nfs-kernel-server ``` 找到以下代码段并在每行前添加 `#` 注释: ```bash #if [ -f /proc/kallsyms ] && ! grep -qE 'init_nf(sd|)' /proc/kallsyms; then # log_warning_msg "Not starting $DESC: no support in current kernel." # exit 0 #fi ``` 保存后重启服务: ```bash sudo service nfs-kernel-server restart ``` 3. **安装内核头文件并编译模块** 若注释无效,需手动构建内核模块: ```bash # 安装内核头文件和编译工具 sudo apt install linux-headers-$(uname -r) build-essential # 定位NFS源码并编译 cd /usr/src/linux-headers-$(uname -r) sudo make M=fs/nfsd ``` 4. **加载 NFS 内核模块** 手动加载必需模块: ```bash sudo modprobe nfs sudo modprobe nfsd sudo modprobe rpcsec_gss_krb5 # 可选:支持Kerberos认证 ``` 5. **验证服务状态** 检查模块加载情况: ```bash lsmod | grep nfs # 应显示 nfs/nfsd 模块 sudo systemctl status nfs-kernel-server ``` --- ### ️ 注意事项 - **内核适配问题**: 此错误常见于: - 自定义编译的内核缺失 NFS 选项 - 内核版本与 `nfs-kernel-server` 软件包不兼容 - 虚拟机环境(如 Docker)缺少内核模块支持 - **替代方案**: 若无法解决,考虑: ```bash # 使用用户空间NFS替代方案 sudo apt install unfs3 sudo service unfs3 start ``` --- ### 📚 根本原因分析 错误源于启动脚本的**内核兼容性检查**(引用[2]): ```bash if [ -f /proc/kallsyms ] && ! grep -qE 'init_nf(sd|)' /proc/kallsyms; then log_warning_msg "Not starting $DESC: no support in current kernel." exit 0 fi ``` 当 `/proc/kallsyms` 文件中不存在 `init_nfsd` 或 `init_nfs` 符号时,判定为内核不支持 NFS 服务[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值