Let us try to shorten the devel loop when playing with changes to the bootcd internals. And namely, the set of systemd files that describe booting off the CD image
-
The utility sits in
git/tests/system -
you can push it onto a specific build using
make syncas usual -
and then run it on the testmaster side like this
iterate-ping-node -o run01 <nb_iterations> -
This allows to run a given bootcd (the iso computed for one node) several times over, and to gather all logs from qemu
-
This is only restarting the kvm/qemu node several times, nothing is done to recompute the .iso itself (see below for that). So the game is to easily simulate how a change to
bootcdwould affect a node ISO without rebuilding the whole damn thing -
When -o is provided, the directory argument is created and all log files are stored in there
-
select a running test in testmaster/; like e.g. one that has failed the
ping_nodestep already -
you will need one local terminal in
git/bootcd -
do the usual routine on running
exp, exposing variables in this terminal -
and run
make sync-unwrapfrom this workdirbootcd
At that point there will be the following files and subdirs on the KVM host (in my case boxtops)
- the normal node bootCD iso, like e.g.
vnode01.pl.sophia.inria.fr.iso
- a copy of that file, like e.g.
vnode01.pl.sophia.inria.fr.iso.ref
- a read-only copy of the bootcd image in
bootcd.ref/ - a writable version of this in
bootcd/ - a read-only copy of the overlay image in
overlay.ref/ - a writable version of this in
overlay/
The workflow from then on is you can
- change the layout/contents of the
bootcd/directory on the KVM host- either manually right in the KVM host, and/or with
make sync-pushif you want to rsync the contents ofinitscripts/andsystemd/workdirs onto KVM
- and then rewrap the ISO image and hammer on it, and for this you run
make sync-rewrapfrom thebootcd/workdir, and theniterate-ping-nodefrom thetests/workdir
Once you're satisfied you can make a difference between bootcd/ and bootcd.ref/ to see how the changes need to be implemented in build.sh and/or prep.sh