diff options
author | Jeremy Katz <katzj@redhat.com> | 2007-04-18 17:21:14 +0000 |
---|---|---|
committer | Jeremy Katz <katzj@redhat.com> | 2007-04-18 17:21:14 +0000 |
commit | eddbc0dbf0b7bc22b42718dfd4a37bdc95f9384d (patch) | |
tree | 8731fd99973cefd83d7365eb9a1253c66df21aca | |
parent | ea0e9f1d7cfe6d15e22f21328cbb94b953dfa743 (diff) | |
download | anaconda-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-- | ChangeLog | 12 | ||||
-rw-r--r-- | isys/isys.py | 12 | ||||
-rw-r--r-- | livecd.py | 24 |
3 files changed, 45 insertions, 3 deletions
@@ -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 @@ -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 |