OSInside / kiwi

KIWI - Appliance Builder Next Generation
https://osinside.github.io/kiwi
GNU General Public License v3.0
306 stars 152 forks source link

JeOS images fail to build in openSUSE:Factory:ARM #1882

Closed ggardet closed 3 years ago

ggardet commented 3 years ago

Problem description

Since the update from 9.23.31 to 9.23.43 https://build.opensuse.org/request/show/905081 (Could be another update as well) JeOS images are failing on Arm: https://build.opensuse.org/package/live_build_log/openSUSE:Factory:ARM/JeOS:JeOS-raspberrypi.aarch64/images/aarch64

[  262s] [ DEBUG   ]: 04:09:58 | --------------err stop--------------
[  262s] [ ERROR   ]: 04:09:58 | KiwiScriptFailed: config.sh failed: Created symlink /etc/systemd/system/multi-user.target.wants/sshd.service -> /usr/lib/systemd/system/sshd.service.
[  262s] Created symlink /etc/systemd/system/multi-user.target.wants/chronyd.service -> /usr/lib/systemd/system/chronyd.service.
[  262s] sed: can't read /etc/vimrc: No such file or directory
[  262s] 
[  262s] [ INFO    ]: 04:09:58 | Cleaning up SystemPrepare instance

Expected behaviour

Build should finish properly.

Steps to reproduce the behaviour

Try to build JeOS image in Factory:ARM

OS and Software information

schaefi commented 3 years ago

This looks strange. Can you share the used config.sh with us ?

@dcermak can you imagine this to be related to the scripting changes ? I doubt it

ggardet commented 3 years ago

Here is the config.sh

#!/bin/bash
# vim: sw=4 et
#================
# FILE          : config.sh
#----------------
# PROJECT       : OpenSuSE KIWI Image System
# COPYRIGHT     : (c) 2006 SUSE LINUX Products GmbH. All rights reserved
#               :
# AUTHOR        : Marcus Schaefer <ms@suse.de>
#               :
# BELONGS TO    : Operating System images
#               :
# DESCRIPTION   : configuration script for SUSE based
#               : operating systems
#               :
#               :
# STATUS        : BETA
#----------------
#======================================
# Functions...
#--------------------------------------
test -f /.kconfig && . /.kconfig
test -f /.profile && . /.profile

#======================================
# Greeting...
#--------------------------------------
echo "Configure image: [$kiwi_iname]..."

#======================================
# Setup baseproduct link
#--------------------------------------
suseSetupProduct

#======================================
# Activate services
#--------------------------------------
suseInsertService sshd
suseInsertService boot.device-mapper
suseInsertService chronyd
suseRemoveService avahi-dnsconfd
suseRemoveService avahi-daemon

if [ -x /usr/bin/cloud-init ]; then
    # Found cloud-init (probably for dracut firstboot), enable it
    suseInsertService cloud-init-local
    suseInsertService cloud-init
    suseInsertService cloud-config
    suseInsertService cloud-final
fi

#======================================
# Add missing gpg keys to rpm
#--------------------------------------
suseImportBuildKey

#======================================
# Set sensible defaults
#--------------------------------------

baseUpdateSysConfig /etc/sysconfig/clock HWCLOCK "-u"
baseUpdateSysConfig /etc/sysconfig/clock TIMEZONE UTC
echo 'DEFAULT_TIMEZONE="UTC"' >> /etc/sysconfig/clock
baseUpdateSysConfig /etc/sysconfig/network/dhcp DHCLIENT_SET_HOSTNAME no
baseUpdateSysConfig /etc/sysconfig/network/dhcp WRITE_HOSTNAME_TO_HOSTS no

#==========================================
# remove unneeded kernel files
#------------------------------------------
# Stripkernel renames the image which breaks
# 2nd boot
# suseStripKernel

#==========================================
# dirs needed by kiwi for subvolumes
#------------------------------------------
mkdir -p /var/lib/mailman /var/lib/mariadb /var/lib/mysql /var/lib/named /var/lib/pgsql /var/lib/libvirt/images

#==========================================
# remove package docs
#------------------------------------------
rm -rf /usr/share/doc/packages/*
rm -rf /usr/share/doc/manual/*
rm -rf /opt/kde*

if ! rpmqpack | grep -q vim-enhanced; then
    #======================================
    # only basic version of vim is
    # installed; no syntax highlighting
    #--------------------------------------
    sed -i -e's/^syntax on/" syntax on/' /etc/vimrc
fi

#======================================
# Import GPG Key
#
t=$(mktemp)
cat - <<EOF > $t
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.15 (GNU/Linux)

mQENBEkUTD8BCADWLy5d5IpJedHQQSXkC1VK/oAZlJEeBVpSZjMCn8LiHaI9Wq3G
3Vp6wvsP1b3kssJGzVFNctdXt5tjvOLxvrEfRJuGfqHTKILByqLzkeyWawbFNfSQ
93/8OunfSTXC1Sx3hgsNXQuOrNVKrDAQUqT620/jj94xNIg09bLSxsjN6EeTvyiO
mtE9H1J03o9tY6meNL/gcQhxBvwuo205np0JojYBP0pOfN8l9hnIOLkA0yu4ZXig
oKOVmf4iTjX4NImIWldT+UaWTO18NWcCrujtgHueytwYLBNV5N0oJIP2VYuLZfSD
VYuPllv7c6O2UEOXJsdbQaVuzU1HLocDyipnABEBAAG0NG9wZW5TVVNFIFByb2pl
Y3QgU2lnbmluZyBLZXkgPG9wZW5zdXNlQG9wZW5zdXNlLm9yZz6JATwEEwECACYC
GwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAUCU2dN1AUJHR8ElQAKCRC4iy/UPb3C
hGQrB/9teCZ3Nt8vHE0SC5NmYMAE1Spcjkzx6M4r4C70AVTMEQh/8BvgmwkKP/qI
CWo2vC1hMXRgLg/TnTtFDq7kW+mHsCXmf5OLh2qOWCKi55Vitlf6bmH7n+h34Sha
Ei8gAObSpZSF8BzPGl6v0QmEaGKM3O1oUbbB3Z8i6w21CTg7dbU5vGR8Yhi9rNtr
hqrPS+q2yftjNbsODagaOUb85ESfQGx/LqoMePD+7MqGpAXjKMZqsEDP0TbxTwSk
4UKnF4zFCYHPLK3y/hSH5SEJwwPY11l6JGdC1Ue8Zzaj7f//axUs/hTC0UZaEE+a
5v4gbqOcigKaFs9Lc3Bj8b/lE10Y
=i2TA
-----END PGP PUBLIC KEY BLOCK-----
EOF
rpm --import $t
rm -f $t

#======================================
# prepare for setting root pw, timezone
#--------------------------------------
echo ** "reset machine settings"
rm /etc/machine-id
rm /etc/localtime
rm /var/lib/zypp/AnonymousUniqueId
rm /var/lib/systemd/random-seed

#======================================
# Add Factory repo
#--------------------------------------
# Add repos from /etc/YaST2/control.xml
if [ -x /usr/sbin/add-yast-repos ]; then
    add-yast-repos
    zypper --non-interactive rm -u live-add-yast-repos
fi

#======================================
# Invoke grub2-install
#--------------------------------------

case $kiwi_iname in
  *efi|*.aarch64-rootfs)
    [ -x /usr/sbin/grub2-install ] && {
        /usr/sbin/grub2-install || :
    }
    ;;
esac

#======================================
# Add Contrib repo when needed
#--------------------------------------
if [ -f /kiwi-hooks/contrib_repo ]; then
    REPO=$(cat /kiwi-hooks/contrib_repo | sed 's/devel:ARM:Factory:Contrib://')
    URLREPO=$(sed 's/:/:\//g' /kiwi-hooks/contrib_repo)
    zypper ar -f "http://download.opensuse.org/repositories/$URLREPO/standard/" "Factory-Contrib-$REPO"
    rm -f /kiwi-hooks/contrib_repo

    if [ -z "$(ls -A /kiwi-hooks)" ]; then
        rm -rf /kiwi-hooks
    fi
fi

case "$kiwi_iname" in
  *efi*|*chromebook*|*-raspberrypi2|*-raspberrypi)
    # Do not use any defaults. X server will detect what it needs to load
    # Tested with GFX images in qemu and on chromebook
    ;;
  *)
    #======================================
    # Add xorg config with fbdev for other boards
    #--------------------------------------
    mkdir -p /etc/X11/xorg.conf.d/
    cat > /etc/X11/xorg.conf.d/20-fbdev.conf <<-EOF
    Section "Device"
        Identifier "fb gfx"
        Driver "fbdev"
        Option "fb" "/dev/fb0"
    EndSection
    EOF
    ;;
esac

#======================================
# Configure system for E20 usage
#--------------------------------------
# XXX only do for E20 image types
if [[ "$kiwi_iname" == *"E20-"* ]]; then
    baseUpdateSysConfig /etc/sysconfig/displaymanager DISPLAYMANAGER lightdm
    cat >> /etc/sysconfig/windowmanager <<EOF
## Path:        Desktop/Window manager
## Description:
## Type:        string(gnome,kde4,kde,lxde,xfce,twm,icewm)
## Default:     xfce
## Config:      profiles,kde,susewm
#
# Here you can set the default window manager (kde, fvwm, ...)
# changes here require at least a re-login
DEFAULT_WM="enlightenment"
EOF
    # We want to start in gfx mode
    baseSetRunlevel 5
    suseConfig
fi

#======================================
# Configure system for LXQT usage
#--------------------------------------
# XXX only do for LXQT image types
if [[ "$kiwi_iname" == *"LXQT-"* ]]; then
    baseUpdateSysConfig /etc/sysconfig/displaymanager DISPLAYMANAGER lightdm
    cat >> /etc/sysconfig/windowmanager <<EOF
## Path:        Desktop/Window manager
## Description:
## Type:        string(gnome,kde4,kde,lxde,xfce,twm,icewm)
## Default:     xfce
## Config:      profiles,kde,susewm
#
# Here you can set the default window manager (kde, fvwm, ...)
# changes here require at least a re-login
DEFAULT_WM="lxqt"
EOF
    # We want to start in gfx mode
    baseSetRunlevel 5
    suseConfig
fi

#======================================
# Configure system for XFCE usage
#--------------------------------------
# XXX only do for XFCE image types
if [[ "$kiwi_iname" == *"XFCE-"* ]]; then
    baseUpdateSysConfig /etc/sysconfig/displaymanager DISPLAYMANAGER lightdm
    cat >> /etc/sysconfig/windowmanager <<EOF
## Path:        Desktop/Window manager
## Description:
## Type:        string(gnome,kde4,kde,lxde,xfce,twm,icewm)
## Default:     xfce
## Config:      profiles,kde,susewm
#
# Here you can set the default window manager (kde, fvwm, ...)
# changes here require at least a re-login
DEFAULT_WM="xfce"
EOF
    # We want to start in gfx mode
    baseSetRunlevel 5
    suseConfig
fi

#======================================
# Configure system for IceWM usage
#--------------------------------------
if [[ "$kiwi_iname" == *"X11-"* ]]; then
       baseUpdateSysConfig /etc/sysconfig/displaymanager DISPLAYMANAGER xdm
       baseUpdateSysConfig /etc/sysconfig/windowmanager DEFAULT_WM icewm

       # We want to start in gfx mode
       baseSetRunlevel 5
       suseConfig
fi

#======================================
# Configure system for KDE/Plasma usage
#--------------------------------------
if [[ "$kiwi_iname" == *"KDE-"* ]]; then
       baseUpdateSysConfig /etc/sysconfig/displaymanager DISPLAYMANAGER sddm
       baseUpdateSysConfig /etc/sysconfig/windowmanager DEFAULT_WM plasma5

       # We want to start in gfx mode
       baseSetRunlevel 5
       suseConfig
fi

#======================================
# Configure system for GNOME usage
#--------------------------------------
if [[ "$kiwi_iname" == *"GNOME-"* ]]; then
       baseUpdateSysConfig /etc/sysconfig/displaymanager DISPLAYMANAGER gdm
       baseUpdateSysConfig /etc/sysconfig/windowmanager DEFAULT_WM gnome

       # We want to start in gfx mode
       baseSetRunlevel 5
       suseConfig
fi

#======================================
# Add tty devices to securetty
#--------------------------------------
# XXX should be target specific
cat >> /etc/securetty <<EOF
ttyO0
ttyO2
ttyAMA0
ttyAMA2
ttymxc0
ttymxc1
EOF

#======================================
# Bring up eth device automatically
#--------------------------------------
mkdir -p /etc/sysconfig/network/
case "$kiwi_iname" in
    *-m400)
    cat > /etc/sysconfig/network/ifcfg-enp1s0 <<-EOF
    BOOTPROTO='dhcp'
    MTU=''
    REMOTE_IPADDR=''
    STARTMODE='onboot'
    EOF
    ;;
    *efi*)
        # Jetson Nano uses enp1s0 in qemu
    cat > /etc/sysconfig/network/ifcfg-enp1s0 <<-EOF
    BOOTPROTO='dhcp'
    MTU=''
    REMOTE_IPADDR=''
    STARTMODE='onboot'
    EOF
        # Tumbleweed uses enp0s3 in qemu (eth0 in Leap)
    cat > /etc/sysconfig/network/ifcfg-enp0s3 <<-EOF
    BOOTPROTO='dhcp'
    MTU=''
    REMOTE_IPADDR=''
    STARTMODE='onboot'
    EOF
    # But some boards still have eth0 instead of enpXsY
    cat > /etc/sysconfig/network/ifcfg-eth0 <<-EOF
    BOOTPROTO='dhcp'
    MTU=''
    REMOTE_IPADDR=''
    STARTMODE='onboot'
    EOF
    ;;
    *)
    # XXX extend to more boards
    cat > /etc/sysconfig/network/ifcfg-eth0 <<-EOF
    BOOTPROTO='dhcp'
    MTU=''
    REMOTE_IPADDR=''
    STARTMODE='onboot'
    EOF
    ;;
esac

#======================================
# Configure chronyd
#--------------------------------------

# tell e2fsck to ignore the time differences
cat > /etc/e2fsck.conf <<EOF
[options]
broken_system_clock=true
EOF

# /etc/chronyd.conf has already one openSUSE ntp pool
# for i in 0 1 2 3; do
#     echo "server $i.opensuse.pool.ntp.org iburst" >> /etc/chronyd.conf
# done

#======================================
# Trigger {jeos,yast2}-firstboot on first boot
# XXX It breaks more than it helps for now, just disable it
#--------------------------------------
# if [ -e /usr/lib/systemd/system/jeos-firstboot.service ]; then
#     touch /var/lib/YaST2/reconfig_system
#     suseInsertService jeos-firstboot
# fi

#======================================
# Snapper quota requires a config file
#--------------------------------------
if [ -x /usr/bin/snapper ]; then
    echo "creating initial snapper config ..."
    # we can't call snapper here as the .snapshots subvolume
    # already exists and snapper create-config doens't like
    # that.
    cp /etc/snapper/config-templates/default /etc/snapper/configs/root
    baseUpdateSysConfig /etc/sysconfig/snapper SNAPPER_CONFIGS root
fi

#======================================
# Disable systemd-firstboot
#--------------------------------------
# While it's a good idea to adapt the image according to user's preferences,
# people seem to want to run headless systems, so stalling the boot is a
# really bad idea. Disable firstboot for now ... (boo#1020019)
# rm -f /usr/lib/systemd/system/systemd-firstboot.service
rm -f /usr/lib/systemd/system/sysinit.target.wants/systemd-firstboot.service

#======================================
# Latest openssh disables root login by default
# Re-enable it as we do not use 1st boot for now,
# so root is the only account by default
#--------------------------------------

echo -e "\n# Allow root login on ssh\nPermitRootLogin yes" >> /etc/ssh/sshd_config

#======================================
# Load panel-tfp410 before omapdrm
#---
if [[ "$kiwi_iname" == *"-beagle" || "$kiwi_iname" == *"-panda" ]]; then
    cat > /etc/modprobe.d/50-omapdrm.conf <<EOF
# Ensure that panel-tfp410 is loaded before omapdrm
softdep omapdrm pre: panel-tfp410
EOF
fi

#======================================
# Load cros-ec-keyb (on board keyboard), tune touchpad 
# and map function keys for chromebook (snow)
#---
if [[ "$kiwi_iname" == *"-chromebook" ]]; then
    cat > /etc/modules-load.d/cros-ec-keyb.conf <<EOF
# Load cros-ec-keyb (on board keyboard)
cros-ec-keyb
EOF

    cat > /etc/X11/xorg.conf.d/50-touchpad.conf << EOF
Section "InputClass"
    Identifier "touchpad"
    MatchIsTouchpad "on"
    Option "FingerHigh" "5"
    Option "FingerLow" "5"
EndSection
EOF

# FIXME: This config will be lost once Xmodmap package will be updated
    cat > /etc/X11/Xmodmap << EOF
! Map the Chrombook function keys
keycode 67 = XF86Back F1 F1 F1 F1 XF86Switch_VT_1
keycode 68 = XF86Forward F2 F2 F2 F2 XF86Switch_VT_2
keycode 69 = XF86Refresh F3 F3 F3 F3 XF86Switch_VT_3
!keycode 70 =  F4 F4 XF86Switch_VT_4
keycode 71 = XF86Display F5 F5 F5 F5 XF86Switch_VT_5
keycode 72 = XF86MonBrightnessDown F6 F6 F6 F6 XF86Switch_VT_6
keycode 73 = XF86MonBrightnessUp F7 F7 F7 F7 XF86Switch_VT_7
keycode 74 = XF86AudioMute F8 F8 F8 F8 XF86Switch_VT_8
keycode 75 = XF86AudioLowerVolume F9 F9 F9 F9 XF86Switch_VT_9
keycode 76 = XF86AudioRaiseVolume F10 F10 F10 F10 XF86Switch_VT_10
EOF

fi

#======================================
# Load useful modules not auto-loaded for i.MX6 boards (SabreLite)
#---
if [[ "$kiwi_iname" == *"-sabrelite" ]]; then
    cat > /etc/modules-load.d/imx6.conf <<EOF
# Load imx6q-cpufreq to make use of cpufreq
imx6q-cpufreq
EOF
fi

#======================================
# Import trusted keys
#--------------------------------------
for i in /usr/lib/rpm/gnupg/keys/gpg-pubkey*asc; do
    # importing can fail if it already exists
    rpm --import $i || true
done

#======================================
# Initrd fixes (for 2nd boot only. 1st boot modules are handled by *.kiwi files)
#--------------------------------------
if [[ "$kiwi_iname" == *"-arndale" ]] || [[ "$kiwi_iname" == *"-chromebook" ]]; then
    echo 'add_drivers+=" i2c-exynos5 tps65090-regulator sdhci-pltfm sdhci-s3c mmc_core mmc_block dwc3-exynos dw_dmac dw_mmc dw_wdt dw_mmc-exynos dw_mmc-pltfm dw_dmac dw_dmac_core usb-storage uas usbcore usb-common ehci-hcd ehci-exynos phy-exynos-usb2 phy-generic phy-exynos-dp-video phy-exynos-mipi-video exynosdrm analogix_dp mwifiex_sdio pwrseq_simple btmrvl_sdio "' >  /etc/dracut.conf.d/exynos_modules.conf
fi

if [[ "$kiwi_iname" == *"-chromebook" ]]; then
    echo 'add_drivers+=" cros_ec_devs nxp_ptn3460 pwm-samsung  i2c_mux i2c_arb_gpio_challenge "' >> /etc/dracut.conf.d/exynos_modules.conf
fi

if [[ "$kiwi_iname" == *"-beagle" || "$kiwi_iname" == *"-panda" ]]; then
    # OMAP DMA is needed for MMC
    echo 'add_drivers+=" omap_dma "' > /etc/dracut.conf.d/omap_modules.conf
fi

if [[ "$kiwi_iname" == *"-beaglebone" ]]; then
    echo 'add_drivers+=" tda998x "' > /etc/dracut.conf.d/beagleboneblack_modules.conf
fi

if [[ "$kiwi_iname" == *"-pine64" ]] || [[ "$kiwi_iname" == *"-cubietruck" ]] || [[ "$kiwi_iname" == *"-cubieboard"* ]] || [[ "$kiwi_iname" == *"olinuxino"* ]]; then
    echo 'add_drivers+=" fixed sunxi-mmc axp20x-regulator axp20x-rsb "' > /etc/dracut.conf.d/sunxi_modules.conf
fi

if [[ "$kiwi_iname" == *"-sabrelite" ]]; then
    echo 'add_drivers+=" ahci_imx imxdrm imx_ipuv3_crtc imx_ldb "' > /etc/dracut.conf.d/sabrelite_modules.conf
fi

# In 4.8 sdhci_bcm2835 was dropped in favor of sdhci-iproc.
# Leave sdhci_bcm2835 in place for 4.7 and :Contrib:RaspberryPi{,2}.

if [[ "$kiwi_iname" == *"-raspberrypi1" ]]; then
    echo 'add_drivers+=" sdhci_bcm2835 sdhci-iproc bcm2835_dma dwc2 "' > /etc/dracut.conf.d/raspberrypi_modules.conf
    echo '# The vc4 driver does not support rpi1 (yet)' > /etc/modprobe.d/90-blacklist-vc4.conf
    echo '# so blacklist it to use simplefb instead. (boo#996614)' >> /etc/modprobe.d/90-blacklist-vc4.conf
    echo 'blacklist vc4' >> /etc/modprobe.d/90-blacklist-vc4.conf
fi

if [[ "$kiwi_iname" == *"-raspberrypi2" ]]; then
    echo 'add_drivers+=" sdhci_bcm2835 sdhci-iproc bcm2835_dma mmc_block dwc2 "' > /etc/dracut.conf.d/raspberrypi_modules.conf
fi

if [[ "$kiwi_iname" == *"-raspberrypi" ]]; then
    echo 'add_drivers+=" sdhci-iproc bcm2835-sdhost bcm2835_dma mmc_block dwc2 "' > /etc/dracut.conf.d/raspberrypi_modules.conf
fi

if [[ "$kiwi_iname" == *"-socfpgade0nanosoc" ]]; then
    echo 'add_drivers+=" dw_mmc-pltfm mmc_core mmc_block dw_mmc dw_wdt "' > /etc/dracut.conf.d/socfpga_modules.conf
fi

if [[ "$kiwi_iname" == *"-odroidc2" || "$kiwi_iname" == *"-nanopik2" ]]; then
    echo 'add_drivers+=" fixed gpio-regulator "' > /etc/dracut.conf.d/meson_gxbb_modules.conf
fi

if [[ "$kiwi_iname" == *"-efi"* ]]; then
    echo 'add_drivers+=" gpio-regulator virtio_gpu "' > /etc/dracut.conf.d/efi_modules.conf
fi

if [[ "$kiwi_iname" == *"-rock64" ]]; then
    echo 'add_drivers+=" dw_mmc-rockchip fixed rk808 rk808-regulator i2c-rk3x "' > /etc/dracut.conf.d/rock64_modules.conf
fi

if [[ "$kiwi_iname" == *"-pinebookpro" || "$kiwi_iname" == *"-rockpro64" || "$kiwi_iname" == *"-rockpi4" ]]; then
    echo 'add_drivers+=" sdhci-of-dwcmshc fixed "' > /etc/dracut.conf.d/rk3399_modules.conf
fi

if [[ "$kiwi_iname" == *"-hikey960" ]]; then
    echo 'add_drivers+=" reset-hi3660 k3dma dw_mmc-k3 fixed hi6421-pmic-core hi6421v530-regulator ufs_hisi "' > /etc/dracut.conf.d/hikey960_modules.conf
fi

if [[ $kiwi_iname == *-hifiveunleashed ]]; then
    cat > /etc/dracut.conf.d/hifiveunleashed_modules.conf <<EOF
force_drivers+=" mmc-spi "
EOF
fi

#==========================================
# Kiwi-ng: hook-scripts/* does not work anymore, so we must use dracut hooks instead.
# See: http://suse.github.io/kiwi/overview/workflow.html#boot-image-hook-scripts
#------------------------------------------
if [[ "$kiwi_iname" == *"-chromebook" ]]; then
    mkdir -p /usr/lib/dracut/modules.d/90chromebook

    cat >> /etc/dracut.conf.d/90chromebook.conf <<-"EOF"
add_dracutmodules+=" chromebook "
EOF

    cat >> /usr/lib/dracut/modules.d/90chromebook/fix_partition.sh <<-"EOF"
#!/bin/bash

type deactivate_all_device_maps >/dev/null 2>&1 || . /lib/kiwi-lib.sh
type lookup_disk_device_from_root >/dev/null 2>&1 || . /lib/kiwi-lib.sh
diskname=$(lookup_disk_device_from_root)

deactivate_all_device_maps

# Enable bootflag on partition 3 (u-boot now looks for bootscripts/dtb on bootable partitions only)
parted $diskname set 3 boot on

# CGPT magic
cgpt add -t kernel -i 2 -S 1 -T 5 -P 10 -l U-BOOT $diskname

systemctl daemon-reload
EOF
    cat >> /usr/lib/dracut/modules.d/90chromebook/module-setup.sh <<-"EOF" 
#!/bin/bash

check() {
    require_binaries cgpt parted
    return 0
}

depends() {
    echo rootfs-block dm kiwi-lib
    return 0
}

installkernel() {
    # load required kernel modules when needed
    return 0
}

install() {
    declare moddir=${moddir}
    inst_multiple cgpt parted
    inst_hook pre-mount 30 "${moddir}/fix_partition.sh"
}
EOF

fi

#======================================
# Configuration for Pinephone
#--------------------------------------
if [[ "$kiwi_iname" == *"-pinephone"* ]]; then

    # As some apps are currently not adapted to work in small displays we delete the icons from Desktop Manager
    mkdir -p /etc/skel/.local/share/applications
    cp -t /etc/skel/.local/share/applications/ /usr/share/applications/YaST2/*.desktop /usr/share/applications/org.opensuse.yast.Packager.desktop
    echo "NoDisplay=true" | tee -a /etc/skel/.local/share/applications/*.desktop

    # User pine needed with numerical password for unlocking PHOSH
    useradd -m pine
    echo -e "1234\n1234" | (passwd pine)

    groupadd plugdev
    groupadd netdev
    usermod -a -G plugdev,audio,video,dialout,render,input,netdev pine

    # Set Hostname
    echo "openSUSE" > /etc/hostname
    # We only use NetworkManager for networking
    # One does not want to have ssh running in every public wifi, specially on a smartphone
    systemctl disable wicked sshd.service || true
    systemctl enable NetworkManager firewalld || true
    systemctl disable NetworkManager-wait-online.service

    #Enabling basic services
    systemctl enable eg25-manager.service pinephone-modem-boot.service pinephone-boot.service pinephone-gps.service pinephone-agps.service pinephone-agps.timer
    if [[ "$kiwi_iname" == *"PHOSH-pinephone"* ]]; then
        systemctl enable phosh.service
    elif [[ "$kiwi_iname" == *"PLAMO-pinephone"* ]]; then
        systemctl enable ofono.service greetd.service hfd-service.service
    fi
else
    # if NetworkManager is installed, then we want to use it... unfortunately, wicked gets pulled in always:
    # added wicked-service@openSUSE:Factory:ARM/standard because of sysconfig:/sbin/ifup :-(
    if rpm -q NetworkManager; then
        systemctl disable network || true
        systemctl enable NetworkManager || true
    fi
fi

#======================================
# Umount kernel filesystems
#--------------------------------------
baseCleanMount

exit 0
schaefi commented 3 years ago

ok looking at the full log showed several issues:

[  342s] [ DEBUG   ]: 00:12:07 | DEPRECATED: baseCleanMount() is obsolete
[  342s] [ DEBUG   ]: 00:12:07 | [
[  342s] [ DEBUG   ]: 00:12:07 | Cleanup operations are a responsibility of the kiwi code
[  342s] [ DEBUG   ]: 00:12:07 | ]
[  342s] [ DEBUG   ]: 00:12:07 | --------------out stop--------------
[  342s] [ DEBUG   ]: 00:12:07 | --------------err start-------------
[  342s] [ DEBUG   ]: 00:12:07 | Created symlink /etc/systemd/system/multi-user.target.wants/sshd.service -> /usr/lib/systemd/system/sshd.service.
[  342s] Created symlink /etc/systemd/system/multi-user.target.wants/chronyd.service -> /usr/lib/systemd/system/chronyd.service.
[  342s] sed: can't read /etc/vimrc: No such file or directory
[  342s] 
[  342s] [ DEBUG   ]: 00:12:07 | --------------err stop--------------

See the deprecation error ? You are using a method that is marked obsolete since ~2years and now became a deprecated resulting in an error. I'm afraid we realized people never clean up their scripts unless we somehow enforce it. After such a long time of living with obsolete code I think it was time to make the next step.

For you this means:

Next you can see your script has several other issues which are never expose because you end your script with an exit 0. This is now only visible because the deprecation method in kiwi exits the script.

You can leave all that after dropping the baseCleanMount call but I strongly recommend to cleanup the script

I'm closing the issue as I think with the provided information you will be able to fix it. If there are concerns or problems that prevents you from solving it please feel free to open another issue.

Thanks

ggardet commented 3 years ago

Thanks for the hints. Build is fine now!

dcermak commented 3 years ago

@dcermak can you imagine this to be related to the scripting changes ? I doubt it

I know that this has been fixed already. Iirc this is a fallout of the /usr/etc/ <-> /etc/ split being in place now.