On Mon, Nov 03, 2014 at 09:19:44PM +0100, Pino Toscano wrote: > If a script does not finish, hangs, etc, it would be executed again at > the next boot, since the injected firstboot.sh helper removes it only > after it finished. > > Before executing a script, move it to another internal subdirectory > (scripts-done) and execute it from there, so it is not run again by > firstboot.sh. The downside is that now scripts are executed only once > at all, so if a script fails it will not be attempted at the next boot. > > Also, remove all the files found in scripts-done, as they have been run > (or at least attempted) in a previous boot. > > This fixes RHBZ#1159651. > --- > customize/firstboot.ml | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/customize/firstboot.ml b/customize/firstboot.ml > index 67b9479..89821f3 100644 > --- a/customize/firstboot.ml > +++ b/customize/firstboot.ml > @@ -47,6 +47,7 @@ module Linux = struct > ### END INIT INFO > > d=%s/scripts > +d_done=%s/scripts-done > logfile=~root/virt-sysprep-firstboot.log > > echo \"$0\" \"$@\" 2>&1 | tee $logfile > @@ -54,16 +55,20 @@ echo \"Scripts dir: $d\" 2>&1 | tee $logfile > > if test \"$1\" = \"start\" > then > + mkdir -p $d_done > for f in $d/* ; do > if test -x \"$f\" > then > + # move the script to the 'scripts-done' directory, so it is not > + # executed again at the next boot > + mv $f $d_done > echo '=== Running' $f '===' 2>&1 | tee $logfile > - $f 2>&1 | tee $logfile > - rm -f $f > + $d_done/$(basename $f) 2>&1 | tee $logfile > fi > done > + rm -f $d_done/* > fi > -" firstboot_dir > +" firstboot_dir firstboot_dir > > let firstboot_service = sprintf "\ > [Unit] > -- > 1.9.3
This looks like a better approach to me, so ACK. Thanks, Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-p2v converts physical machines to virtual machines. Boot with a live CD or over the network (PXE) and turn machines into KVM guests. http://libguestfs.org/virt-v2v _______________________________________________ Libguestfs mailing list [email protected] https://www.redhat.com/mailman/listinfo/libguestfs
