If the image is writable, and some of the files or directories that are
overmounted from the host do not exist yet they will be automatically created.
-On read-only, immutable images (e.g. squashfs images) all files and directories
-to over-mount must exist already.
+On read-only, immutable images (e.g. `erofs` or `squashfs` images) all files
+and directories to over-mount must exist already.
Note that as no new image format or metadata is defined, it's very
straightforward to define images than can be made use of in a number of
<term><varname>Format=</varname></term>
<listitem><para>Takes a file system name, such as <literal>ext4</literal>, <literal>btrfs</literal>,
- <literal>xfs</literal>, <literal>vfat</literal>, <literal>squashfs</literal>, or the special value
- <literal>swap</literal>. If specified and the partition is newly created it is formatted with the
- specified file system (or as swap device). The file system UUID and label are automatically derived
- from the partition UUID and label. If this option is used, the size allocation algorithm is slightly
- altered: the partition is created as least as big as required for the minimal file system of the
- specified type (or 4KiB if the minimal size is not known).</para>
+ <literal>xfs</literal>, <literal>vfat</literal>, <literal>erofs</literal>,
+ <literal>squashfs</literal> or the special value <literal>swap</literal>. If specified and the partition
+ is newly created it is formatted with the specified file system (or as swap device). The file system
+ UUID and label are automatically derived from the partition UUID and label. If this option is used,
+ the size allocation algorithm is slightly altered: the partition is created as least as big as
+ required for the minimal file system of the specified type (or 4KiB if the minimal size is not
+ known).</para>
<para>This option has no effect if the partition already exists.</para>
<listitem><para>Plain directories or btrfs subvolumes containing the OS tree</para></listitem>
<listitem><para>Disk images with a GPT disk label, following the <ulink
url="https://uapi-group.org/specifications/specs/discoverable_partitions_specification">Discoverable Partitions Specification</ulink></para></listitem>
- <listitem><para>Disk images lacking a partition table, with a naked Linux file system (e.g. squashfs or ext4)</para></listitem>
+ <listitem><para>Disk images lacking a partition table, with a naked Linux file system (e.g. erofs,
+ squashfs or ext4)</para></listitem>
</orderedlist>
<para>These image formats are the same ones that
return log_error_errno(SYNTHETIC_ERRNO(EPROTONOSUPPORT), "mksquashfs binary not available.");
if (r < 0)
return log_error_errno(r, "Failed to determine whether mksquashfs binary exists: %m");
+
+ } else if (streq(fstype, "erofs")) {
+ r = find_executable("mkfs.erofs", &mkfs);
+ if (r == -ENOENT)
+ return log_error_errno(SYNTHETIC_ERRNO(EPROTONOSUPPORT), "mkfs.erofs binary not available.");
+ if (r < 0)
+ return log_error_errno(r, "Failed to determine whether mkfs.erofs binary exists: %m");
+
} else if (fstype_is_ro(fstype)) {
return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP),
"Don't know how to create read-only file system '%s', refusing.",
root, node,
"-quiet",
"-noappend");
+
+ else if (streq(fstype, "erofs"))
+
+ argv = strv_new(mkfs,
+ "-U", vol_id,
+ node, root);
else
/* Generic fallback for all other file systems */
argv = strv_new(mkfs, node);
if (STR_IN_SET(fstype, "ext2", "ext3", "ext4", "btrfs", "f2fs", "xfs", "vfat", "swap"))
log_info("%s successfully formatted as %s (label \"%s\", uuid %s)",
node, fstype, label, vol_id);
+ else if (streq(fstype, "erofs"))
+ log_info("%s successfully formatted as %s (uuid %s, no label)",
+ node, fstype, vol_id);
else
log_info("%s successfully formatted as %s (no label or uuid specified)",
node, fstype);
if ! get_bool "${TEST_NO_QEMU:=}"; then
install_dmevent
instmods dm_verity =md
+ instmods erofs
generate_module_dependencies
image_install -o /sbin/mksquashfs
+ image_install -o /bin/mkfs.erofs
fi
inst_binary mcopy
# shellcheck disable=SC2064
trap "rm -rf '$defs' '$imgs'" RETURN
- for format in ext4 vfat; do
+ for format in ext4 vfat erofs; do
if ! command -v "mkfs.$format" >/dev/null; then
continue
fi