mirror of
https://github.com/motioneye-project/motioneyeos.git
synced 2025-07-27 05:06:39 +00:00
fs/btrfs: add support for generating a btrfs image
This patch makes it possible to format the rootfs using btrfs. It introduces the option; BR2_TARGET_ROOTFS_BTRFS. When selected, the user is able to specify the filesystem size, label, options, and node and sector sizes. The new files are based on fs/ext2/{Config.in,ext2.mk} Signed-off-by: Robert J. Heywood <robert.heywood@codethink.co.uk> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Tested-by: "Yann E. MORIN" <yann.morin.1998@free.fr> [Thomas: - fix issues pointed by Yann (duplicated empty line, missing quotes around default values for string options) - use -f option so that we don't have to remove the image file before creating it again - use the --byte-count option to set the filesystem size, which avoids the need for doing a "truncate -s" - remove the possible explanation of a mkfs.btrfs error. Indeed, mkfs.btrfs automatically extends the size of the image as needed, so the size passed can never be "too small". - fix check-package warnings in Config.in file.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
parent
3991499b3f
commit
0aade4df1f
@ -1,6 +1,7 @@
|
|||||||
menu "Filesystem images"
|
menu "Filesystem images"
|
||||||
|
|
||||||
source "fs/axfs/Config.in"
|
source "fs/axfs/Config.in"
|
||||||
|
source "fs/btrfs/Config.in"
|
||||||
source "fs/cloop/Config.in"
|
source "fs/cloop/Config.in"
|
||||||
source "fs/cpio/Config.in"
|
source "fs/cpio/Config.in"
|
||||||
source "fs/cramfs/Config.in"
|
source "fs/cramfs/Config.in"
|
||||||
|
50
fs/btrfs/Config.in
Normal file
50
fs/btrfs/Config.in
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
config BR2_TARGET_ROOTFS_BTRFS
|
||||||
|
bool "btrfs root filesystem"
|
||||||
|
select BR2_PACKAGE_HOST_BTRFS_PROGS
|
||||||
|
help
|
||||||
|
Build a btrfs root filesystem. If you enable this option, you
|
||||||
|
probably want to enable the btrfs-progs package too.
|
||||||
|
|
||||||
|
if BR2_TARGET_ROOTFS_BTRFS
|
||||||
|
|
||||||
|
config BR2_TARGET_ROOTFS_BTRFS_LABEL
|
||||||
|
string "filesystem label"
|
||||||
|
|
||||||
|
config BR2_TARGET_ROOTFS_BTRFS_SIZE
|
||||||
|
string "filesystem size"
|
||||||
|
default "100m"
|
||||||
|
help
|
||||||
|
The size of the filesystem image in bytes.
|
||||||
|
Suffix with k, m, g or t for power-of-two kilo-, mega-, giga-
|
||||||
|
or terabytes.
|
||||||
|
|
||||||
|
config BR2_TARGET_ROOTFS_BTRFS_SIZE_SECTOR
|
||||||
|
string "sector size"
|
||||||
|
default "4096"
|
||||||
|
help
|
||||||
|
This value should be set to the page size in bytes. The
|
||||||
|
default value of 4096 is the the most common page size for
|
||||||
|
most systems. If the sectorsize differs from the page size,
|
||||||
|
the created filesystem may not be mountable by the kernel.
|
||||||
|
Therefore it is recommended to leave this value at
|
||||||
|
4096. Unless you know that your kernel uses a different page
|
||||||
|
size. Suffix with k for power-of-two kilobytes.
|
||||||
|
|
||||||
|
config BR2_TARGET_ROOTFS_BTRFS_SIZE_NODE
|
||||||
|
string "btree node size"
|
||||||
|
default "16384"
|
||||||
|
help
|
||||||
|
The tree block size in which btrfs stores metadata in bytes.
|
||||||
|
This must be a multiple of the sectorsize, but not larger
|
||||||
|
than 64KiB (65536).
|
||||||
|
Suffix with k for power-of-two kilobytes.
|
||||||
|
|
||||||
|
config BR2_TARGET_ROOTFS_BTRFS_FEATURES
|
||||||
|
string "Filesystem Features"
|
||||||
|
help
|
||||||
|
A comma separated string of features that can be enabled
|
||||||
|
during creation time.
|
||||||
|
For a list of available options, use:
|
||||||
|
`.../host/bin/mkfs.btrfs -O list-all`
|
||||||
|
|
||||||
|
endif # BR2_TARGET_ROOTFS_BTRFS
|
35
fs/btrfs/btrfs.mk
Normal file
35
fs/btrfs/btrfs.mk
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Build the btrfs root filesystem image
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
BTRFS_SIZE = $(call qstrip,$(BR2_TARGET_ROOTFS_BTRFS_SIZE))
|
||||||
|
ifeq ($(BR2_TARGET_ROOTFS_BTRFS)-$(BTRFS_SIZE),y-)
|
||||||
|
$(error BR2_TARGET_ROOTFS_BTRFS_SIZE cannot be empty)
|
||||||
|
endif
|
||||||
|
|
||||||
|
BTRFS_SIZE_NODE = $(call qstrip,$(BR2_TARGET_ROOTFS_BTRFS_SIZE_NODE))
|
||||||
|
BTRFS_SIZE_SECTOR = $(call qstrip,$(BR2_TARGET_ROOTFS_BTRFS_SIZE_SECTOR))
|
||||||
|
BTRFS_FEATURES = $(call qstrip,$(BR2_TARGET_ROOTFS_BTRFS_FEATURES))
|
||||||
|
# qstrip results in stripping consecutive spaces into a single one. So the
|
||||||
|
# variable is not qstrip-ed to preserve the integrity of the string value.
|
||||||
|
BTRFS_LABEL := $(subst ",,$(BR2_TARGET_ROOTFS_BTRFS_LABEL))
|
||||||
|
# ")
|
||||||
|
|
||||||
|
BTRFS_OPTS = \
|
||||||
|
-f \
|
||||||
|
-r '$(TARGET_DIR)' \
|
||||||
|
-L '$(BTRFS_LABEL)' \
|
||||||
|
--byte-count '$(BTRFS_SIZE)' \
|
||||||
|
$(if $(BTRFS_SIZE_NODE),--nodesize '$(BTRFS_SIZE_NODE)') \
|
||||||
|
$(if $(BTRFS_SIZE_SECTOR),--sectorsize '$(BTRFS_SIZE_SECTOR)') \
|
||||||
|
$(if $(BTRFS_FEATURES),--features '$(BTRFS_FEATURES)')
|
||||||
|
|
||||||
|
ROOTFS_BTRFS_DEPENDENCIES = host-btrfs-progs
|
||||||
|
|
||||||
|
define ROOTFS_BTRFS_CMD
|
||||||
|
$(HOST_DIR)/bin/mkfs.btrfs $(BTRFS_OPTS) $@
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(rootfs))
|
Loading…
x
Reference in New Issue
Block a user