01、使用fdisk调试mmc块设备
1、查看当前eMMC分区
命令解析与核心功能
busybox fdisk /dev/block/mmcblk0 -l
是一个用于查询嵌入式系统中存储设备分区表信息的命令。该命令通过 BusyBox 工具集提供的 fdisk
工具,对位于 /dev/block/mmcblk0
的块设备执行分区表信息的读取与展示。其核心功能包括:
设备识别:确认
/dev/block/mmcblk0
的设备类型(如 SD 卡、eMMC 或 USB 存储设备)。分区表解析:读取并解析设备上的主引导记录(MBR)或 GUID 分区表(GPT)。
分区信息输出:列出设备的分区数量、类型、起始扇区、结束扇区、大小及挂载标识符。
参数与设备路径详解
busybox
前缀:BusyBox 是嵌入式 Linux 环境中常见的多功能工具集,其fdisk
工具在功能上与标准 Linuxfdisk
类似,但可能因 BusyBox 版本差异而存在功能限制(如不支持 GPT 分区表操作)。/dev/block/mmcblk0
:这是 Linux 系统中常见的块设备路径。mmcblk0
表示第一个多介质卡控制器(MMC)管理的存储设备,常见于嵌入式设备(如树莓派、工业控制设备)。/dev/block
目录下的设备路径与/dev
下的设备节点(如/dev/mmcblk0
)通常为硬链接,但部分系统中可能因内核配置差异而路径不同。-l
参数:强制fdisk
进入列表模式,仅输出当前分区表信息而不进入交互式分区管理界面。
2、创建一个分区
若仅制作一个分区,那么操作如下图所示:
3、文件系统的格式化
在Linux系统管理与嵌入式设备开发过程中,使用mke2fs
工具创建ext4文件系统是一项基础且关键的操作。
mke2fs -t ext4 /dev/mmcblk1p1
文件系统类型指定(
**-t ext4**
)
通过-t
参数明确指定文件系统类型为ext4(Fourth Extended Filesystem)。设备路径(
**/dev/mmcblk1p1**
)
该路径标识目标存储设备分区。mmcblk
系列设备通常对应嵌入式系统的SD卡或eMMC存储芯片,p1
表示第一个主分区。
4、手动挂载
mount -t ext4 /dev/mmcblk1p1 /mnt/sd
这条命令的作用是将SD卡的一个分区连接到系统中的指定目录。具体来说:
将设备路径为
/dev/mmcblk1p1
(通常代表SD卡的某个分区)使用
ext4
文件系统格式挂载到
/mnt/sd
目录下。
5、脚本实现分区的创建
此脚本的实现,与第二小节内容一致。
#!/bin/sh
mmcpath=/dev/
mntpath=/mnt/sd
#检查mmc块设备是否存在
check_emmc()
{
if [ -e $mmcpath/mmcblk1 ]; then
return 1
else
return 0
fi
}
#fdisk分区配置操作,含义见上一小节
do_partition()
{
echo "n
p
1
w
" | busybox fdisk $mmcpath/mmcblk0
}
check_partition_and_init()
{
check_emmc
if [ $? -eq "1" ]; then
if [ ! -e $mmcpath/mmcblk0p1 ]; then
do_partition
$mmcpath/mmcblk0p1
echo "Partitioning and initialization are complete"
fi
mount -t ext4 $mmcpath/mmcblk1p1 $mntpath
echo "emmc mount complete"
sync
else
echo " emmc faild "mount
fi
}
echo " emmc start mount "
check_partition_and_init
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46