Как установить размер файловой системы /dev / root на размер раздела

#yocto

#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
 
 # 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
 

Насколько я знаю, размер файловой системы /dev / root — это размер содержимого, которое копируется в /dev / root .

Моя цель — иметь размер /dev / root такой же, как /dev /mmcblk1p4, который равен 7,2G.
Как я могу поручить Yocto присвоить файловой системе /dev / root размер раздела, к которому он подключен?

Комментарии:

1. Какая у вас файловая система в /dev / root?

Ответ №1:

Я вижу два возможных решения вашей проблемы.

Первый — это указание Yocto сгенерировать изображение с определенным IMAGE_ROOTFS_SIZE значением. Как указано в мега-руководстве Yocto. Размер указывается в кбайтах. Измените свой machine.conf или local.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
 

Я думаю, что было бы неплохо немного уменьшить его, хорошим кандидатом может быть значение, подобное 7230000 Килобайт (~ 7,23 ГБ).

Другой способ — использовать программу resize2fs, если ваш тип раздела ext2 / 3 / 4. Эта программа может выполняться на смонтированных или размонтированных устройствах. Если вы используете SD-карту, самым простым способом будет вставить ее в свой компьютер, размонтировать и запустить resize2fs /dev/<mysdcarddevice> . Вы также можете выполнить его непосредственно со встроенной платы. В этом случае вам нужно будет добавить пакет e2fsprogs-resize2fs на плату с IMAGE_INSTALL = "e2fsprogs-resize2fs" помощью, а затем запустить resize2fs /dev/mmcblk1p4 .

Ответ №2:

Как предложил PierreOlivier, я использовал resize2fs program.
Потому что я использую Yocto для создания пользовательского образа, который я использую pkg_postinst_ontarget , который запускается только один раз при первой загрузке на целевой машине.
В одном из моих рецептов я поставил

 pkg_postinst_ontarget_${PN}() {
    #!/bin/bash
    resize2fs /dev/mmcblk1p4
}
 

Это изменяет размер выбранного раздела при первой загрузке.
Спасибо PierreOlivier