最新版本Ubuntu使用NFS挂载根文件系统到开发板失败解决方法

学习嵌入式Linux过程中的记录

目的:使用NFS挂载上位机上的根文件系统到arm开发板上,方便下载调试,避免重复使用uboot下载整个根文件系统

方法:ubuntu下载nfs软件,配置共享文件的目录,修改NFS配置文件(主要用于在版本不匹配时修改);查看并配置内核(主要选中支持NFS用于root挂载),开发板上修改uboot的bootargs使传递给内核用于NFS挂载的根文件的参数

        1.Ubuntu上下载NFS软件

sudo apt install nfs-kernel-server

        2.添加要共享目录的路径

sudo vim /etc/exports

                例如在里面加上:

/opt/rootfs *(rw,sync,no_root_squash)

        3.配置内核支持NFS启动root,内核配置菜单需要选中的项目如下:

1、配置网络部分,主要是使能CONFIG_IP_PNP以在2中能够看到Root file system on NFS选项
	Networking support 
		Networking options 
			TCP/IP networking
					IP: kernel level autoconfiguration
						[*] IP: DHCP support
						[*]IP: BOOTP support
2、配置开启nfs服务
	File systems  --->	
		Network File Systems  --->
			<*> NFS client support 
			[*] NFS client support for NFS version 3                                  
			[*] NFS client support for the NFSv3 ACL protocol extension 
			[*] NFS client support for NFS version 4 (EXPERIMENTAL) 
			[*] NFS client support for NFSv4.1 (DEVELOPER ONLY) 
			[*] Root file system on NFS  

        4.修改bootargs参数(没有指定要使用的NFS版本)

seteenv bootargs root=/dev/nfs nfsroot=192.168.1.8:/opt/rootfs ip=192.168.1.110:192.168.1.8:192.168.1.1:255.255.255.0::eht0:off init=/linuxrc console=ttySAC0,115200 
saveenv

        然后就是一直启动不了,也在网上找了很多方法,都差不多,但是很多细节方面对于我这样的初学者来说需要注意到,很多地方出错了不懂原理只能挨个挨个试,特别是bootargs太长了容易写错,估计也有minicom用的不太好的原因。。。后面是具体的解决方法。


问题:挂载失败,报如下错误(可在内核reboot前一刻,在打印信息中找到相关信息)

VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "nfs" or unknown-block(2,0): error -6

        原因:ubuntu的NFS版本太高,与内核支持的版本不匹配

        解决方法:

           Ubuntu上位机:

                先修改NFS配置文件

sudo vim /etc/default/nfs-kernel-server

                修改为:

                保存后重启NFS:

sudo /etc/init.d/nfs-kernel-server restart

           Arm开发板上:

                在bootargs中添加上proto=tcp,nfsvers=3指定内核用的nfs是v3版本:

seteenv bootargs root=/dev/nfs nfsroot=192.168.1.8:/opt/rootfs,proto=tcp,nfsvers=3 ip=192.168.1.110:192.168.1.8:192.168.1.1:255.255.255.0::eht0:off init=/linuxrc console=ttySAC0,115200 
saveenv

                (注意:nfsroot后面接的proto、nfsvers参数要一定用","逗号连接,不能用空格,我就被坑了,找了好久的才发现)

参考:用NFS挂载根文件系统详解(带nfs版本不兼容问题的解决方法)

           VFS: Cannot open root device 解决思路

           Linux学习 - 从ubuntu的NFS共享目录加载根文件系统

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在开发使用 NFS 挂载,需要进行以下步骤: 1. 在开发上安装 NFS 客户端软件。 2. 在开发上创建一个本地目录,用于挂载远程 NFS 服务器的共享目录。 3. 在 NFS 服务器上设置共享目录,并配置允许开发的 IP 地址访问该目录。 4. 在开发使用 mount 命令,将远程共享目录挂载到本地目录。 具体的步骤如下: 1. 安装 NFS 客户端软件。 在 Ubuntu 系统上,可以使用以下命令安装 NFS 客户端软件: ``` sudo apt-get update sudo apt-get install nfs-common ``` 2. 创建本地目录。 可以使用 mkdir 命令创建一个本地目录,用于挂载远程共享目录。例如: ``` sudo mkdir /mnt/nfs ``` 3. 设置共享目录。 在 NFS 服务器上,需要设置共享目录,并允许开发的 IP 地址访问该目录。 假设 NFS 服务器的 IP 地址为 192.168.1.100,共享目录为 /nfs_share,可以在 NFS 服务器上使用以下命令设置共享目录: ``` sudo vi /etc/exports ``` 在文件末尾添加以下内容: ``` /nfs_share 192.168.1.0/24(rw,sync,no_subtree_check) ``` 其中,rw 表示允许读写访问,sync 表示同步写入,no_subtree_check 表示禁用子树检查。 4. 挂载远程共享目录。 在开发上,使用 mount 命令将远程共享目录挂载到本地目录。例如: ``` sudo mount 192.168.1.100:/nfs_share /mnt/nfs ``` 其中,192.168.1.100 是 NFS 服务器的 IP 地址,/nfs_share 是共享目录的路径,/mnt/nfs 是本地目录的路径。 完成以上步骤后,就可以在开发上访问远程共享目录了。可以使用 ls 命令查看挂载的目录内容,使用 umount 命令卸载挂载的目录。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值