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

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

3天内不再提示

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

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

1. 前言

上篇文章介绍了根文件系统的制作与NFS网络挂载,这篇文章介绍内核如何从本地挂载根文件系统,完成系统启动。本地挂载一般用在产品发布的时候,本地挂载的操作也分为两种。

第一种: 在PC机上制作好文件映像rootfs.img,然后利用uboot加载直接烧写到EMMC里。这种最方便,适合产品批量生产烧录。需要依赖官方的工具。当前用的开发板是友善之臂的Tiny4412,官方提供了分区工具,可以将SD卡分区,将制作好的内核、uboot、文件系统映像、配置脚本放在SD卡里,然后开发板选择SD卡启动,就可以通过uboot完成EMMC分区,文件系统格式化、文件系统解压拷贝过程,在LCD屏上还有执行的进度条。

第二种: 自己在uboot命令行对EMMC进行分区,然后拷贝文件系统到指定分区,再设置uboot环境变量完成挂载。这种可以了解整个挂载流程,对于学习来讲,非常适合。

下面分别介绍两种挂载方式的执行过程。

image-20220124114403062

2. 本地挂载方式1

这种放需要准备一张SD卡,然后需要利用官方光盘里提供的分区工具,对SD卡进行分区,再将内核、uboot、文件系统映像文件拷贝到SD卡上,再修改配置文件,设置启动的系统为Linux系统。

image-20220124112602654image-20220124112628891image-20220124112701163

根文件系统映像制作需要用到make_ext4fs命令,这个工具在光盘里也有,是一个压缩包,解压到PC机Linux系统下就可以使用。

image-20220124112716921

制作完成之后,将根文件系统拷贝到SD卡的image文件夹,与烧写安卓系统一样进行烧写。

说明:其中的zImage文件是可以自己编译替换掉的。

配置内核:

# cp tiny4412_linux_defconfig .config
复制代码

image-20220124112804936

制作根文件系统的方式:

make_ext4fs -s -l <文件系统映像的大小> <生成的映像文件名称> <根文件系统存放的目录>
复制代码

示例:

make_ext4fs -s -l 500M rootfs.img rootfs
复制代码

如果不知道rootfs文件系统的大小,可以使用du命令进行查看。 例如:du rootfs -h

注意:在制作根文件系统映像包的时候,需要先将rootfs/dev目录下的所有文件全部删除掉。

注意: 运行make_ext4fs命令需要使用超级用户身份,否则会导致文件系统制作之后无法加载。

如果是普通用户身份登录系统,在执行命令时,加上sudo即可。

示例:

 sudo make_ext4fs -s -l 500M rootfs.img rootfs
   
[wbyq@wbyq work]$ sudo linux_tools/local/bin/make_ext4fs -s -l 500M rootfs.img rootfs/
[sudo] password for wbyq: 
Creating filesystem with parameters:
  Size: 524288000
  Block size: 4096
  Blocks per group: 32768
  Inodes per group: 8000
  Inode size: 256
  Journal blocks: 2000
  Label: 
  Blocks: 128000
  Block groups: 4
  Reserved block group size: 31
Created filesystem with 5534/32000 inodes and 51924/128000 blocks
复制代码

3. 本地挂载方式2

在完成当前介绍的挂载方式2,需要先完成NFS网络挂载才可以继续,大致的思路就是:

(1)先将uboot、内核拷贝到开发板EMMC

(2)进入到uboot命令行,对EMMC进行分区,格式化文件系统。

(3)配置uboot环境变量,设置文件挂载挂载为NFS网络挂载,最后成功进入到命令行终端,然后将某个EMMC分区挂载到文件系统目录下,将根文件系统压缩包解压到这个目录,最后重启开发板进入到uboot命令行再次修改环境变量,设置uboot从刚才解压文件系统的分区启动,重启开发板,最后完成挂载。

接下来就详细的完成上面说的步骤:

(1)对EMMC进行分区安装文件系统 在uboot命令行执行以下代码。注意: 当前是从SD卡启动。

TINY4412 # fdisk -c 1 1024 1024 1024
TINY4412 # ext2format mmc 1:2
复制代码

(2)打包PC机的rootfs文件系统

[wbyq@wbyq work]$ sudo tar cvf rootfs.tar rootfs
[wbyq@wbyq work]$ mv rootfs.tar rootfs/
复制代码

(3)使用NFS方式挂载解压文件系统到EMMC指定分区 以下命令是挂载NFS文件系统之后,进入到Linux命令行执行。注意: 当前是从SD卡启动

[root@wbyq ]# rm /dev/* 
[root@wbyq ]# mdev -s
[root@wbyq ]# mount /dev/mmcblk1p2 /mnt/
[root@wbyq ]# cd /mnt/
[root@wbyq mnt]# tar xvf /rootfs.tar
[root@wbyq mnt]# mv rootfs/* ./
[root@wbyq ]# umount /mnt/
复制代码

(4)切换成EMMC方式启动设置UBOOT环境变量 以下命令在UBOOT命令行执行。

TINY4412 # setenv bootargs root=/dev/mmcblk0p2 rootfstype=ext2 init=/linuxrc console=ttySAC0 lcd=S702
TINY4412 # saveenv
TINY4412 # reset
复制代码

(5)本地方式下,使用NFS方式挂载NFS服务器的目录实现文件共享

[root@wbyq ]# ifconfig eth0 192.168.10.123
[root@wbyq ]# mount -t nfs -o nolock 192.168.10.11:/home/wbyq/project
复制代码

把PC机文件拷贝到开发板上的方式:

(1). SD卡或者U盘拷贝 (2). NFS网络方式 (3). 串口传输

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

    关注

    4825

    文章

    17413

    浏览量

    278706
  • Linux
    +关注

    关注

    85

    文章

    10352

    浏览量

    205903
  • 根文件系统
    +关注

    关注

    0

    文章

    23

    浏览量

    11539
收藏 人收藏

    评论

    相关推荐

    文件系统的制作

    文件系统挂载嵌入式设备,可以很方便地修改文件系统的内容。以上讨论的都是基于存储设备的文件系统(memory-based file system),它们都可用作Linux文件系统。实际上
    发表于 04-29 21:32

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

    嵌入式Linux操作系统越中文件系统作为操作系统的重要组成部分,用于控制对数据文件及设备的存取,提供对文件和目录的分层组织形式,数据缓冲以及对文件存取权限的控制。文件系统一直是
    发表于 04-06 07:39

    嵌入式设备挂载目录

    嵌入式设备配置4.1 Linux内核添加NFS支持4.2 嵌入式设备挂载目录1. 背景嵌入式Linux开发中,提到NFS,一般都是NFS整个文件系统,有时候觉得没啥必要。板子上已经有文件系统了,直接
    发表于 10-27 09:26

    Linux启动挂载文件系统简析

    Linux启动挂载文件系统为例,这个文件系统可以是真正的存储设备上的文件系统,也可以是网络文件系统,甚至可以开辟一段内存,虚拟出来一个文件系统,这些在一开始接触嵌入式Linux开发的时候就算讲到了也不会很
    发表于 12-21 07:23

    适合嵌入式Linux应用的文件系统—— JFFS

    嵌入式Linux应用的文件系统—— JFFS。JFFS是一种在开源模式下开发文件系统, 为嵌入式Linux 系统的应用提供了一种可靠、稳定、方便的数据存储方式。在探讨其工作
    发表于 04-16 11:07 4次下载

    用Busybox制作嵌入式Linux文件系统

    文件系统Linux 的运行提供最基本的工具、库、脚本和一些特殊文件的支持Busybox 是制作嵌入式Linux 文件系统的快捷工具,本文通过配置、编译、安Busybox,以及生成文件系统
    发表于 06-12 16:05 19次下载

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

    嵌入式设备配置4.1 Linux内核添加NFS支持4.2 嵌入式设备挂载目录1. 背景嵌入式Linux开发中,提到NFS,一般都是NFS整个文件系统,有时候觉得没啥必要。板子上已经有文件系统了,直接
    发表于 10-20 18:36 8次下载
    <b>嵌入式</b>设备NFS<b>挂载</b>目录(基于iTop 4412)

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

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

    嵌入式Linux系统移植-(Linux文件系统

    嵌入式Linux系统移植-(Linux文件系统嵌入式文件系统概述·文件是有组织、有次序地存储在某种介质上的一组信息的集合,是用来存储信息的一种基本结构。·文件系统决定了信息和数据在存储设备上
    发表于 11-02 12:51 16次下载
    <b>嵌入式</b><b>Linux</b><b>系统</b>移植-(<b>Linux</b><b>文件系统</b>)

    i.MX6ULL嵌入式Linux开发5-文件系统完善

    嵌入式Linux系统文件系统,基本的功能可以正常运行,但在个基础功能上,还要许多地方需要完善。
    的头像 发表于 03-14 08:44 896次阅读
    i.MX6ULL<b>嵌入式</b><b>Linux</b><b>开发</b>5-<b>根</b><b>文件系统</b>完善

    嵌入式Linux开发-busybox文件系统制作

    文件系统是内核启动时所挂载mount的第一个文件系统系统引导启动程序会在文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。
    的头像 发表于 08-14 08:51 1207次阅读

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

    文件系统Linux内核启动之后挂载的第一个文件系统,上篇文章里已经介绍过,如何使用busybox来制作文件系统。这篇文章介绍文件系统制作成功后,如何让内核找到文件系统,并完成挂载,进入到
    的头像 发表于 08-14 08:57 948次阅读

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

    Linux开发文件系统挂载、NFS文件系统配置,UBOOT环境变量配置,完成文件系统启动。
    的头像 发表于 09-17 15:52 835次阅读
    <b>linux</b>驱动<b>开发</b>_<b>文件系统</b><b>本地</b><b>挂载</b>

    嵌入式Linux文件系统构建指南

    嵌入式 Linux 文件系统布局,建议还是按照FHS标准来安排,事实上大多数嵌入式Linux都是这样做的。但是,嵌入式系统可能并不需要桌面/服务器那样庞大系统的全部目录,可以酌情对系统进行精简,以
    发表于 02-22 09:41 250次阅读