• LS1046nfs挂载文件系统


    对于嵌入式Linux开发,通过NFS挂载根文件系统,根文件系统无需下载到FLASH(FLASH还需要先擦除再写入),可以直接保存在Linux主机,而且在Linux开发的驱动程序也无需下载到Linux开发板的FLASH,这使得开发十分方便快捷,下面记录了通过NFS挂载根文件系统的过程。
    linux虚拟机上的修改:
    1)打开/etc/exports,编辑里面的内容为

    /home/nfs *(rw,sync,insecure,no_root_squash,no_all_squash,no_subtree_check)
    
    • 1

    2)重新开启nfs

    /etc/init.d/nfs-kernel-server restart
    
    • 1

    3)在/home/nsf放入文件系统
    在这里插入图片描述
    4)修改ls1046ardb_boot.scr文件
    输入boot命令启动内核的过程中,设备会额外执行一个启动脚本:/boot/ls1046ardb_boot.scr
    在这里插入图片描述
    该脚本位于开发板/dev/mmcblk0p2中的/boot目录下,该脚本在执行过程中会重写bootargs环境变量,这样导致之前用户自己设置的bootargs会被覆盖掉,系统将不能从用户自定义的位置去挂载根文件系统。
    ls1046ardb_boot.scr是一个二进制的程序,其中:
    源文件位于:flexbuild/configs/board/ls1046ardb/manifest
    编译生成的.scr文件位于:flexbuild/build/firmware/u-boot/ls1046ardb/ls1046ardb_boot.scr
    编译命令为:flex-builder -i mkdistroscr -a arm64 -m ls1046ardb
    其中源文件mainfest中与启动设置bootargs相关的是:

    setenv bootargs console=ttyS0,115200 earlycon=uart8250,mmio,0x21c0500 root=PARTUUID=$partuuid3 
    rw rootwait board_name=$board_name serdes1=$serdes1 $othbootargs;
    
    • 1
    • 2

    将上述语句中的setenv bootargs删除,然后重新编译生成.scr程序,并将其更新到开发板emmc的分区2(设备为:/dev/mmcblk0p2)的boot目录下。这样以后我们在uboot中设置的命令就不会被重写了。

    5)在开发板u-boot阶段设置bootargs环境变量

    =>setenv bootargs 'console=ttyS0,115200 earlycon=uart8250,mmio,0x21c0500 root
    fstype=nfsroot root=/dev/nfs nfsroot=192.168.8.10:/home/nfs,proto=tcp,nfsvers=3,nolock 
    ip=192.168.8.46:192.168.8.10:192.168.8.1:255.255.255.0::eth1:off 
    board_name=$board_name serdes1=$serdes1 $othbootargs'
    =>saveenv
    
    • 1
    • 2
    • 3
    • 4
    • 5

    192.168.8.10为ubuntu服务器ip,192.168.8.46为开发板ip,保证两ip在同一网段可ping通即可,在uboot阶段默认使用的网口是fm1-mac3,在此阶段该网口名为eth1,此处不可写为fm1-mac3。
    重新启动后可实现nfs挂载根文件系统
    在这里插入图片描述
    在/home/nfs中创建aaa文件夹
    在这里插入图片描述
    可以看到开发板根目录出现了aaa文件夹,nfs挂载成功
    在这里插入图片描述

  • 相关阅读:
    【BOOST C++ 18 数字处理】(2)Boost.Accumulators
    SpringCloud微服务 【实用篇】| Eureka注册中心、Ribbon负载均衡
    路由器DNS 劫持攻击情况
    港陆证券:服装家纺公司上半年投资并购力度加大
    固态硬盘SSD格式化后,数据恢复的可能性有多大?
    深度学习相关VO梳理
    基于STM32的交通灯proteus仿真设计倒计时紧急_时间可调
    面向防疫的智能导诊机器人关键技术及应用
    浅谈Elasticsearch安全和权限管理
    老弟手把手教你编译Spark3.2.1源码!!!!!
  • 原文地址:https://blog.csdn.net/qq_40177571/article/details/125446523