SD卡扩容
前言
一. 为什么要进行SD卡扩容
在全志T113实际使用当中,我们会发现SD卡本身32G
的内存,但是SD的存储并没有得到充分的利用,在启动开发板系统后,df -h
就会发现,根文件系统的大小只有不足以256M
(如下图所示),像一些摄像头的使用,想保存一些图片到本地,也会受到内存的限制。那是否有办法让可用空间变的更大,毫无疑问肯定是有的。
二. 方法一(不推荐)
通过修改配置文件,使根文件系统大小增大
2.1 找到系统配置文件
首先找到SDK包,进入目录:
在路径**buildroot-100ask_t113-pro/br2t113pro/configs/**下,有两个系统配置文件,修改哪个?取决于你的开发板系统是通过什么启动的,我这里是通过SD卡启动,所以我将修改100ask_t113-pro_sdcard_core_defconfig
这个文件。
2.2 修改系统配置文件
用vim打开100ask_t113-pro_sdcard_core_defconfig
,紧接着左斜杆搜索BR2_TARGET_ROOTFS_EXT2_SIZE
,将对应参数256M修改成你想要的一个值就好了。
这个方法虽然简单方便,但是缺点也是很明显的,通过修改这个值,那么编译后生成的镜像文件也会随之增大,这就会导致你烧录也会变慢,所以这个方法是治标不治本的。假设你把SD卡剩下的内存全用上,那么这个镜像文件就会接近30个G,这得烧录多久啊…
三. 方法二(推荐)
3.1 安装gdisk
首先为什么要用gdisk而不用fdisk呢?
genimage工具打包的镜像分区是hybrid混合分区,fdisk只支持MBR分区,不支持GPT分区,所以使用fdisk -l
命令查看的分区信息和cat /proc/partitions
查看的设备信息不一致,使用fdisk分区也无效。
在此之前我的开发板系统里面是没有gdisk工具的,如果你的开发板有的话,就可以跳过这个步骤。
进入到buildroot目录下,执行make menuconfig
:
进入到图形化界面后,左斜杠搜索BR2_PACKAGE_GPTFDISK,*号选中退出保存:
然后在bulidroot目录下执行编译:
make V=1
然后把系统烧录到开发板启动。
以下是gdisk使用帮助信息:
Command (? for help): ? #输入?号查看可用的指令
b back up GPT data to a file #将GPT数据备份到文件中
c change a partition's name #更改分区的名称
d delete a partition #删除分区
i show detailed information on a partition #将显示分区的详细信息
l list known partition types #列出已知的分区类型
n add a new partition #添加一个新的分区
o create a new empty GUID partition table (GPT) #创建一个新的空GUID分区表(GPT)
p print the partition table #打印分区表
q quit without saving changes #不保存更改就退出
r recovery and transformation options (experts only) #恢复和转换选项(仅限专家使用)
s sort partitions #分类分区
t change a partition's type code #更改分区的类型
v verify disk #验证磁盘
w write table to disk and exit #将表写入磁盘并退出
x extra functionality (experts only) #额外功能(仅限专家使用)
? print this menu #查看可用的指令
3.2 删除share分区
启动系统后,执行下面命令进入交互:
gdisk /dev/mmcblk0
紧接着输入p
回车,即可打印分区表:
我们要进行删除分区的操作,输入d
回车,选择删除第6分区:
3.3 扩容rootfs分区
在删除完share分区后,我们再删除rootfs分区,输入d
回车,选择删除第5分区:
在删除rootfs分区后,我们再进行新建分区,输入n
回车:
在这里一直回车(回车默认选择default的值)即可。
3.3.1 小插曲
可以看到,目前1154118是可选择的最大值。这个时候就会觉得很奇怪,明明有29G的内存,为什么可用的只能到1154118呢。那剩下的29G跑哪去了?
这个时候我们输入p
回车再打印分区表,可见我们第五个分区已经建立好了,而且比之前rootfs分区大,但是分区名字不是rootfs,这里我们可以输入c
回车进行改名。
修改好之后,我们输入w
回车保存。然后重启系统,执行如下命令:
reboot
3.4 在线调整文件系统大小
在系统重启之后,我们df -h
查看发现rootfs还是跟之前的大小一样,没有发生变化,这个时候我们执行如下命令,对文件系统进行一个在线调整:
resize2fs /dev/mmcblk0p5
执行完上面的命令后,再次df -h
就可以看到size发生变化了:
但是这个大小还并没有满足我们的需求,因为我们的目的是充分利用SD的空间,有大约29G的大小,但是上面我们扩容rootfs分区的时候,不是只能选择到1154118吗?但是,在我们将之前的share分区扩容到rootfs分区后,并且重启和在线调整文件系统后,当我们再次进入到gdisk交互,打印出分区表,就可以看到之前消失的29G跑回来了。这个时候最后一个可用扇区也从1154118变成了62322112。
3.5 最后再次扩容rootfs
所以我们还要进行一次扩容,将所有可用扇区全扩到rootfs分区:
这个时候,就可以看到第5分区的大小已经高达29.7G了,那么接下来我们进行改名(改回rootfs)保存退出,然后重启系统之后,再次执行下面命令在线调整文件系统:
resize2fs /dev/mmcblk0p5
执行完后,df -h
查看:
最后
至于在没经过第一次扩容前,为啥29G的空间会没显示出来的原因,我也不是很清楚,如果有大佬知道,欢迎您留言。