Linux系统中的NFS挂载网络文件系统

对于嵌入式Linux开发,通过NFS挂载根文件系统,根文件系统无需下载到FLASH( FLASH还需要先擦除再写入),可以直接保存在Linux主机,而且在Linux开发的驱动程序也无需下载到Linux开发板的FLASH,这使得开发十分方便快捷,下面记录一下我在学习过程中的过程。

准备好可启动的文件系统

首先将准备好的文件系统解压拷贝到你服务器主机上nfs共享出去的文件夹下面,以便后面进行nfs挂载

Linux内核的配置与编译

准备好Linux内核,我这里用的是arm平台的Linux2.6.29内核

解压后进入Linux2.6.29清理内核中间文件,配置文件

#cd Linux2.6.29
#make distclean

选择参考配置文件,然后修改配置文件CMDLINE,我这里选择config-mini2440作为配置文件

#vim config-mini2440

CMDLINE:       命令行启动参数定义了内核挂载根文件系统的方式

root=/dev/nfs      表示内核采用nfs方式起根文件系统

nfsroot=192.168.1.107:     服务器的IP地址,后面是nfs启动的根文件系统位于nfs服务器下面nfs共享出去的目录

ip=192.168.1.148               开发板的IP地址 ,要求与服务器IP地址同一网段

console=ttySAC0  mem=64M        ttySAC0作为控制台,内存为64M

修改好后拷贝config-mini2440 到 .config

#cp config-mini2440 .config

配置内核

配置命令:

#make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-

要使内核支持nfs起根文件系统,内核必须选上配置选项:

File systems-->Network File Systems-->

<*> NFS client support

[*] NFS client support for NFS version 3

[*] Root file system on NFS

选上后保存配置,退出

编译内核

编译命令:

#make uImage ARCH=arm CROSS_COMPILE=arm-linux-

便已完成后生成的内核映像uImage位于arch/arm/boot/ 目录下

如果在编译过程中出现如下情况:

提示mkimage命令没有出现,在u-boot中的mkimage用来产生u-boot格式映像文件的,所以可以把u-boot编译之后的源代码中把mkimage拷贝到/bin文件目录下,再次编译

编译后将uImage文件拷贝到tftp服务目录/tftpboot

#cp arch/arm/boot/uImage /tftpboot

开发板配置

接下来就是开发板这边的操作,打开超级终端,启动开发板,在超级终端中进入U-Boot:

  • 设置IP地址:

setenv ipaddr 192.168.1.148    // 开发板IP
setenv serverip 192.168.1.107   //服务器 IP
setenv gatewayip 192.168.1.254    // 网关
saveenv

  • 修改引导参数:

setenv bootargs console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.107:/home/student/share/rootfs ip=192.168.1.148:192.168.1.107:192.168.1.254:255.255.255.0:sbc2440.arm9.net:eth0:off

nfsroot=服务器ip:/共享文件夹    ip=开发板ip:linux服务器ip:网关ip:子网掩码:主机名:网卡:off

root        表示使用/dev/nfs这个设备作为根文件系统。

rw        表示可读可写的。

nfsroot        表示服务器中rootfs所在路径,注意需要跟上服务器的ip地址。

192.168.1.148    是板子启动之后的ip地址。

192.168.1.107    是nfs服务器的ip地址。

192.168.1.254    是板子网关地址。

255.255.255.0    是板子子网掩码。

eth0        表示板子上的网络设备。

off        表示关闭动态获取ip地址

saveenv        保存配置

printenv        查看配置信息

  • 通过tftp下载内核

#tftp 0x31000000 uImage    //把服务器中的tftpboot目录下的uImage通过TFTP读入到开发板的内存地址0x31000000处

#bootm 0x31000000          //启动内核

通过上面的步骤基本上就完成了nfs挂载网络文件系统,启动过程中如果没有成功

  • 可查看nfs服务配置是否正确,检查/etc/exports

#vim /etc/exports

然后重启nfs服务

#/etc/init.d/nfs restart

  • VFS: Cannot open root device “nfs” or unknown-block(2,0)

报这个错误,网上很多说是NFS服务器配置有问题,但实际上我试验的时候还是因为uboot参数配置没有写好。

参考博客:

Linux学习之路——NFS挂载根文件系统

从NFS启动Linux并挂载根文件系统可能出现的错误

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值