dmsquash dracut errors out building live ISO

593 views
Skip to first unread message

D Bahi

unread,
Oct 11, 2019, 12:45:50 AM10/11/19
to kiwi
Hopefully a quick one, m.s. and crew,

I've tried latest kiwi from V:A/Builder and latest from leap 15.1 updates
and both tumbleweed and leap15.1 JeOS templates from https://github.com/OSInside/kiwi-descriptions
changing only "overlay" to "dmsquash" to build a Live ISO image suitable for PXE booting.

However, building on leap 15.1 and get the ERROR at the end ... for all 4 cases

Are the templates missing something easy (like some bootincludes pkgs for dmsquash)?

TIA

d.b.

[ INFO    ]: 00:35:48 | Cleaning up SystemPrepare instance
[ WARNING ]: 00:35:48 | Path /home/admin/suse-leap-15.1-JeOS/out/build/image-root/sys not a mountpoint
[ WARNING ]: 00:35:48 | Path /home/admin/suse-leap-15.1-JeOS/out/build/image-root/proc not a mountpoint
[ WARNING ]: 00:35:48 | Failed to remove directory hierarchy /home/admin/suse-leap-15.1-JeOS/out/build/image-root/var/cache/kiwi: rmdir: stderr: rmdir: failed to remove '/home'
, stdout: (no output on stdout)
[ INFO    ]: 00:35:48 | Creating system image
[ INFO    ]: 00:35:48 | Using following live ISO metadata:
[ INFO    ]: 00:35:48 | --> Application id: 0xa5f67de7
[ INFO    ]: 00:35:48 | --> Publisher: SUSE LINUX GmbH
[ INFO    ]: 00:35:48 | --> Volume id: CDROM
[ INFO    ]: 00:35:48 | Packing system into dracut live ISO type: dmsquash
[ INFO    ]: 00:35:48 | Using calculated size: 1276 MB
[ INFO    ]: 00:35:48 | --> Syncing data to ext4 root image
[ INFO    ]: 00:35:57 | --> Creating squashfs container for root image
[ INFO    ]: 00:36:17 | Setting up isolinux bootloader configuration
[ WARNING ]: 00:36:17 | root=UUID=<uuid> setup requested, but uuid is not provided
[ INFO    ]: 00:36:17 | Creating isolinux live ISO config file from template
[ INFO    ]: 00:36:17 | --> Using standard ISO template
[ INFO    ]: 00:36:17 | Writing isolinux.cfg file
[ INFO    ]: 00:36:17 | Setting up EFI grub bootloader configuration
[ INFO    ]: 00:36:18 | Creating grub2 bootloader images
[ INFO    ]: 00:36:18 | --> Creating identifier file 0xa5f67de7
[ INFO    ]: 00:36:18 | --> Using prebuilt unsigned efi image
[ INFO    ]: 00:36:18 | Creating grub2 live ISO config file from template
[ WARNING ]: 00:36:18 | root=UUID=<uuid> setup requested, but uuid is not provided
[ INFO    ]: 00:36:18 | --> Using standard boot template
[ INFO    ]: 00:36:18 | Writing grub.cfg file
[ INFO    ]: 00:36:18 | Writing /home/admin/suse-leap-15.1-JeOS/out/live-media.ik4ln9lu/EFI/BOOT/grub.cfg file to be found by EFI firmware
[ INFO    ]: 00:36:18 | Writing grub2 defaults file
[ INFO    ]: 00:36:18 | Writing sysconfig bootloader file
[ INFO    ]: 00:36:18 | Creating .profile environment
[ INFO    ]: 00:36:18 | Creating live ISO boot image
[ INFO    ]: 00:36:18 | Creating generic dracut initrd archive
[ ERROR   ]: 00:36:19 | KiwiCommandError: chroot: stderr: dracut: Executing: /usr/bin/dracut --force --no-hostonly --no-hostonly-cmdline --xz --install /.profile liveleap.x86_64-1.15.1.initrd.xz 4.12.14-lp151.27-default
dracut: dracut module 'modsign' will not be installed, because command 'keyctl' could not be found!
dracut: dracut module 'url-lib' will not be installed, because command 'curl' could not be found!
dracut: dracut module 'btrfs' will not be installed, because command 'btrfs' could not be found!
dracut: dracut module 'crypt' will not be installed, because command 'cryptsetup' could not be found!
dracut: dracut module 'dmraid' will not be installed, because command 'dmraid' could not be found!
dracut: dracut module 'url-lib' will not be installed, because command 'curl' could not be found!
dracut: dracut module 'livenet' depends on 'url-lib', which can't be installed
dracut: dracut module 'mdraid' will not be installed, because command 'mdadm' could not be found!
dracut: dracut module 'multipath' will not be installed, because it's in the list to be omitted!
dracut: dracut module 'cifs' will not be installed, because command 'mount.cifs' could not be found!
dracut: dracut module 'fcoe' will not be installed, because command 'dcbtool' could not be found!
dracut: dracut module 'fcoe' will not be installed, because command 'fipvlan' could not be found!
dracut: dracut module 'fcoe' will not be installed, because command 'lldpad' could not be found!
dracut: dracut module 'fcoe' will not be installed, because command 'fcoemon' could not be found!
dracut: dracut module 'fcoe' will not be installed, because command 'fcoeadm' could not be found!
dracut: dracut module 'fcoe-uefi' will not be installed, because command 'dcbtool' could not be found!
dracut: dracut module 'fcoe-uefi' will not be installed, because command 'fipvlan' could not be found!
dracut: dracut module 'fcoe-uefi' will not be installed, because command 'lldpad' could not be found!
dracut: dracut module 'iscsi' will not be installed, because command 'iscsi-iname' could not be found!
dracut: dracut module 'iscsi' will not be installed, because command 'iscsiadm' could not be found!
dracut: dracut module 'iscsi' will not be installed, because command 'iscsid' could not be found!
dracut: dracut module 'nbd' will not be installed, because command 'nbd-client' could not be found!
dracut: 95nfs: Could not find any command of 'rpcbind portmap'!
dracut: dracut module 'livenet' cannot be found or installed.
, stdout: (no output on stdout)
[ INFO    ]: 00:36:19 | Cleaning up FileSystemExt4 instance
[ INFO    ]: 00:36:19 | Cleaning up LoopDevice instance
[ INFO    ]: 00:36:19 | Cleaning up LiveImageBuilder instance
[ INFO    ]: 00:36:19 | Cleaning up BootImageDracut instance

David Cassany

unread,
Oct 11, 2019, 3:58:12 AM10/11/19
to kiwi-...@googlegroups.com
Hi

> I've tried latest kiwi from V:A/Builder and latest from leap 15.1 updates
> and both tumbleweed and leap15.1 JeOS templates from
> https://github.com/OSInside/kiwi-descriptions
> changing only "overlay" to "dmsquash" to build a Live ISO image suitable
> for PXE booting.

JFY, probably you already saw it, but `overlay` images can also be PXEBooted
see https://osinside.github.io/kiwi/building/working_with_images/
pxe_live_iso_boot.html

>
> However, building on leap 15.1 and get the ERROR at the end ... for all 4
> cases
>
> Are the templates missing something easy (like some bootincludes pkgs for
> dmsquash)?

Well the templates are not missing anything, what happens is that using a
different dracut modules causes different core utilities to be needed. Anyway
I agree that the template probably should include whatever is needed to be
used using either `overlay` or `dmsquash`. Afterall those are all basic
utilities suitable for almost any system out there.

The answer is in the dracut call output:

> [ ERROR ]: 00:36:19 | KiwiCommandError: chroot: stderr: dracut:
> Executing: /usr/bin/dracut --force --no-hostonly --no-hostonly-cmdline --xz
> --install /.profile liveleap.x86_64-1.15.1.initrd.xz
> 4.12.14-lp151.27-default
> dracut: dracut module 'modsign' will not be installed, because command
> 'keyctl' could not be found!
> dracut: dracut module 'url-lib' will not be installed, because command
> 'curl' could not be found!

Aha! There is no curl in your image :) Just add this package and it will start
building

> dracut: dracut module 'btrfs' will not be installed, because command
> 'btrfs' could not be found!
> dracut: dracut module 'crypt' will not be installed, because command
> 'cryptsetup' could not be found!
> dracut: dracut module 'dmraid' will not be installed, because command
> 'dmraid' could not be found!
> dracut: dracut module 'url-lib' will not be installed, because command
> 'curl' could not be found!
> dracut: dracut module 'livenet' depends on 'url-lib', which can't be
> installed

See livenet is complaining about missing url-lib.
Livenet module causes the dracut failure as it is a hard requirement for
dmsquash.

> , stdout: (no output on stdout)
> [ INFO ]: 00:36:19 | Cleaning up FileSystemExt4 instance
> [ INFO ]: 00:36:19 | Cleaning up LoopDevice instance
> [ INFO ]: 00:36:19 | Cleaning up LiveImageBuilder instance
> [ INFO ]: 00:36:19 | Cleaning up BootImageDracut instance

Regards,
David

signature.asc

D Bahi

unread,
Oct 11, 2019, 12:13:00 PM10/11/19
to kiwi
Thanks d.c.

if anyone else cares mods to the last "iso" section:

    <packages type="iso">

adding these packages seems to have done the trick (at least it builds now):

        <package name="curl"/>
        <package name="btrfsprogs"/>
        <package name="cryptsetup"/>
        <package name="dmraid"/>
        <package name="mdadm"/>
        <package name="cifs-utils"/>
        <package name="vlan"/>
        <package name="lldpd"/>
        <package name="fcoe-utils"/>
        <package name="open-iscsi"/>
        <package name="nbd"/>

Stefan Seyfried

unread,
Oct 13, 2019, 12:22:23 PM10/13/19
to kiwi-...@googlegroups.com
Am 11.10.19 um 09:58 schrieb David Cassany:
> Hi
>
>> I've tried latest kiwi from V:A/Builder and latest from leap 15.1 updates
>> and both tumbleweed and leap15.1 JeOS templates from
>> https://github.com/OSInside/kiwi-descriptions
>> changing only "overlay" to "dmsquash" to build a Live ISO image suitable
>> for PXE booting.

This works for me with SLES15:
https://build.opensuse.org/package/show/home:seife:kiwitest/SLES_15SP0_ks-config-iso
and I have no reason to believe it stopped working for newer releases.
So diff your package list to mine and one of them might be the reason it
fails.

> JFY, probably you already saw it, but `overlay` images can also be PXEBooted
> see https://osinside.github.io/kiwi/building/working_with_images/
> pxe_live_iso_boot.html

Sorry, but this is the most convulted and IMVHO ridiculous way to PXE
boot a live iso, when dracut upstream provides a much easier way :-)
There might be reasons for using the AOE stunt (e.g. being severely
memory restricted) that justify the work to set this up, but usually
just using dmsquash is much easier.

Have fun,

Stefan
--
Stefan Seyfried

"For a successful technology, reality must take precedence over
public relations, for nature cannot be fooled." -- Richard Feynman

Marcus Schäfer

unread,
Oct 15, 2019, 8:52:46 AM10/15/19
to 'Stefan Seyfried' via kiwi
Hi,

> Sorry, but this is the most convulted and IMVHO ridiculous way to PXE
> boot a live iso, when dracut upstream provides a much easier way :-)
> There might be reasons for using the AOE stunt (e.g. being severely
> memory restricted) that justify the work to set this up, but usually
> just using dmsquash is much easier.

You are right, the memory restriction was the reason for having an
alternative way. At that time we though about iSCSI or AoE. Ata over
ethernet is easier to be setup on the host compared to iSCSI.
That's why AoE was used and it sounded promising. Over time we found
out that the aoe module does not work reliably in mixed kernel
environments. I can't tell why but due to that reason it was not
used very often. The server serving the device and the client(s)
consuming it could be based on different kernels and my impression
was that the aoe module only works well if server and client are
the same version and kernel. I have to admit I didn't had time to
debug error conditions in a way that it would be helpful for the
developers, and to be completely honest I thought it would just
self heal when aoe becomes more mature.

Just some background information on the AoE topic

Thanks

Regards,
Marcus
--
Public Key available via: https://keybase.io/marcus_schaefer/key.asc
keybase search marcus_schaefer
-------------------------------------------------------
Marcus Schäfer (Res. & Dev.) SUSE Software Solutions Germany GmbH
Tel: 0911-740 53 0 Maxfeldstrasse 5
FAX: 0911-740 53 479 D-90409 Nürnberg
HRB: 21284 (AG Nürnberg) Germany
GF: Felix Imendörffer, Jane Smithard, Graham Norton
http://www.suse.de
-------------------------------------------------------

D Bahi

unread,
Oct 15, 2019, 5:14:41 PM10/15/19
to kiwi
Thanks all, for your help with the KIWI half ...

Now I will pester you about dracut kernel args for live squash (undeservedly - i'm sorry - but this appears to be very specific and arcane knowledge given its non-presence in "HOWTOs" on the web.)

The PXE kernel args for this to work now, as is dracut being dumb about the network? 'ip=dhcp' as a kernel arg doesn't seem to do the trick.

https://mirrors.edge.kernel.org/pub/linux/utils/boot/dracut/dracut.html#NetworkBoot

A given node PXE boots just fine. (EFI with grub.efi and gets grub.cfg menu just fine (just like the big distros -- apparently syslinux 6.x has issues so no "default" menu.c32 over serial for me now).

Yet after loading linux/initrd it just churns "dracut-initqueue timeout" and then drops to prompt for dracut shell.

In that shell I CAN "dhclient" and get the single interface an IP (HORRAY!), and then invoke dracut-initqueue manually... and that appears to work, but i don't know how to drive dracut forward thru its stages to get the system booted to be sure.


debug follows:

FAILURE

[  233.902250] dracut-initqueue[971]: Warning: dracut-initqueue timeout - starting timeout scripts
[  234.473740] dracut-initqueue[971]: Warning: dracut-initqueue timeout - starting timeout scripts
         Starting Setup Virtual Console...
[  234.499586] dracut-initqueue[971]: Warning: Could not boot.
[  OK  ] Started Setup Virtual Console.
         Starting Dracut Emergency Shell...
Warning: /dev/root does not exisPress Enter for maintenance
(or press Control-D to continue): 

NO IP

sh-5.0# ip ad
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 24:8a:07:88:3d:96 brd ff:ff:ff:ff:ff:ff

GET IP

sh-5.0# dhclient
[ 2165.831305] mlx5_core 0000:02:00.0 ens1: Link up
[ 2165.850917] IPv6: ADDRCONF(NETDEV_CHANGE): ens1: link becomes ready
[ 2165.887255] NET: Registered protocol family 17
sh-5.0# ip ad
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 24:8a:07:88:3d:96 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.136/24 brd 192.168.2.255 scope global dynamic ens1
       valid_lft 3596sec preferred_lft 3596sec
    inet6 fe80::268a:7ff:fe88:3d96/64 scope link 
       valid_lft forever preferred_lft forever

NOW TRY WHERE IT WAS STUCK

sh-5.0# dracut-initqueue 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  385M  100  385M    0     0  1096M      0 --:--:-- --:--:-- --:--:-- 1096M
[ 3637.455866] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 3637.510286] Copying live image to RAM...
[ 3637.518160]  (this may take a minute)
[ 3638.433091] Done copying live image to RAM.


LOOKS LIKE ITS WORKING

sh-5.0# ls /run/initramfs/live
LiveOS boot

TRY TO GET ROOT

sh-5.0# dracut-mount               
Warning: Can't mount root filesystem

BAH - IGNORE THAT

sh-5.0# mkdir /mnt
sh-5.0# mount /run/initramfs/live/LiveOS/squashfs.img /mnt 
sh-5.0# mount /mnt/LiveOS/rootfs.img /root 
[ 5418.570706] EXT4-fs (loop5): mounted filesystem with ordered data mode. Opts: (null)
sh-5.0# ls /root/
bin   dev  home  lib64      mnt  proc run   selinux  sys  usr
boot  etc  lib lost+found  opt  root sbin  srv      tmp  var

EXIT THE DRACUT SHELL

Welcome to openSUSE Tumbleweed 20191012 - Kernel 5.3.5-1-default (ttyS1).

SSH host key: SHA256:8KBp1OYe5e9hja/hd664Dvn/ce0G0lfcjC8FVC6W7so (RSA)
SSH host key: SHA256:XY6a3rsryAggRVXOnUdj0ppMyJbWmssf5A+gtGtmYmc (ED25519)
SSH host key: SHA256:GL46u89FtLw2jZSdBSYrPnLxsU7iHs7OpypGSPc1rsc (DSA)
SSH host key: SHA256:EHlekE4jEU21CZAHHfGOoaw9dLpCEU3462j3cKfz118 (ECDSA)


localhost login: root
Password: 
This is the Tumbleweed JeOS SuSE Linux System.
To upgrade your system call:

        zypper refresh
        zypper up

Have a lot of fun...


Marcus Schäfer

unread,
Oct 16, 2019, 3:01:16 AM10/16/19
to kiwi-...@googlegroups.com, stefan....@sap.com
Hi,

> ... and then drops to prompt for dracut shell.
> In that shell I CAN "dhclient" and get the single interface an IP
> (HORRAY!), and then invoke dracut-initqueue manually... and that
> appears to work,

Sounds like you might be missing some required network parameters.
Usually the dracut network setup code should be triggered if you pass:

rd.neednet=1 ip=dhcp

This forces the network setup and loops over all interfaces and assigns
an ip to the first valid DHCP path

I also think Stefan Seifrid (CC'ed) can help you with that setup

D Bahi

unread,
Oct 16, 2019, 9:56:33 AM10/16/19
to kiwi
Hi


On Wednesday, October 16, 2019 at 3:01:16 AM UTC-4, Marcus Schäfer wrote:
Hi,

>    ... and then drops to prompt for dracut shell.
>    In that shell I CAN "dhclient" and get the single interface an IP
>    (HORRAY!), and then invoke dracut-initqueue manually... and that
>    appears to work,

Sounds like you might be missing some required network parameters.
Usually the dracut network setup code should be triggered if you pass:

   rd.neednet=1 ip=dhcp

This forces the network setup and loops over all interfaces and assigns
an ip to the first valid DHCP path

I also think Stefan Seifrid (CC'ed) can help you with that setup



Stefan, do you have the magic formula? Because this isn't working for me :(

menuentry "Live openSUSE Tumbleweed for x86_64" {
 echo 'Loading kernel ...'
 linuxefi /boot/x86_64/suse/live/test/linux \
 splash=off console=tty0 console=ttyS1,57600n8 \
 earlyprintk=serial,ttyS1,57600n8 biosdevname=0 \
 rd.neednet=1 ip=dhcp rd.live.ram=1 rd.live.image \
 rd.live.overlay.persistent rd.live.overlay.cowfs=ext4 \
 echo 'Loading initial ramdisk ...'
 initrdefi /boot/x86_64/suse/live/test/initrd
}
 
just get ...

dracut-initqueue[1020]: Warning: dracut-initqueue timeout - starting timeout scripts

and leaves me having to do:

  dhclient
  dracut-initqueue
  exit

to work-around and this just won't do :)

Thanks so much folks.

Marcus Schäfer

unread,
Oct 16, 2019, 10:23:45 AM10/16/19
to kiwi-...@googlegroups.com
Hi,

> Stefan, do you have the magic formula? Because this isn't working for
> me :(

Also enable rd.debug, gives us much more information

D Bahi

unread,
Oct 16, 2019, 11:17:30 AM10/16/19
to kiwi
Hi


On Wednesday, October 16, 2019 at 10:23:45 AM UTC-4, Marcus Schäfer wrote:
Hi,

>    Stefan, do you have the magic formula? Because this isn't working for
>    me :(

Also enable rd.debug, gives us much more information


Of course! Attached.
dracut-debug.log.tbz

Marcus Schäfer

unread,
Oct 17, 2019, 3:17:05 AM10/17/19
to kiwi-...@googlegroups.com
Hi,

> Of course! Attached.

I see you are using the livenet feature to fetch the iso from the
network. In your kiwi XML description which live module did you use ?

flags="..."

For livenet usage this must be set to

flags="dmsquash"

because only the upstream dracut dmsquash live module supports
livenet

D Bahi

unread,
Oct 17, 2019, 11:49:00 AM10/17/19
to kiwi
Hi



For livenet usage this must be set to

   flags="dmsquash"

Thanks for the double check, Marcus. Here's the type in use:

        <type image="iso" primary="true" flags="dmsquash" hybrid="true" hybridpersistent_filesystem="ext4" hybridpersistent="true"/>

So it looks like this is down to dracut not doing the dhcp thing.

Marcus Schäfer

unread,
Oct 18, 2019, 3:14:41 AM10/18/19
to kiwi-...@googlegroups.com
Hi,

> Thanks for the double check, Marcus. Here's the type in use:
> <type image="iso" primary="true" flags="dmsquash" hybrid="true"
> hybridpersistent_filesystem="ext4" hybridpersistent="true"/>
> So it looks like this is down to dracut not doing the dhcp thing.

Hmm, yes and I have no idea why. If I'll find something I let you know

Sorry not a very helpful answer

Stefan Seyfried

unread,
Oct 18, 2019, 7:41:04 AM10/18/19
to kiwi-...@googlegroups.com
Hi,

Am 16.10.19 um 09:01 schrieb Marcus Schäfer:
> Hi,
>
>> ... and then drops to prompt for dracut shell.
>> In that shell I CAN "dhclient" and get the single interface an IP
>> (HORRAY!), and then invoke dracut-initqueue manually... and that
>> appears to work,
>
> Sounds like you might be missing some required network parameters.
> Usually the dracut network setup code should be triggered if you pass:
>
> rd.neednet=1 ip=dhcp
>
> This forces the network setup and loops over all interfaces and assigns
> an ip to the first valid DHCP path
>
> I also think Stefan Seifrid (CC'ed) can help you with that setup

I'm booting my image like this:

#!ipxe
set HTTP_BASE http://192.168.42.1:8000
set HTTP_STATE ${HTTP_BASE}/images/sles15
set KERNEL_ARG rd.kiwi.install.pxe net.ifnames=1 video=800x600
set IMAGE_NAME SLES_15GA_pxeimage1.xz
set KERNEL_LINE rd.kiwi.install.pass.bootparam rd.kiwi.install.image=${HTTP_STATE}/${IMAGE_NAME} ${KERNEL_ARG}
BOOTIF=01-${mac:hexhyp}

prompt --key s --timeout 3000 hit 's' for the iPXE shell; continuing in 3 seconds && shell ||
kernel ${HTTP_STATE}/pxeboot.kernel initrd=pxeboot.initrd.xz ${KERNEL_LINE} || goto error
initrd ${HTTP_STATE}/pxeboot.initrd.xz || goto error
boot

:error
prompt --key s --timeout 60000 ERROR, hit 's' for the iPXE shell; reboot in 60 seconds && shell || reboot

####

which boils down to

rd.kiwi.isntall.pxe rd.kiwi.ionstall.image=http://location/of/SLES_15GA_pxeimage1.xz BOOTIF=01-<MAC_ADDRESS>

But that's a pxe installation image, not a live image.

I'll try a live image and report back.

Oh wait, I have a live iso also, for configuring the stuff.

#!ipxe
set HTTP_BASE http://192.168.42.1:8000
set HTTP_STATE ${HTTP_BASE}/images/discover
set KERNEL_ARG net.ifnames=1 video=800x600 root=live:${HTTP_STATE}/SLES_15SP0_ks-config-iso.x86_64-0.3.3-Build1.1.iso
set KERNEL_LINE ${KERNEL_ARG} BOOTIF=01-${mac:hexhyp}

prompt --key s --timeout 3000 hit s for the iPXE shell; continuing in 3 seconds && shell ||
kernel ${HTTP_STATE}/linux initrd=initrd ${KERNEL_LINE} || goto error
initrd ${HTTP_STATE}/initrd || goto error
boot

:error
prompt --key s --timeout 120000 ERROR, hit s for the iPXE shell; reboot in 120 seconds && shell || reboot
####

This resolves to kernel parameter

initrd=initrd root=live:http://location/of/SLES_15SP0_ks-config-iso.x86_64-0.3.3-Build1.1.iso BOOTIF=01-<MAC_ADDR>

I'm booting with ipxe via http, but other methods should also work.

I think that the BOOTIF=... basically does trigger all the "ip=dhcp" etc stuff.
pxelinux can append this with the IPAPPEND parameter, iPXE see above.

Good luck and have fun! ;-)

Stefan Seyfried

unread,
Oct 18, 2019, 7:49:19 AM10/18/19
to kiwi-...@googlegroups.com
Am 18.10.19 um 13:40 schrieb Stefan Seyfried:

> I think that the BOOTIF=... basically does trigger all the "ip=dhcp" etc stuff.
> pxelinux can append this with the IPAPPEND parameter, iPXE see above.

This is the image I'm using for this.

https://build.opensuse.org/package/show/home:seife:kiwitest/SLES_15SP0_ks-config-iso

This is used as a minimal config and discovery system, in the firstboot it downloads the commands to execute, but it
should just boot without.

Maybe try this image, if it boots but your Tumbleweed does not, then we need to check the differences.

Stefan Seyfried

unread,
Oct 18, 2019, 7:51:39 AM10/18/19
to kiwi-...@googlegroups.com
Am 17.10.19 um 17:49 schrieb D Bahi:
> Hi
>
>
>> For livenet usage this must be set to
>>
>> flags="dmsquash"
>>
>
> Thanks for the double check, Marcus. Here's the type in use:
>
> <type image="iso" primary="true" flags="dmsquash" hybrid="true"
> hybridpersistent_filesystem="ext4" hybridpersistent="true"/>

Are you building the image in OBS? If yes, please tell us the project/package name, so we can look at it and download it
for testing.

Stuff like this is hard to diagnose without hands-on debugging ;-)

D Bahi

unread,
Oct 21, 2019, 10:43:17 AM10/21/19
to kiwi
Hi all,

In the end, the last stumbling block was Tumbleweed dracut -- there's some unidentified breakage in there w.r.t. network init / dhcp for live/dmsquash root.

As of now, have a working Leap 15.1 JeOS Live ISO using dmsquash -- PXE booting using dnsmasq and iPXE, for uefi support (not a fan of grub.efi/grub.cfg syntax).

The only thing this fails to do is preserve some of the DHCP options (like DNS) in the target image.

Thank you for all your help folks.

db

My recipe for others if they want to play this way too. Will consider something on OBS soon. Would be my first KIWI image there :)

bits in kiwi.xml
-- This is in addition to the packages mentioned way earlier in this thread.
-- I know there's more than needed in bootstrap ... i was desperately trying to get Tumbleweed to work.

        <type image="iso" primary="true" flags="dmsquash" hybrid="true" hybridpersistent_filesystem="ext4" hybridpersistent="true"/>

    <packages type="bootstrap">
        <package name="udev"/>
        <package name="filesystem"/>
        <package name="glibc-locale"/>
        <package name="cracklib-dict-full"/>
        <package name="ca-certificates"/>
        <package name="openSUSE-release"/>
        <package name="module-init-tools"/>
        <package name="dracut-kiwi-live"/>
<package name="dracut-kiwi-oem-dump"/>
<package name="dracut-kiwi-oem-repart"/>
        <package name="syslinux"/>
    </packages>


bits of dnsmasq.conf

enable-tftp
tftp-root=/srv/tftpboot
dhcp-match=set:bios-x86_64,option:client-arch,6
dhcp-boot=tag:bios-x86_64,pxelinux.0
dhcp-match=set:efi-x86_64,option:client-arch,7
dhcp-match=set:efi-x86_64,option:client-arch,9
dhcp-boot=tag:efi-x86_64,EFI/x86_64/ipxe.efi


ipxe EMBED=chain.ipxe

#!ipxe

dhcp


ipxe menu item on the HTTP server

#!ipxe

set HTTP_PATH http://bang/install

set LIVE suse/live/test
set KERNEL_SERIAL splash=off console=tty0 console=ttyS1,57600n8 earlyprintk=serial,ttyS1,57600n8

:start
menu Please make a selection
item --gap Live Boot
item Live SUSE Leap 15.1 Live PXE
item --gap ipxe shell
item shell Drop to iPXE shell

choose target && goto ${target}

:Live
set LOADER ${HTTP_PATH}/${LIVE}
set LIVE_ISO ${LOADER}/LiveLeap.x86_64-1.0.0.iso
set KERNEL_LIVE rd.live.ram=1 rd.live.image rd.live.overlay.persistent rd.live.overlay.cowfs=ext4 root=live:${LIVE_ISO} BOOTIF=01-${mac:hexhyp}
kernel ${LOADER}/linux initrd=initrd ${KERNEL_SERIAL} ${KERNEL_LIVE}
initrd ${LOADER}/initrd
boot || goto failed

:shell
echo Starting iPXE shell... 
echo Type 'exit' to get the back to the menu
shell
set menu-timeout 0
set submenu-timeout 0
goto start

:failed
echo Booting failed, dropping to shell
goto shell



fully booted Live ISO /proc/cmdline:

linux initrd=initrd splash=off console=tty0 console=ttyS1,57600n8 earlyprintk=serial,ttyS1,57600n8 rd.live.ram=1 rd.live.image rd.live.overlay.persistent rd.live.overlay.cowfs=ext4 root=live:http://bang/install/suse/live/test/LiveLeap.x86_64-1.0.0.iso BOOTIF=01-24-8a-07-88-3d-96


There's likely more than is needed in these kernel args, too, but again I was flailing to get Tumbleweed to work - it didn't - but Leap 15.1 does with this FINALLY.

Thanks again.

Stefan Seyfried

unread,
Oct 21, 2019, 11:35:03 AM10/21/19
to kiwi-...@googlegroups.com
Hi,

Am 21.10.19 um 16:43 schrieb D Bahi:
> Hi all,
>
> In the end, the last stumbling block was Tumbleweed dracut -- there's some
> unidentified breakage in there w.r.t. network init / dhcp for live/dmsquash
> root.

OK, that's good to know. If I get some time, I will try to debug this in tumbleweed in order to get it fixed ;-)

Maybe this bug https://bugzilla.suse.com/show_bug.cgi?id=1152006 is also involved (but then it should not have worked
with 15.1, at least if you have update channels enabled for build).

> As of now, have a working Leap 15.1 JeOS Live ISO using dmsquash -- PXE
> booting using dnsmasq and iPXE, for uefi support (not a fan of
> grub.efi/grub.cfg syntax).

Me too, especially as iPXE can use the same config for both EFI and BIOS boot ;-)

Marcus Schäfer

unread,
Oct 22, 2019, 4:00:19 AM10/22/19
to kiwi-...@googlegroups.com
Hi,

you got it working, great :-)

> In the end, the last stumbling block was Tumbleweed dracut -- there's

TW seems to have some problems these days. Also in obs we currently
can't build for TW because the latest change in obs
(https://lists.opensuse.org/opensuse-factory/2019-10/msg00142.html)
broke it.

> The only thing this fails to do is preserve some of the DHCP options
> (like DNS) in the target image.

Which you probably could setup via overlay files if it's about
static information

> Thank you for all your help folks.

Thanks for your feedback, that is very helpful

I hope TW will become sort of stable soon

D Bahi

unread,
Jan 23, 2020, 12:54:59 PM1/23/20
to kiwi
Hi


On Tuesday, October 22, 2019 at 4:00:19 AM UTC-4, Marcus Schäfer wrote:
Hi,

you got it working, great :-)

>    In the end, the last stumbling block was Tumbleweed dracut -- there's

TW seems to have some problems these days. Also in obs we currently
can't build for TW because the latest change in obs
(https://lists.opensuse.org/opensuse-factory/2019-10/msg00142.html)
broke it.


It _was_ all working with Leap 15.1 and then at some point builds in December (hum, I did update the Leap 15.1 build host) stopped working.

I have a KVM setup to test a Live ISO loaded by one KVM launch and start its own PXE service to allow for the live PXE boot testing of other KVMs (the same image is embedded in the ISO - using the root overlay - so it serves itself via PXE :)

Up till December builds of this image in to an image with all the needed services was doing fine ISO booting and then live PXE booting the peers, but then something changed and it started segfaulting in dracut.  I added update repos to the recipe and now it just sits in dracut after the detecting PCIe devices / link state.

I bring this up as I begin to investigate the delta and try to get back to a working build just to see if anyone knows of any dracut or kiwi changes that would have gone in that might have this effect.

Sorry to keep crying about this, and thanks for any more enlightenment you can share.

db

D Bahi

unread,
Sep 29, 2020, 8:31:37 PM9/29/20
to kiwi
Hello helpful kiwi folks,

FYI the issue that was once in tumbleweed made its way into Leap 15.2

with these kernel args

# cat /proc/cmdline 
linux initrd=initrd root=live:http://<serverip>/suse/live/15dot2plus/Leap-15.2_appliance.x86_64-1.15.2.iso rd.live.ram=1 rd.live.image rd.live.overlay.persistent rd.live.overlay.cowfs=ext4 extra iomem=relaxed BOOTIF=01-<targetmac> postaction=tester rd.debug nomodeset noquiet splash=off console=tty0 console=ttyS1,57600n8 earlyprintk=serial,ttyS1,57600n8

I can use the attached patch (removes graphics, adds dracut dependencies, locks dracut to the version in the 15.1 GA ISO) against the kiwi-description from github and build an ISO that live boots 15.2 with dmsquash and the dracut root=live:<url>.  Hooray.

If I use the dracut version that comes with 15.2 --- and no other differences from those in the patch (only remove the 15.1 repository and the package dracut version string) -- this build fails just as it did so long ago in tumbleweed.

Hope this helps folks with their live image builds.

Thank you for the great tools.

db

On Monday, October 21, 2019 at 11:35:03 AM UTC-4 stefan wrote:
Hi,

Am 21.10.19 um 16:43 schrieb D Bahi:
> Hi all,
>
> In the end, the last stumbling block was Tumbleweed dracut -- there's some
> unidentified breakage in there w.r.t. network init / dhcp for live/dmsquash
> root.

OK, that's good to know. If I get some time, I will try to debug this in tumbleweed in order to get it fixed ;-)

Maybe this bug https://bugzilla.suse.com/show_bug.cgi?id=1152006 is also involved (but then it should not have worked
with 15.1, at least if you have update channels enabled for build).
...
suse-leap-15.2_config.xml.patch

Marcus Schäfer

unread,
Sep 30, 2020, 3:27:19 AM9/30/20
to kiwi-...@googlegroups.com
Hi David,

> FYI the issue that was once in tumbleweed made its way into Leap 15.2
> with these kernel args
>
>
> I can use the attached patch (removes graphics, adds dracut
> dependencies, locks dracut to the version in the 15.1 GA ISO) against
> the kiwi-description from github and build an ISO that live boots 15.2
> with dmsquash and the dracut root=live:<url>. Hooray.

ok

> If I use the dracut version that comes with 15.2 --- and no other
> differences from those in the patch (only remove the 15.1 repository
> and the package dracut version string) -- this build fails just as it
> did so long ago in tumbleweed.

Hmm, it seems there is a use case that is not really in the test
coverage.

Thanks for the feedback. I'll definitly keep your info here as a
backup but I think it would also be great if you can sumarize the
information and create a bug on https://bugzilla.suse.com/ against
dracut-ma...@suse.de

My feeling is that this is not on anybodys radar and thus the
TW dracut will inherit against all newer versions of Leap and
maybe SLES too

> Hope this helps folks with their live image builds.

It does, thanks for reporting. Let me know if have trouble reporting
against dracut or if you feel ignored. We will kick in then
signature.asc
Reply all
Reply to author
Forward
0 new messages