summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Katz <katzj@redhat.com>2007-04-18 17:21:14 +0000
committerJeremy Katz <katzj@redhat.com>2007-04-18 17:21:14 +0000
commiteddbc0dbf0b7bc22b42718dfd4a37bdc95f9384d (patch)
tree8731fd99973cefd83d7365eb9a1253c66df21aca
parentea0e9f1d7cfe6d15e22f21328cbb94b953dfa743 (diff)
downloadanaconda-eddbc0dbf0b7bc22b42718dfd4a37bdc95f9384d.tar.gz
anaconda-eddbc0dbf0b7bc22b42718dfd4a37bdc95f9384d.tar.xz
anaconda-eddbc0dbf0b7bc22b42718dfd4a37bdc95f9384d.zip
2007-04-18 Jeremy Katz <katzj@redhat.com>
* isys/isys.py (driveDict): Ignore drives that the live install is running from. This should help avoid trying to install the bootloader to the USB key that you're running the live image off of * livecd.py (LiveCDImageMethod.postAction): Fix unmount to work and re-enable it so that people aren't left with /mnt/sysimage mounted in most cases (LiveCDImageMethod.protectedPartitions): Mark the live image partition as protected
-rw-r--r--ChangeLog12
-rw-r--r--isys/isys.py12
-rw-r--r--livecd.py24
3 files changed, 45 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 58b3a6977..fb0b93e4c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2007-04-18 Jeremy Katz <katzj@redhat.com>
+
+ * isys/isys.py (driveDict): Ignore drives that the live install is
+ running from. This should help avoid trying to install the
+ bootloader to the USB key that you're running the live image off of
+
+ * livecd.py (LiveCDImageMethod.postAction): Fix unmount to work
+ and re-enable it so that people aren't left with /mnt/sysimage
+ mounted in most cases
+ (LiveCDImageMethod.protectedPartitions): Mark the live image
+ partition as protected
+
2007-04-18 David Cantrell <dcantrell@redhat.com>
* vnc.py: import socket
diff --git a/isys/isys.py b/isys/isys.py
index c3f0c8c61..06a0b755e 100644
--- a/isys/isys.py
+++ b/isys/isys.py
@@ -20,6 +20,7 @@ import string
import os
import os.path
import socket
+import stat
import posix
import sys
import kudzu
@@ -291,6 +292,17 @@ def driveDict(klassArg):
new[device] = dev
continue
+ # blacklist the device which the live image is running from
+ # installing over that is almost certainly the wrong
+ # thing to do.
+ if os.path.exists("/dev/live") and \
+ stat.S_ISBLK(os.stat("/dev/live")[stat.ST_MODE]):
+ livetarget = os.path.realpath("/dev/live")
+ if livetarget.startswith(devName):
+ log.info("%s looks to be the live device; ignoring" % (device,))
+ continue
+
+
if device.startswith("sd"):
peddev = parted.PedDevice.get(devName)
model = peddev.model
diff --git a/livecd.py b/livecd.py
index 44306e106..bb14acd5a 100644
--- a/livecd.py
+++ b/livecd.py
@@ -84,9 +84,27 @@ class LiveCDImageMethod(installmethod.InstallMethod):
custom_buttons=[_("Exit installer")])
sys.exit(0)
-# def postAction(self, anaconda):
-# anaconda.id.fsset.umountFilesystems(anaconda.rootPath,
-# swapoff = False)
+ def postAction(self, anaconda):
+ # unmount things that aren't listed in /etc/fstab. *sigh*
+ for dir in ("/selinux", "/dev"):
+ try:
+ isys.umount("%s/%s" %(anaconda.rootPath,dir), removeDir = 0)
+ except Exception, e:
+ log.error("unable to unmount %s: %s" %(d, e))
+
+ try:
+ anaconda.id.fsset.umountFilesystems(anaconda.rootPath,
+ swapoff = False)
+ os.rmdir(anaconda.rootPath)
+ except Exception, e:
+ log.error("Unable to unmount filesystems.")
+
+ def protectedPartitions(self):
+ if os.path.exists("/dev/live") and \
+ stat.S_ISBLK(os.stat("/dev/live")[stat.ST_MODE]):
+ target = os.readlink("/dev/live")
+ return [target]
+ return []
def getLiveBlockDevice(self):
return self.osimg