如何将 /dev/root 文件系统大小设置为分区大小

Chr*_*ris 1 yocto

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       4.3G  1.9G  2.2G  47% /
devtmpfs        980M     0  980M   0% /dev
tmpfs           981M     0  981M   0% /dev/shm
tmpfs           981M   33M  948M   4% /run
tmpfs           981M     0  981M   0% /sys/fs/cgroup
tmpfs           981M     0  981M   0% /tmp
tmpfs           981M   16K  981M   1% /var/volatile
Run Code Online (Sandbox Code Playgroud)
# fdisk -l
Disk /dev/mmcblk1: 7.3 GiB, 7818182656 bytes, 15269888 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier:

Device         Start      End  Sectors  Size Type
/dev/mmcblk1p1 16384    24575     8192    4M unknown
/dev/mmcblk1p2 24576    32767     8192    4M unknown
/dev/mmcblk1p3 32768    69859    37092 18.1M unknown
/dev/mmcblk1p4 81920 15269854 15187935  7.2G unknown
Run Code Online (Sandbox Code Playgroud)

据我所知,/dev/root 文件系统大小是复制到/dev/root 的内容的大小。

我的目标是让 /dev/root 大小与 /dev/mmcblk1p4 相同,即 7.2G。
我如何指示 Yocto 为 /dev/root 文件系统提供其挂载分区的大小?

Pie*_*ier 5

我可以看到您的问题有两种可能的解决方案。

第一个是告诉 Yocto 生成具有特定IMAGE_ROOTFS_SIZE值的图像。正如Yocto 超级手册中所述。大小以千字节为单位指定。修改您的machine.conflocal.conf添加此参数。

在你的情况下,该值似乎是:

15269854 - 81920 = 15187934 sectors
sectors are 512 Bytes on your system (see verification below)
15187935 * 512 = 7776222208 Bytes
7776222208 / 1024 = 7593967 KBytes

To verify the sector size of 512B: 
7593967 / (1024 * 1024) = 7.242 GB
With 512 Bytes blocksize, the partition size is 7.2GB, as stated by fdisk
Run Code Online (Sandbox Code Playgroud)

我认为稍微减少一点是个好主意,像 7230000 KB (~7.23 GB) 这样的值可能是一个不错的选择。

如果您的分区类型是 ext2/3/4,另一种方法是使用 resize2fs 程序。该程序可以在已安装或未安装的设备上执行。如果您使用的是 SD 卡,最简单的方法是将其插入计算机,卸载它,然后运行resize2fs /dev/<mysdcarddevice>​​. 您还可以直接从嵌入式板执行它。在这种情况下,您需要将包添加e2fsprogs-resize2fs到板上IMAGE_INSTALL += "e2fsprogs-resize2fs",然后运行resize2fs /dev/mmcblk1p4