该资源是一个关于在Linux系统中如何对SD卡进行分区的教程,主要讲解了SD卡在不同设备上显示的名称差异、扇区(sector)的概念、 mmcblk设备命名规则,以及Uboot中mmc命令的使用,并提供了一个示例展示了如何划分SD卡分区以确保系统内容不丢失。
在Linux系统中,SD卡的识别和命名取决于它所连接的接口。当SD卡通过USB读卡器连接到计算机时,操作系统会将其识别为一个块设备,通常命名为`sdb`或`sdb1`,这里的`b`表示第二块硬盘(因为`sda`通常预留给了内置硬盘)。然而,当SD卡直接插入到支持MMC(多媒体卡)总线的设备(如开发板)上时,它会被识别为`mmcblk0`或`mmcblk1`,其中`0`或`1`代表不同的设备,而`p1`表示该设备的第一个分区。
扇区是磁盘存储的基本单位,每个扇区的大小通常为512字节。对于一个32GB的SD卡,其总扇区数大约是62333952个。在Linux中,设备文件如`mmcblk0`代表整个SD卡,而`mmcblk0p1`则表示该卡上的第一个分区。
`uboot`是一个常见的引导加载程序,用于嵌入式设备。在`uboot`中,可以使用`mmc`命令来读写SD卡。例如,`mmcread addr blk#cnt`用于读取操作,`mmcwrite addr blk#cnt`用于写入操作。这两个命令的参数分别指定了内存地址、块位置和要读写的块数量,所有这些值都是以16进制表示的。
在创建SD卡分区的过程中,需要使用`fdisk`等工具来管理分区表。例如,`/dev/mmcblk0p3`表示`mmcblk0`上的第三个分区,其起始和结束的逻辑区块地址(LBA)分别是0和15000001,对应的扇区数表明了分区的大小。这个示例中,`mmcblk0p3`可能被用作存储系统的一部分,而其他分区如`mmcblk0boot0`和`mmcblk0boot1`可能用于存放启动相关的数据。
在实际操作中,为了在SD卡上划分一个分区并保留已有的系统内容,需要先备份重要数据,然后使用`fdisk`创建新的分区,分配合适的大小(如20MB用于Kernel,256MB用于rootfs),最后使用`mkfs`等命令格式化新分区,并挂载到系统中适当的位置。这样,即使重刷系统内容,原有的分区和数据也不会丢失。