#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