Hi J,
> The changes are almost always in the .raw disk image. Mainly the
> changes are in scripts that configure the hardware in a rack of up to
> 14 computers.
ok got it and thanks for the background information.
Going forward I suggest to use installpxe="true" and a setup
using dnsmasq and QEMU for proof of concept testing without
harming your existing PXE boot infrastructure.
So here is how I would proceed:
1. In your development image <type> set
<type image="oem" ... installpxe="true"/>
And build this image. As part of the results you get
Some-Name.install.tar
2. Unpack that .install.tar into an extra directory
mkdir result
tar -C result -xf Some-Name.install.tar
3. Next take a look at the following documentation
https://osinside.github.io/kiwi/building_images/build_expandable_disk.html#network-deployment
It describes which files from your result/* data to copy
where in /srv/tftpboot
You can do this on some individual host (not your real PXE server !)
4. Once you have the data from the image build setup in /srv/tftpboot
you need to add the PXE booting loader and config. I'm pretty sure
you know more about all this than I do, but just in case you need
some docs, this one should be helpful:
https://osinside.github.io/kiwi/working_with_images/setup_network_bootserver.html
It uses dnsmasq to provide the protocols TFTP, DHCP.
You can run dnsmasq on your testing host. I recommend to
disable it's DNS capabilities with:
port=0
To avoid conflicts
5. Once you have that you need a boot menu for which I usually
use syslinux menu.c32 together with the pxelinux.0 loader.
(Note: the above docs uses grub and a self compiled grub module)
If you decide to go old school with syslinux your config file
is in: /srv/tftpboot/pxelinux.cfg/default
with contents like:
default menu.c32
prompt 0
timeout 120
menu title PXE Menu
label Install
menu label ^Install Leap
kernel /boot/linux
append initrd=/boot/initrd rd.kiwi.install.pxe rd.kiwi.install.image=tftp://
192.168.178.34/image/Leap-15.3_appliance.x86_64-1.15.3.xz console=ttyS0 rd.kiwi.install.pxe.curl_options=--retry,3,--retry-delay,3,--speed-limit,2048
6. The essence of the boot menu in 5. are the options to pass along
on the kernel cmdline. These allow you to control the deployment.
You asked for "where does it fetch the actual image from..." This
you can see in rd.kiwi.install.image=...
kiwi uses curl to fetch files from the network. Thus all options
here are passed along to curl. Every feature of curl is at your
hand now. So you could also setup an ftp server put the contents
from /srv/tftpboot/image/* there and use ftp:// instead of tftp://
This would also be my suggestion how you can handle changes to
the image raw file. It is possible that you change the contents
of that file offline and re-deploy a new variant which should be
a quick process given all the setup above works.
7. Regarding initrd and kernel usage you should know that for
deployment the PXE loader loads "/boot/linux" and "/boot/initrd"
and after deployment the initrd calls kexec to start up. The
kernel and initrd for kexec are stored /srv/tftpboot/image
So you have in theory also the opportunity to have different
kernel/initrd combinations for deployment and runtime. Please
note you will not have this option when you build an ISO and
it should also only be used for development cycles if at all.
In the kiwi produced .install.tar file all files needed are
bundled as a working and consistent bundle. You can now do
whatever you want with the collection of files which gives you
some power but you could also create very strange and inconsistent
setups ;)
Hope this gives you some ideas to move forward.
Cheers,