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

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文件是可以自己编译替换掉的。
配置内核:
 # cp tiny4412_linux_defconfig .config复制代码  
制作根文件系统的方式:
 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). 串口传输


资深航天人开拓测控新蓝海
华为mate10什么时候上市?华为mate10最新消息:华为mate10即将发布,值得你等待
仪器仪表维修基本上都有哪些过程?
哪吒汽车张勇:2023年新品定价过高,丧失了先机
电蜂厂商高压连接线的外壳有什么作用
嵌入式Linux开发-根文件系统本地挂载
夏普33RX10J彩电副电源工作原理分析
如何迅速找到小电机的噪音源,并让它安静下来
轻松看护老人,毫米波雷达走进生活
赛灵思与戴姆勒达成合作 联手解决AI在汽车应用领域的可能性
美扩大对华为的禁令,对存储产业会有什么影响
国网天津电科院与综合能源公司携手合作,推动9100行动计划落地
图像噪声的成因分类与常见图像去噪算法简介
有刷电机驱动方法:通过单开关电路和半桥电路进行驱动
ET610电能表现场校验仪的应用特点及按键操作方法
浩康科技Crypton Tech推出了超高速USB3.0解决方案
现代汽车推动印尼电动汽车工业的发展
kubernetes是什么 关于K8S架构原理的硬核干货分享
高端音频应用电阻器选择
三思“多杆合一”解决方案助力城市新建设