OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6989|回复: 1

手动对EMMC进行分区(仅作为参考)

[复制链接]

9

主题

890

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2390
金钱
2390
注册时间
2019-9-25
在线时间
397 小时
发表于 2021-10-11 12:50:42 | 显示全部楼层 |阅读模式
本帖最后由 仰望星空之云 于 2021-10-11 18:52 编辑

笔者使用的是  正点原子的  阿尔法开发板(EMMC版本)  来操作。
以下操作,仅作为参考。


操作思路:
先制作SD系统启动卡,然后SD卡插到开发板里,开发板从SD卡启动,目的就是启动SD卡里的系统,然后就手动操作,将EMMC进行分区,EMMC分区好以后,就进行格式化操作。
EMMC分区格式化好以后,如何验证分区成功了呢,这里我就将EMMC分2个区,其中1分区放内核+设备树(启动文件),2分区放文件系统,这些文件放好以后,开发板从EMMC启动看看,能启动的话,说明OK了。

这里注意,大家要准备好一个文件系统,并打包好,咱们后面可以将这个文件系统压缩包解压到EMMC的2分区中。


下面开始操作吧。

一、手动卸载EMMC分区挂载点按照《【正点原子】I.MX6U用户快速体验V1.8》的2.2小节先自己制作SD系统启动卡(也就是SD卡分好区,并有启动文件和文件系统)。

制作好SD启动卡以后,SD卡插入开发板,拨码开关设置为SD卡启动,然后从SD卡启动开发板进入文件系统。

进入linux文件系统以后,执行指令df看看设备挂载情况,其中/run/media/mmcblk1p2和/run/media/mmcblk1p1是EMMC设备的挂载点,/run/media/mmcblk0p1和/run/media/mmcblk0p2是SD卡设备的挂载点,
因为我用的开发板出厂系统已经烧录到EMMC里了,也就是默认EMMC已经分好区了,所以可以看到/run/media/mmcblk1p2和/run/media/mmcblk1p1。因为现在是SD卡启动,也就是此时开发板的Linux系统运行的是SD卡里的,
即系统正在使用中,所以执行df指令后,可以看到/run/media/mmcblk0p1,看不到/run/media/mmcblk0p2。
执行df指令后,我们先将EMMC设备进行卸载(这个是出厂系统默认的分区,先卸载了再自己重新划分分区)。

执行以下指令:
df
umount /run/media/mmcblk1p2                // 卸载EMMC的1分区
umount /run/media/mmcblk1p1                // 卸载EMMC的2分区
1.png

二、分区操作
卸载完成以后,就可以对EMMC设备进行重新分区了,EMMC设备是/dev/mmcblk1
分区操作的指令是fdisk,执行如下指令:

fdisk /dev/mmcblk1

输入m查看指令使用方法,输入p查看分区情况,输入p以后可以看到EMMC显示7.3GB接近8GB了(阿尔法的EMMC是8GB的)
2.png

3.png

输入d删除分区,然后选择删除分区1,再输入p查看分区情况,查看只剩下2分区了,再输入d就将剩下的2分区删除了
4.png

现在开始新增分区:
输入“n”创建一个新分区。通过选择'p'使其为主,使用默认分区号 1 和第一个扇区 2048。设置最后一个扇区,也就是设置第一个分区的大小,一般设置 500M 足够了,
通过输入“+ 500M”,为该分区预留 500MB,然后输入“t”,然后输入“c”,设置为“W95FAT32 (LBA)”,输入“a”,设为引导分区,指令输入顺序:

n----p----1----空格----+500M-----p---t---c---a

然后顺利新增第一个分区,大小是500MB,此分区用于存放启动镜像(内核、设备树):
5.png

接下来新增第二个分区,后面一路默认就可以了,添加了第二个分区以后,输入p可以查看分区情况,确认无误了,再输入w以写入到EMMC里并退出,第二个分区用于存放文件系统:
6.png

以上只是创建了两个分区,如果自己想多创建几个分区的,可自己划分每个分区的大小。上面创建第二个分区的时候没有自己设置分区的大小,而是把剩下的空间留给了地热个分区(大概6.8GB)

三、格式化分区
完成了分区创建后,就可以格式化分区了。第一个分区我们存放启动镜像,要格式化为fat32格式,第二个分区我们存放文件系统,格式化为ext3格式。
自己创建了几个分区,每个分区用来放什么,自己根据自己的需求来格式化分区。
在终端输入如下命令:

mkfs.vfat /dev/mmcblk1p1                 //        EMMC的1分区(启动镜像)
mkfs.ext3 /dev/mmcblk1p2                //        EMMC的2分区(文件系统)

7.png

四、拷贝镜像文件到分区里
最后验证是否手动创建分区成功,将启动镜像文件拷贝到EMMC的1分区,将文件系统解压到EMMC的2分区(SD卡里我已经有这些文件了)。
SD卡插到开发板并从SD卡启动后, /run/media/mmcblk0p1就是SD卡里的启动分区,存放的是内核和设备树文件。下面讲解怎么操作。

先挂载EMMC的2分区到/run/media/mmcblk1p2下(没有这个文件的话那就手动创建,设备是挂载后才可以进行读写操作)
同理,也将EMMC的1分区挂载到/run/media/mmcblk1p1下,挂载操作类似。指令如下图:
PS:如果没有/run/media/mmcblk1p1和/run/media/mmcblk1p2,自己手动新建,如果有这些目录,自己就不需要新建了,新建的指令如下:
mkdir /run/media/mmcblk1p1
mkdir /run/media/mmcblk1p2
新建好以上的目录后,执行如下指令将EMMC的1设备/dev/mmcblk1p1挂载到/run/media/mmcblk1p1下,将EMMC的2设备/dev/mmcblk1p2挂载到/run/media/mmcblk1p2下,
设备挂载后我们才可以进行读写访问,这个操作就类比与U盘插到windows下以后显示一个“U盘”设备后,咱们才可以往U盘里拷贝文件,类似这个操作吧。
执行如下指令进行挂载:
mount /dev/mmcblk1p1 /run/media/mmcblk1p1           ///dev/mmcblk1p1挂载到/run/media/mmcblk1p1
mount /dev/mmcblk1p2 /run/media/mmcblk1p2           ///dev/mmcblk1p2挂载到/run/media/mmcblk1p2

8.png

将 /run/media/mmcblk0p1的所有文件拷贝到/run/media/mmcblk1p1,其实也就是将SD卡的1分区的 内核+设备树 拷贝一份到EMMC的1分区中。
EMMC的二分区就是放文件系统,大家可以先准备好一个文件系统,也就是要放到EMMC的2分区的文件系统,这个文件系统呢,笔者推荐先把他打包(压缩)好,
然后可以拷贝到U盘里,U盘插到开发板上以后再通过U盘里将其解压到EMM2的2分区中,或者可以直接拷贝文件系统压缩包到SD卡的2分区里,到时候直接从文件系统中解压到EMMC的2分区里。
大家可以把按照教程提到的打包方式去打包一个文件系统:
13.png

这里呢,我在SD卡的文件系统里提前放了ubuntu_rootfs-alientek-emmc.tar.bz2这个压缩包,这个是按照教程移植的ubuntu文件系统,我提前打包好了,且放到了SD卡文件系统中了。
所以我可以直接执行以下指令:
cp -rf /run/media/mmcblk0p1/* /run/media/mmcblk1p1                             //将SD卡1分区的内核+设备树拷贝到EMMC的1分区
cd /                                                                                                       // 回到SD卡文件系统的/目录,因为我在/目录下已经提前放好了打包好的文件系统
tar -vxf ubuntu_rootfs-alientek-emmc.tar.bz2 -C /run/media/mmcblk1p2      //将打包好的文件系统解压到EMMC的2分区

9.png


五、启动开发板
解压完以后开发板从EMMC启动,看看能否启动,能启动的话,说明操作成功。如下,开发板能正常启动,完美!

10.png

六、一些指令
mkfs命令-->make filesystem的缩写;用来在特定的分区建立Linux文件系统,该命令用来在特定的分区创建linux文件系统,常见的文件系统有ext2,ext3,vfat等,
执行mkfs命令其实是在调用:mkfs.ext3 | mkfs.reiserfs|mkfs.ext2| mkdosfs | mkfs.msdos | mkfs.vfat
比如:

mkfs.ext3 /dev/sda6         // 把该设备格式化成ext3文件系统
mke2fs -j /dev/sda6         // 把该设备格式化成ext3文件系统
mkfs.reiserfs /dev/sda6    //格式化成reiserfs文件系统
mkfs.vfat /dev/sda6         //格式化成fat32文件系统
mkfs.msdos /dev/sda6     //格式化成fat16文件系统,msdos就是fat16
mkdosfs /dev/sda6          //格式化成msdos文件系统

11.png

mkfs本身并不执行建立文件系统的工作,而是去调用相关的程序来执行。例如,若在"-t" 参数中指定ext2,则mkfs会调用mke2fs来建立文件系统.使用时如省略指定【块数】参数,mkfs会自动设置适当的块数.
在 /dev/hda5 上建一个 msdos 的档案系统,同时检查是否有坏块存在,并且将过程详细列出来 :

mkfs -V -t msdos -c /dev/hda5
mfks -t ext3 /dev/sda6                //将sda6分区格式化为ext3格式
mkfs -t ext2 /dev/sda7               //将sda7分区格式化为ext2格式


mkfs -t 文件系统  存储设备
注:
这里的文件系统是要指定的,比如 ext3 ;reiserfs ;ext2;fat32 ;msdos 等... ...









正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2019-8-8
在线时间
5 小时
发表于 2022-12-31 20:18:14 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 07:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表