前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >嵌入式Linux开发-根文件系统本地挂载

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

作者头像
DS小龙哥
发布2022-04-08 08:50:45
4.6K0
发布2022-04-08 08:50:45
举报
文章被收录于专栏:嵌入式项目开发

1. 前言

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

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

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

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

2. 本地挂载方式1

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

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

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

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

配置内核:

代码语言:javascript
复制
# cp tiny4412_linux_defconfig .config

制作根文件系统的方式:

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

示例:

代码语言:javascript
复制
make_ext4fs -s -l 500M rootfs.img rootfs

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

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

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

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

示例:

代码语言:javascript
复制
 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卡启动。

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

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

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

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

代码语言:javascript
复制
[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命令行执行。

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

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

代码语言:javascript
复制
[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). 串口传输

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/02/22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 前言
  • 2. 本地挂载方式1
  • 3. 本地挂载方式2
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档