Hi,
> Unless I am misunderstanding you mean that the package updates can be
> done on the running OS, don't you?
Partially, let me explain what I think is different.
In the current way to run the update process, you said:
> The key feature for the DUDs being
> in an ISO is that they can be used during a later kickstart
> installation, adding a pointer to their URLs as a kernel parameter /
> boot option.
So this means and correct me when wrong:
- You create an ISO which contains drivers/packages... something to update
and probably a kickstart directive to actually install those.
This ISO doesn't need to be bootable
- You have a running system that needs these updates
- You reboot that system and pass along parameters such that
the source location of the ISO is known to the system and that
kickstart procedure can run
- maybe you reboot the system after the changes were applied
Is this roughly correct ?
If so let's make the switch to an image based process. If you
think a bootable procedure based on an image is useful the process
would basically look like this:
- You create a kiwi image description which builds you a
let's call it "update system". This appliance would be a live ISO
type. You can boot this system from stick, CD, DVD, grub-loopback,
remote via PXE...
- In that image description you place a process which runs at boottime
of the appliance. This means you would need to add the drivers/packages
and also the tools and metadata for kickstart, meaning kickstart
itself and the kickstart file and maybe a systemd unit to start it.
The best choice for the appliance OS in your case would be probably
Fedora or RHEL because that's were kickstart is a supported component
- In that image description you also need a little bit of code that
can identify and mount the system that should receive these updates.
I already wrote that for use in another project
https://github.com/SUSE/suse-migration-services/blob/master/suse_migration_services/units/mount_system.py
So you could consider to re-use parts of it
- Now everything is in one place, in your kiwi image description
- Now you would build the image.. call kiwi-ng ...
- The result is an ISO image which is also a system that you can boot
and which is designed to perform an upgrade process.
- To make this "update system" start you could use kexec or a grub
loopback entry which can boot off from an ISO. This also means
your running system will be offline as long as the update runs
and will come back online as soon as the update is done
- The "update system" live ISO can also boot from remote via PXE
You see implementing it through an image concept is imho more complex
and for the relatively simple DUD approach via kickstart on the target
machine probably overkill.
I have implemented this concept to run distribution upgrades from
one major release to another which cannot be done while the target
machine is still running. I have also done it that way to ensure
a non-interactive process which is required when ugrading machines
in the cloud. So my use case was somewhat different than yours.
But in theory this is the same thing
Sorry for the long mail and I hope this makes sense to you