[Fedora-livecd-list] 7 commits - imgcreate/creator.py imgcreate/kickstart.py imgcreate/live.py tools/livecd-iso-to-disk.sh
Jeremy Katz
katzj at fedoraproject.org
Tue May 27 20:32:22 UTC 2008
imgcreate/creator.py | 4 ++++
imgcreate/kickstart.py | 15 ++++++++++++++-
imgcreate/live.py | 4 +---
tools/livecd-iso-to-disk.sh | 22 ++++++++++++++++++++--
4 files changed, 39 insertions(+), 6 deletions(-)
New commits:
commit 35f007112280dfa451ff7b51b65f917b4cad3715
Author: Jeremy Katz <katzj at redhat.com>
Date: Tue May 27 15:56:05 2008 -0400
Fix basing on a previous live image (#437906)
diff --git a/imgcreate/creator.py b/imgcreate/creator.py
index 40ce1ef..fc4298b 100644
--- a/imgcreate/creator.py
+++ b/imgcreate/creator.py
@@ -830,6 +830,9 @@ class LoopImageCreator(ImageCreator):
"""
return self.__instloop.resparse(size)
+
+ def __base_on(self, base_on):
+ shutil.copyfile(base_on, self._image)
#
# Actual implementation
@@ -838,6 +841,7 @@ class LoopImageCreator(ImageCreator):
self.__imgdir = self._mkdtemp()
if not base_on is None:
+ self.__base_on(base_on)
shutil.copyfile(base_on, self._image)
self.__instloop = SparseExtLoopbackMount(self._image,
diff --git a/imgcreate/live.py b/imgcreate/live.py
index 130f7fa..ef07d19 100644
--- a/imgcreate/live.py
+++ b/imgcreate/live.py
@@ -127,7 +127,7 @@ class LiveImageCreatorBase(LoopImageCreator):
#
# Actual implementation
#
- def __base_on_iso(self, base_on):
+ def __base_on(self, base_on):
"""helper function to extract ext3 file system from a live CD ISO"""
isoloop = LoopbackMount(base_on, self._mkdtemp())
@@ -173,8 +173,6 @@ class LiveImageCreatorBase(LoopImageCreator):
isoloop.cleanup()
def _mount_instroot(self, base_on = None):
- if not base_on is None:
- self.__base_on_iso(base_on)
LoopImageCreator._mount_instroot(self)
self.__write_initrd_conf(self._instroot + "/etc/sysconfig/mkinitrd")
commit 9fa8210e2db91e1c2d0493aed785d626ac7d176e
Author: Jeremy Katz <katzj at redhat.com>
Date: Tue May 27 15:49:23 2008 -0400
Fix up tab/space inconsistency
diff --git a/imgcreate/kickstart.py b/imgcreate/kickstart.py
index 7cc27ac..8f43f7c 100644
--- a/imgcreate/kickstart.py
+++ b/imgcreate/kickstart.py
@@ -151,7 +151,7 @@ class TimezoneConfig(KickstartConfig):
try:
shutil.copyfile(self.path("/usr/share/zoneinfo/%s" %(tz,)),
self.path("/etc/localtime"))
- except OSError, (errno, msg):
+ except OSError, (errno, msg):
log.error("Error copying timezone: %s" %(msg,))
commit df086a2102b3c8f0103c5905d7b776e07b69cfbc
Author: Jeremy Katz <katzj at redhat.com>
Date: Tue May 27 15:42:23 2008 -0400
Handle using a loop device as the device to use for the target (#447345)
diff --git a/tools/livecd-iso-to-disk.sh b/tools/livecd-iso-to-disk.sh
index 5250a20..e4acf85 100644
--- a/tools/livecd-iso-to-disk.sh
+++ b/tools/livecd-iso-to-disk.sh
@@ -40,6 +40,11 @@ exitclean() {
getdisk() {
DEV=$1
+ if [[ "$DEV" =~ "/dev/loop*" ]; then
+ device="/dev/$device"
+ return
+ fi
+
p=$(udevinfo -q path -n $DEV)
if [ -e /sys/$p/device ]; then
device=$(basename /sys/$p)
commit 898e853e789314e343e8531fb25c03dc41ff4f0c
Author: Jeremy Katz <katzj at redhat.com>
Date: Tue May 27 15:35:41 2008 -0400
Quote iso path (#446472)
diff --git a/tools/livecd-iso-to-disk.sh b/tools/livecd-iso-to-disk.sh
index fb9d6e4..5250a20 100644
--- a/tools/livecd-iso-to-disk.sh
+++ b/tools/livecd-iso-to-disk.sh
@@ -194,7 +194,7 @@ fi
if [ -z "$noverify" ]; then
# verify the image
echo "Verifying image..."
- checkisomd5 --verbose $ISO
+ checkisomd5 --verbose "$ISO"
if [ $? -ne 0 ]; then
echo "Are you SURE you want to continue?"
echo "Press Enter to continue or ctrl-c to abort"
@@ -219,7 +219,7 @@ fi
# FIXME: would be better if we had better mountpoints
CDMNT=$(mktemp -d /media/cdtmp.XXXXXX)
-mount -o loop,ro $ISO $CDMNT || exitclean
+mount -o loop,ro "$ISO" $CDMNT || exitclean
USBMNT=$(mktemp -d /media/usbdev.XXXXXX)
mount $USBDEV $USBMNT || exitclean
commit 77e575d26bf742c762023dbb28bc8116e917218b
Author: Jeremy Katz <katzj at redhat.com>
Date: Tue May 27 15:29:35 2008 -0400
Make sure that the disk isn't mounted before writing to it (#446472)
diff --git a/tools/livecd-iso-to-disk.sh b/tools/livecd-iso-to-disk.sh
index 4ec7f06..fb9d6e4 100644
--- a/tools/livecd-iso-to-disk.sh
+++ b/tools/livecd-iso-to-disk.sh
@@ -144,6 +144,18 @@ checkSyslinuxVersion() {
fi
}
+checkMounted() {
+ dev=$1
+ if grep -q "^$dev " /proc/mounts ; then
+ echo "$dev is mounted, please unmount for safety"
+ exitclean
+ fi
+ if grep -q "^$dev " /proc/swaps; then
+ echo "$dev is in use as a swap device, please disable swap"
+ exitclean
+ fi
+}
+
if [ $(id -u) != 0 ]; then
echo "You need to be root to run this script"
exit 1
@@ -195,6 +207,7 @@ checkSyslinuxVersion
checkFilesystem $USBDEV
checkPartActive $USBDEV
checkMBR $USBDEV
+checkMounted $USBDEV
[ -n $resetmbr ] && resetMBR $USBDEV
if [ -n "$overlaysizemb" -a "$USBFS" = "vfat" ]; then
commit d2de6738087c91ebf6eb570088d7b2d0296723c8
Author: Jeremy Katz <katzj at redhat.com>
Date: Tue May 27 15:24:36 2008 -0400
Handle copying timezone to /etc/localtime (#445624)
diff --git a/imgcreate/kickstart.py b/imgcreate/kickstart.py
index efa1ef7..7cc27ac 100644
--- a/imgcreate/kickstart.py
+++ b/imgcreate/kickstart.py
@@ -18,6 +18,7 @@
import os
import os.path
+import shutil
import subprocess
import time
@@ -147,6 +148,12 @@ class TimezoneConfig(KickstartConfig):
f.write("ZONE=\"" + tz + "\"\n")
f.write("UTC=" + utc + "\n")
f.close()
+ try:
+ shutil.copyfile(self.path("/usr/share/zoneinfo/%s" %(tz,)),
+ self.path("/etc/localtime"))
+ except OSError, (errno, msg):
+ log.error("Error copying timezone: %s" %(msg,))
+
class AuthConfig(KickstartConfig):
"""A class to apply a kickstart authconfig configuration to a system."""
commit 4793d9e38d18eeeb3a0464e331af23e573149fe2
Author: Jeremy Katz <katzj at redhat.com>
Date: Tue May 27 15:15:18 2008 -0400
Make sure that commands exist and give a suitable error message
diff --git a/imgcreate/kickstart.py b/imgcreate/kickstart.py
index ef7b9e4..efa1ef7 100644
--- a/imgcreate/kickstart.py
+++ b/imgcreate/kickstart.py
@@ -107,6 +107,8 @@ class KickstartConfig(object):
os.chdir("/")
def call(self, args):
+ if not os.path.exists("%s/%s" %(self.chroot, args[0])):
+ raise errors.KickstartError("Unable to run %s!" %(args))
subprocess.call(args, preexec_fn = self.chroot)
def apply(self):
@@ -178,6 +180,10 @@ class RootPasswordConfig(KickstartConfig):
self.call(["/usr/sbin/usermod", "-p", password, "root"])
def set_unencrypted(self, password):
+ for p in ("/bin/echo", "/usr/bin/passwd"):
+ if not os.path.exists("%s/%s" %(self.chroot, p)):
+ raise errors.KickstartError("Unable to set unencrypted password due to lack of %s" % p)
+
p1 = subprocess.Popen(["/bin/echo", password],
stdout = subprocess.PIPE,
preexec_fn = self.chroot)
@@ -331,7 +337,7 @@ class NetworkConfig(KickstartConfig):
for network in ksnet.network:
if not network.device:
- raise errros.KickstartError("No --device specified with "
+ raise errors.KickstartError("No --device specified with "
"network kickstart command")
if (network.onboot and network.bootProto.lower() != "dhcp" and
More information about the Fedora-livecd-list
mailing list