目录
1 SD卡分区框架
使用sd卡烧录uboot、linux内核和根文件系统前首先需要对sd卡进行分区,sd卡分区参考nxp官方《i.mx linux user’s guide》文档4.3章节:preparing an sd/mmc card to boot,如下图所示:
NXP官方给出SD卡启动时的分区情况如下图所示:
由上图可知,将SD卡分成了三部分:
第一部分:扇区起始地址0x400 bytes(2),大小为20478个扇区(10M),分区格式为原始格式,用于存放U-Boot。(0x400 bytes转为10进制是1024 bytes, 正好是2个扇区的大小;这两个扇区是为了保存分区表的信息。因此从0x400地址开始存放U-Boot,括号中的2可以理解为从第2个扇区的起始地址开始,扇区编号从0开始数起)。
第二部分:扇区起始地址0xa00000 bytes(20480),大小为1024000个扇区(500M),分区格式为FAT,用于存放Linux内核镜像文件和设备树文件。
第三部分:扇区起始地址0x25800000 bytes(1228800),大小为SD卡剩余的空间,分区格式为Ext3或Ext4,用于存放rootfs,根文件系统。
根据NXP官方手册最终的SD卡分区框架如下图所示:
第一部分用于存放U-Boot,没有文件系统格式的要求,因此对SD卡的分区创建从第二个部分(第20480扇区所在的地址)开始进行分区。
2 Ubuntu系统下对SD卡进行分区
2.1 使用lsblk命令查看Ubuntu块设备信息
使用lsblk命令查看Ubuntu下所有块设备信息,如下图所示:
2.2 使用fdisk命令对SD卡进行分区
2.2.1 查看SD卡挂载信息
使用fdisk -l命令查看SD卡信息(一般硬盘挂载到sda,U盘会挂载到sdb),如下图所示:
2.2.2 删除SD卡分区
由上图可知,SD卡存在分区,因此需要先删除SD卡原有分区,重新对SD卡进行分区,使用fdisk命令d删除相关分区(fdisk分区命令请参照Linux 命令大全 | 菜鸟教程)如下图所示:
2.2.3 新建SD卡第一个分区
使用fdisk命令n新建SD卡第一个分区,如下图所示:
2.2.4 新建SD卡第二个分区
使用fdisk命令n新建SD卡第二个分区,如下图所示:
3 格式化SD卡
使用mkfs命令格式化SD卡,设置sdb1分区格式为FAT,设置sdb2分区格式为ext4,如下图所示: