# enable all of these, although some of them are only done on certain
# guest types (see details below).
if [ -z "$enable" ]; then
+ cron_spool=yes
dhcp_client_state=yes
dhcp_server_state=yes
hostname=yes
logfiles=yes
+ mail_spool=yes
net_hwaddr=yes
random_seed=yes
+ rhn_systemid=yes
smolt_uuid=yes
ssh_hostkeys=yes
udev_persistent_net=yes
+ utmp=yes
yum_uuid=yes
elif [ "$enable" = "list" ]; then
+ echo "cron-spool"
echo "dhcp-client-state"
echo "dhcp-server-state"
echo "hostname"
echo "logfiles"
+ echo "mail-spool"
echo "net-hwaddr"
echo "random-seed"
+ echo "rhn-systemid"
echo "smolt-uuid"
echo "ssh-hostkeys"
echo "udev-persistent-net"
+ echo "utmp"
echo "yum-uuid"
exit 0
else
for opt in $(echo "$enable" | sed 's/,/ /g'); do
case "$opt" in
+ cron-spool) cron_spool=yes ;;
dhcp-client-state) dhcp_client_state=yes ;;
dhcp-server-state) dhcp_server_state=yes ;;
hostname) hostname=yes ;;
logfiles) logfiles=yes ;;
+ mail-spool) mail_spool=yes ;;
net-hwaddr) net_hwaddr=yes ;;
random-seed) random_seed=yes ;;
+ rhn-systemid) rhn_systemid=yes ;;
smolt-uuid) smolt_uuid=yes ;;
ssh-hostkeys) ssh_hostkeys=yes ;;
udev-persistent-net) udev_persistent_net=yes ;;
+ utmp) utmp=yes ;;
yum-uuid) yum_uuid=yes ;;
*)
echo "error: unknown --enable feature: $opt"
# Run virt-inspector and grab inspection information about this guest.
virt-inspector "${params[@]}" > $tmpdir/xml
-xmlstarlet sel -t -c \
+virt-inspector --xpath \
"string(/operatingsystems/operatingsystem[position()=1]/name)" \
- $tmpdir/xml > $tmpdir/type
-xmlstarlet sel -t -c \
+ < $tmpdir/xml > $tmpdir/type
+virt-inspector --xpath \
"string(/operatingsystems/operatingsystem[position()=1]/distro)" \
- $tmpdir/xml > $tmpdir/distro ||:
-xmlstarlet sel -t -c \
+ < $tmpdir/xml > $tmpdir/distro ||:
+virt-inspector --xpath \
"string(/operatingsystems/operatingsystem[position()=1]/package_format)" \
- $tmpdir/xml > $tmpdir/package_format ||:
-xmlstarlet sel -t -c \
+ < $tmpdir/xml > $tmpdir/package_format ||:
+virt-inspector --xpath \
"string(/operatingsystems/operatingsystem[position()=1]/package_management)" \
- $tmpdir/xml > $tmpdir/package_management ||:
+ < $tmpdir/xml > $tmpdir/package_management ||:
type="$(cat $tmpdir/type)"
distro="$(cat $tmpdir/distro)"
#----------------------------------------------------------------------
# The sysprep operations.
+if [ "$cron_spool" = "yes" ]; then
+ rm -rf $mnt/var/spool/cron/*
+fi
+
if [ "$dhcp_client_state" = "yes" ]; then
case "$type" in
linux)
esac
fi
+if [ "$mail_spool" = "yes" ]; then
+ rm -rf $mnt/var/spool/mail/*
+ rm -rf $mnt/var/mail/*
+fi
+
if [ "$net_hwaddr" = "yes" ]; then
case "$type/$distro" in
linux/fedora)
f=$mnt/var/lib/urandom/random-seed
fi
if [ -n "$f" ]; then
- dd if=/dev/random of="$f" bs=8 count=1 conv=nocreat,notrunc 2>/dev/null
+ dd if=/dev/urandom of="$f" bs=8 count=1 conv=nocreat,notrunc 2>/dev/null
fi
fi
+if [ "$rhn_systemid" = "yes" -a "$type/$distro" = "linux/rhel" ]; then
+ rm -f $mnt/etc/sysconfig/rhn/systemid
+fi
+
if [ "$smolt_uuid" = "yes" -a "$type" = "linux" ]; then
rm -f $mnt/etc/sysconfig/hw-uuid
rm -f $mnt/etc/smolt/uuid
rm -f $mnt/etc/udev/rules.d/70-persistent-net.rules
fi
+if [ "$utmp" = "yes" -a "$type" != "windows" ]; then
+ rm -f $mnt/var/run/utmp
+fi
+
if [ "$yum_uuid" = "yes" -a "$package_management" = "yum" ]; then
rm -f $mnt/var/lib/yum/uuid
fi