Open schaefi opened 9 months ago
on suse systemd-repart
is provided with the systemd-experimental
package
On RH/Fedora, it's part of the systemd-udev
package (yeah, I dunno why, but oh well?).
This might become more important to resolve issues around running kiwi in container environments.
Ok, so that's why I cannot build the image in a container...
[ DEBUG ]: 20:41:27 | EXEC: [sgdisk -n 3:0:0 -c 3:p.lxroot /dev/loop3]
[ DEBUG ]: 20:41:29 | EXEC: [sgdisk -t 3:8300 /dev/loop3]
[ DEBUG ]: 20:41:30 | EXEC: [partx --add /dev/loop3]
[ ERROR ]: 20:41:30 | KiwiMappedDeviceError: Device /dev/loop3p1 does not exist
yes this is a known problem in containers when no udev is running inside. You can fix this as follows
Make sure your container comes with a file named /etc/kiwi.yml
inside of the file set:
mapper:
- part_mapper: kpartx
rebuild the image. kiwi will now use kpartx which doesn't require udev to create the device nodes.
Your container still needs to be privileged though to allow creation of device nodes
yes this is a known problem in containers when no udev is running inside. You can fix this as follows
Make sure your container comes with a file named
/etc/kiwi.yml
inside of the file set:mapper: - part_mapper: kpartx
rebuild the image. kiwi will now use kpartx which doesn't require udev to create the device nodes.
Your container still needs to be privileged though to allow creation of device nodes
thanks, I'll try it
yes this is a known problem in containers when no udev is running inside. You can fix this as follows Make sure your container comes with a file named
/etc/kiwi.yml
inside of the file set:mapper: - part_mapper: kpartx
rebuild the image. kiwi will now use kpartx which doesn't require udev to create the device nodes. Your container still needs to be privileged though to allow creation of device nodes
thanks, I'll try it
@schaefi it worked but now I have another issue trying to use gitlab.com runners. it seems that they don't have support for BTRFS filesystems :(
Description
The current implementation for the disk builder makes use kernel interfaces, meaning the produced devices are created through loop devices as well as the produced file-systems gets mounted and more. Under certain conditions the dependency into the kernel could cause a problem e.g if the calling user has not enough permissions or the environment does not expose access to these interfaces. In this case it would be handy if kiwi could offer a disk builder which does not require kernel interfaces.
The systemd project offers a tool called
systemd-repart
which implements many parts of the build process without the need for the kernel interfaces. This leads to the idea to write a new builder class that utilizessystemd-repart
to build the disk image. systemd-repart is also used in the mkosi image builder from which the idea originates. For reference see make_image():kiwi needs to implement an interface to
systemd-repart
and its required input files