存储介质的分区与空间分配
对于嵌入式系统来说,存储介质的分区很重要,这样才能在上电后正确的部署整个系统
- 一般存储介质主要被分为:1.bootloader区 2.env区 3.kernel区 4.rootfs区 5.其他fs区
1.分区表
- mmc/sd设备专门有一个扇区用来描述块设备的分区信息的,称之为MBR,对于SD卡来说,MBR在扇区0
- 对于emmc来说,在出厂时里面会实现物理上的分区, 主要由这几个部分组成:
- BOOT1:一般用来放bootloader,物理上的稳定性、可靠性极好
- BOOT2:常作为BOOT1的备份,BOOT1失效时执行BOOT2
- RPMB:存放特殊、保密的数据,极少使用该分区
- User Data Area:常规空间,占整块EMMC大小的93%,可被fdisk工具分区
- Vender private area:厂家预留区域
2.分区的意义
- bootloader对分区的概念不太在意,只要它能把内核烧到A位置,把文件系统烧到B位置,把xxx烧录到xxx位置。。。很多时候也会出现分区表在固化在U-boot源码中。。以实现在U-boot控制台中用命令一键分区。。如,可以使用“nand write 3000000 kernel”命令将uImage烧到kernel分区,而不必写那么长:nand write 3000000 A
- kernel直接读取MBR就知道了分区,但是它却不知道rootfs在哪。所以在U-boot的bootargs可以不包含分区表的具体内容,但要告诉kernel哪个分区放了rootfs
- Linux和U-boot中均可使用fdisk命令来分区,一般在制作、烧录固件时来对存储介质分区
3.文件系统与分区