Incompatible Filesystem Settings on Host vs. Image
Note
Abstract
This page provides further information on how to solve image boot problems if the filesystem toolchain on the image build host is incompatible with the image’s target distribution.
When KIWI NG builds an image that requests the creation of a
filesystem, the required filesystem creation tool, for
example, mkfs.xfs, is called from the host on which KIWI NG
is running. It is expected that the generated filesystem
is compatible with the image’s target distribution. This
expectation is not always correct and depends on the
compatibility of the filesystem default settings between
build host and image target. We know about the following
settings that cause an incompatible filesystem, which
will not be able to be used on boot:
- Ext[2,3,4]
Check
/etc/mke2fs.confon the build host and make sure the configuredinode_sizeis the same as the setting used for the target image. To solve an issue of this type, use the following filesystem creation option in your KIWI NG image configuration:<type fscreateoptions="-I inode-size"/>
- XFS
Check the XFS metadata setup on the build host and make sure the settings are compatible with the target image. XFS has the default settings compiled-in, thus it might be needed to build the image first and use the
xfs_infotool in adisk.shscript to fetch the settings at the build time of the image. We know from community reports that the settingsparse=1will cause issues on older versions of grub’s xfs module, which does not know how to handle this setting properly. To solve an issue of this type, use the following filesystem creation option in your KIWI NG image configuration:<type fscreateoptions="-i sparse=0"/>
- btrfs
btrfs and default page sizes (4k vs 64k). By default, btrfs autodetects the sector size according to the used kernel page size. If the sector size differs from the page size, the created filesystem cannot be mounted by the image’s target kernel. If there is a different kernel page size between the kernel on the system the image is built on and the later kernel used for the image, it’s required to specify the filesystem sector size to match with the kernel page size of the kernel used for the image. This can be done as in the following example:
<type fscreateoptions="--sectorsize 4k"/>
Note
There can be more inconsistencies in the area of filesystems
that we have not listed here. In general, it’s advisable to
build the image in a compatible environment. At best, the
build host distribution is of the same major Linux version
as the image target. For this purpose, KIWI NG provides the
so-called boxed-plugin. Further details can be found
in Building in a Self-Contained Environment