Skip to content

kiwi image builds fail with nspawn due to broken loop devices #1554

Open
@Conan-Kudo

Description

@Conan-Kudo

We've had this problem for a while now where kiwi image builds seem to fail in nspawn environments due to broken loop device nodes:

[ DEBUG   ]: 10:01:31 | EXEC: [losetup -f --show /builddir/kiwi-build/Fedora.x86_64-42.raw]
[ DEBUG   ]: 10:01:31 | Looking for systemd-id128 in /usr/bin:/bin:/usr/sbin:/sbin
[ DEBUG   ]: 10:01:31 | EXEC: [systemd-id128 show]
[ DEBUG   ]: 10:01:31 | Initialize gpt disk
[ DEBUG   ]: 10:01:31 | Looking for sgdisk in /usr/bin:/bin:/usr/sbin:/sbin
[ DEBUG   ]: 10:01:31 | EXEC: [sgdisk --zap-all /dev/loop0]
[ INFO    ]: 10:01:32 | --> creating EFI CSM(legacy bios) partition
[ DEBUG   ]: 10:01:32 | Looking for sgdisk in /usr/bin:/bin:/usr/sbin:/sbin
[ DEBUG   ]: 10:01:32 | EXEC: [sgdisk -n 1:2048:+2M -c 1:p.legacy /dev/loop0]
[ DEBUG   ]: 10:01:33 | Looking for sgdisk in /usr/bin:/bin:/usr/sbin:/sbin
[ DEBUG   ]: 10:01:33 | EXEC: [sgdisk -t 1:EF02 /dev/loop0]
[ INFO    ]: 10:01:34 | --> creating EFI partition
[ DEBUG   ]: 10:01:34 | Looking for sgdisk in /usr/bin:/bin:/usr/sbin:/sbin
[ DEBUG   ]: 10:01:34 | EXEC: [sgdisk -n 2:0:+500M -c 2:p.UEFI /dev/loop0]
[ DEBUG   ]: 10:01:35 | Looking for sgdisk in /usr/bin:/bin:/usr/sbin:/sbin
[ DEBUG   ]: 10:01:35 | EXEC: [sgdisk -t 2:EF00 /dev/loop0]
[ DEBUG   ]: 10:01:36 | Looking for sgdisk in /usr/bin:/bin:/usr/sbin:/sbin
[ DEBUG   ]: 10:01:36 | EXEC: [sgdisk --typecode 2:c12a7328f81f11d2ba4b00a0c93ec93b /dev/loop0]
[ INFO    ]: 10:01:37 | --> creating boot partition [with 0 clone(s)]
[ DEBUG   ]: 10:01:37 | Looking for sgdisk in /usr/bin:/bin:/usr/sbin:/sbin
[ DEBUG   ]: 10:01:37 | EXEC: [sgdisk -n 3:0:+1024M -c 3:p.lxboot /dev/loop0]
[ DEBUG   ]: 10:01:38 | Looking for sgdisk in /usr/bin:/bin:/usr/sbin:/sbin
[ DEBUG   ]: 10:01:38 | EXEC: [sgdisk -t 3:8300 /dev/loop0]
[ DEBUG   ]: 10:01:39 | Looking for sgdisk in /usr/bin:/bin:/usr/sbin:/sbin
[ DEBUG   ]: 10:01:39 | EXEC: [sgdisk --typecode 3:bc13c2ff59e64262a352b275fd6f7172 /dev/loop0]
[ INFO    ]: 10:01:40 | --> Using all_freeMB for the root(rw) partition if present
[ INFO    ]: 10:01:40 | --> creating root partition [with 0 clone(s)]
[ DEBUG   ]: 10:01:40 | Looking for sgdisk in /usr/bin:/bin:/usr/sbin:/sbin
[ DEBUG   ]: 10:01:40 | EXEC: [sgdisk -n 4:0:0 -c 4:p.lxroot /dev/loop0]
[ DEBUG   ]: 10:01:41 | Looking for sgdisk in /usr/bin:/bin:/usr/sbin:/sbin
[ DEBUG   ]: 10:01:41 | EXEC: [sgdisk -t 4:8300 /dev/loop0]
[ DEBUG   ]: 10:01:42 | Looking for sgdisk in /usr/bin:/bin:/usr/sbin:/sbin
[ DEBUG   ]: 10:01:42 | EXEC: [sgdisk --typecode 4:4f68bce3e8cd4db196e7fbcaf984b709 /dev/loop0]
[ DEBUG   ]: 10:01:43 | Looking for partx in /usr/bin:/bin:/usr/sbin:/sbin
[ DEBUG   ]: 10:01:43 | EXEC: [partx --add /dev/loop0]
[ INFO    ]: 10:01:43 | Cleaning up Disk instance
[ DEBUG   ]: 10:01:43 | Looking for partx in /usr/bin:/bin:/usr/sbin:/sbin
[ DEBUG   ]: 10:01:43 | EXEC: [partx --delete /dev/loop0]
[ DEBUG   ]: 10:01:43 | Looking for losetup in /usr/bin:/bin:/usr/sbin:/sbin
[ DEBUG   ]: 10:01:43 | EXEC: [losetup -d /dev/loop0]
[ ERROR   ]: 10:01:43 | KiwiMappedDeviceError: Device /dev/loop0p1 does not exist

I've got a test case script to reproduce the issue:

#!/bin/bash -euxo pipefail
# Author: Neal Gompa
# SPDX-License-Identifier: MIT

if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ]; then
echo "Missing args!"
exit 1
fi

if [ -n "$1" ]; then
        if [[ "$1" =~ ^[0-9][0-9]$ ]]; then
                releasever="$1"
                branchver="f${1}"
        else
                releasever="$1"
                branchver="$1"
        fi
fi

mock_base="mock --root fedora-${releasever}-x86_64 --no-bootstrap-image --isolation=nspawn"
kiwi_build_cmd="kiwi-ng --debug --type=${2} --profile=${3} --kiwi-file=Fedora.kiwi system build --description=/builddir/fedora-kiwi-descriptions --target-dir=/builddir/kiwi-build"

$mock_base --clean
$mock_base --init
$mock_base --install kiwi-cli kiwi-systemdeps distribution-gpg-keys git-core
$mock_base --enable-network --chroot "git clone -b ${branchver} https://pagure.io/fedora-kiwi-descriptions.git /builddir/fedora-kiwi-descriptions"
$mock_base --enable-network --chroot "$kiwi_build_cmd"

This can be invoked like so: ./kiwi-mockbuild.sh 42 oem Tiny-Disk

We've done some fixes in the past about device nodes in nspawn, but this issue is rather baffling.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions