0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式Linux开发-根文件系统NFS网络挂载

DS小龙哥-嵌入式技术 来源:DS小龙哥-嵌入式技术 作者:DS小龙哥-嵌入式技 2022-08-14 08:57 次阅读

1. 前言

根文件系统是Linux内核启动之后挂载的第一个文件系统,上篇文章里已经介绍过,如何使用busybox来制作根文件系统。这篇文章介绍根文件系统制作成功后,如何让内核找到文件系统,并完成挂载,进入到系统命令行终端。

根文件系统支持从网络挂载和本地挂载两种方式:

(1)如果是采用网络挂载就将路径设置为/dev/nfs,NFS是Linux下常用的网络文件系统,这种方式挂载一般是在系统开发阶段,方便修改调试代码,也就是将根文件系统放在PC机上,嵌入式开发板通过网络到PC机进行访问。

(2)本地挂载就是让内核从SD卡、EMMC、光盘等设备里加载根文件系统,设备路径设置为/dev/sda、/dev/ram等等。具体设备节点名称是什么就填什么。本地挂载一般用在产品发布的时候,当整个系统开发完毕,就将PC机上的完整目录拷贝到本地存储设备里,让内核直接从本地加载,这样开启启动的速度会快很多,文件读写也快很多,不在经过网络传输。本地挂载不方便调试代码,一般开发阶段还是NFS方式比较方便。

上面说的路径设置这些配置是在uboot里设置,uboot有一个环境变量专门用于给内核传参,当内核启动之后,会根据uboot传递的参数完成执行。

当前采用的开发板是友善之臂的Tiny4412,内核、uboot、交叉编译器都采用官方光盘自带的文件。

如果设置内核为NFS网络挂载,uboot的环境变量设置格式如下:

TINY4412 # setenv bootargs root=/dev/nfs nfsroot=192.168.10.11:/home/wbyq/work/rootfs ip=192.168.10.123:192.168.10.11:192.168.10.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0 lcd=S702
TINY4412 # saveenv
TINY4412 # reset
复制代码

2. NFS网络方式挂载

前提是先把根文件系统制作好才能继续这一步。当前的宿主机采用redhat6.3,这个系统比较老,但是功能是很齐全的,运行起来很流畅。要进行NFS网络挂载,需要先把PC机的网络与开发板的网络设置好,保证在同一个局域网内。当前的redhat6.3系统是跑在VM虚拟机里,接下来就对网络进行配置。

开发板NFS网络挂载的思路:

  1. PC机开启NFS服务器,配置NFS共享的路径: 将rootfs共享出来.
  2. 开发板当做NFS客户端,去挂载PC机共享的目录,完成文件系统的访问

(1)配置虚拟机网络

image-20220124094719066image-20220124094742987

(2)配置PC机NFS服务器

[wbyq@wbyq rootfs]$ sudo vim /etc/exports
/home/wbyq/work/rootfs *(insecure,rw,no_root_squash,sync)
复制代码

编写个脚本方便启动NFS服务器: 可以放在用户目录下 比如: nfs_restart.sh 运用脚本要使用管理员权限,脚本改权限为可执行

service nfs restart  #重启 NFS 服务器
service iptables stop #关闭防火墙
ifconfig eth0 192.168.10.11 #设置IP地址
复制代码

查看系统网卡名称: ifconfig

(3)运行脚本启动NFS服务器

[wbyq@wbyq ~]$ sudo ./nfs_restart.sh 
[sudo] password for wbyq: 
关闭 NFS 守护进程:                     [失败]
关闭 NFS mountd:                      [失败]
关闭 NFS quotas:                      [失败]
关闭 NFS 服务:                       [确定]
启动 NFS 服务:                       [确定]
关掉 NFS 配额:                       [确定]
启动 NFS mountd:                      [确定]
正在启动 RPC idmapd:                    [确定]
正在启动 RPC idmapd:                    [确定]
启动 NFS 守护进程:                     [确定]
[wbyq@wbyq ~]$ sudo ./nfs_restart.sh 
关闭 NFS 守护进程:                     [确定]
关闭 NFS mountd:                      [确定]
关闭 NFS quotas:                      [确定]
关闭 NFS 服务:                       [确定]
启动 NFS 服务:                       [确定]
关掉 NFS 配额:                       [确定]
启动 NFS mountd:                      [确定]
正在启动 RPC idmapd:                    [确定]
正在启动 RPC idmapd:                    [确定]
启动 NFS 守护进程:                     [确定]
[wbyq@wbyq ~]$ 
复制代码

(4)设置UBOOT的环境变量

进入到uboot的命令行,设置环境变量。
set bootargs root=/dev/nfs nfsroot=192.168.10.11:/home/wbyq/work/rootfs ip=192.168.10.123:192.168.10.11:192.168.10.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0 lcd=S702
​
set bootargs root=/dev/nfs nfsroot=<服务器地址>: ip=<开发板IP>:<服务器地址>:<网关>:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0 lcd=S702
​
执行示例:
TINY4412 # set bootargs root=/dev/nfs nfsroot=192.168.10.11:/home/wbyq/work/rootfs ip=192.168.10.123:192.168.10.11:192.168.10.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0 lcd=S702
TINY4412 # save
TINY4412 # reset
复制代码共享路径>

重启之后开发板正常就会进入到Linux命令行:

image-20220124095156574image-20220124095210552
审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4975

    文章

    18233

    浏览量

    287796
  • Linux
    +关注

    关注

    87

    文章

    10970

    浏览量

    206666
  • 根文件系统
    +关注

    关注

    0

    文章

    23

    浏览量

    11747
收藏 人收藏

    评论

    相关推荐

    linux驱动开发_文件系统本地挂载

    介绍Linux开发文件系统挂载NFS文件系统配置,UBOOT环境变量配置,完成
    的头像 发表于 09-17 15:52 1096次阅读
    <b class='flag-5'>linux</b>驱动<b class='flag-5'>开发</b>_<b class='flag-5'>文件系统</b>本地<b class='flag-5'>挂载</b>

    文件系统的制作

    (Network File System) NFS是由Sun开发并发展起来的一项在不同机器、不同操作系统之间通过网络共享文件的技术。在
    发表于 04-29 21:32

    文件系统挂载错误

    u-boot里面的加载网络文件 系统参数, 内核通过tftp 加载并启动成功, 但是会报文件系统挂载
    发表于 03-11 04:32

    嵌入式Linux文件系统怎么制作?

    嵌入式Linux操作系统越中文件系统作为操作系统的重要组成部分,用于控制对数据文件及设备的存取
    发表于 04-06 07:39

    嵌入式设备挂载目录

    嵌入式设备配置4.1 Linux内核添加NFS支持4.2 嵌入式设备挂载目录1. 背景嵌入式
    发表于 10-27 09:26

    如何使用QEMU搭建u-boot+Linux+NFS嵌入式开发环境呢

    使用QEMU搭建u-boot+Linux+NFS嵌入式开发环境1、搭建嵌入式基本开发环境2、QEMU安装3、编译Linux内核和dtb
    发表于 11-05 08:21

    嵌入式linux开发遇到nfs无法挂载怎么解决

    nfs服务供嵌入式开发使用,常见的解答就不赘述。以下是本人在fedora30上成功挂载nfs的方法供大家参考宿主机fedora30,嵌入式
    发表于 12-16 08:04

    Linux启动挂载文件系统简析

    Linux启动挂载文件系统为例,这个文件系统可以是真正的存储设备上的文件系统,也可以是
    发表于 12-21 07:23

    NFS挂载网络文件系统学习

    今天主要的是学习一下NFS挂载网络文件系统。 我这里主要是为了学习嵌入式linux
    发表于 12-22 06:03

    【米尔王牌产品MYD-Y6ULX-V2开发板试用体验】挂载NFS网络文件系统

    测试。搭建NFS环境如何利用NFS搭建NFS环境。主要包含连接网络、主机开启NFS服务 以及开发
    发表于 12-04 22:28

    嵌入式Linux开发板上NFS文件系统的使用

    本文描述了在开发嵌入式linux系统时调试程序的一个方法,本文以深圳远峰的YF2410DVK为开发平台,描述在
    发表于 02-02 15:22 2111次阅读

    嵌入式设备NFS挂载目录(基于iTop 4412)

    嵌入式设备配置4.1 Linux内核添加NFS支持4.2 嵌入式设备挂载目录1. 背景嵌入式
    发表于 10-20 18:36 8次下载
    <b class='flag-5'>嵌入式</b>设备<b class='flag-5'>NFS</b><b class='flag-5'>挂载</b>目录(基于iTop 4412)

    嵌入式Linux开发使用NFS挂载文件系统

    嵌入式Linux开发包含uboot(启动程序类似与windows中的BIOS)、kernel(内核)、根文件系统、各种应用程序几个部分,这几个部分的关系是开机上电后uboot初始化
    发表于 11-01 17:59 7次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>开发</b>使用<b class='flag-5'>NFS</b><b class='flag-5'>挂载</b>根<b class='flag-5'>文件系统</b>

    嵌入式Linux | 挂载网络文件系统

    上一篇笔记我们分享了【Linux笔记】pc机、开发板、ubuntu互ping实验。有了这个前提,我们的开发板就可以挂载Ubuntu的NFS
    发表于 11-02 11:06 19次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b> | <b class='flag-5'>挂载</b><b class='flag-5'>网络</b><b class='flag-5'>文件系统</b>

    嵌入式Linux开发-根文件系统本地挂载

    上篇文章介绍了根文件系统的制作与NFS网络挂载,这篇文章介绍内核如何从本地挂载文件系统,完成
    的头像 发表于 08-14 09:10 1820次阅读