liveusb/creator.py | 93 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 54 insertions(+), 39 deletions(-)
New commits: commit 0c77c9883bd6a3dbc0848e5a3c4fe078ec85ad06 Author: Luke Macken lmacken@redhat.com Date: Fri Jun 19 11:51:54 2009 -0400
Refactor some of our mbr checking code, so it is essentially a NOOP in Windows
diff --git a/liveusb/creator.py b/liveusb/creator.py index f96a0c1..0c0983a 100755 --- a/liveusb/creator.py +++ b/liveusb/creator.py @@ -327,45 +327,6 @@ class LiveUSBCreator(object): """ Return a dictionary of proxy settings """ return None
- def get_mbr(self): - parent = str(self.drive.get('parent', self._drive)) - self.log.debug('Checking the MBR of %s' % parent) - drive = open(parent, 'rb') - mbr = ''.join(['%02X' % ord(x) for x in drive.read(2)]) - drive.close() - self.log.debug('mbr = %r' % mbr) - return mbr - - def blank_mbr(self): - """ Return whether the MBR is empty or not """ - return self.get_mbr() == '0000' - - def _get_mbr_bin(self): - mbr = None - for mbr_bin in ('/usr/lib/syslinux/mbr.bin', - '/usr/share/syslinux/mbr.bin'): - if os.path.exists(mbr_bin): - mbr = mbr_bin - return mbr - - def mbr_matches_syslinux_bin(self): - """ - Return whether or not the MBR on the drive matches the system's - syslinux mbr.bin - """ - mbr_bin = open(self._get_mbr_bin(), 'rb') - mbr = ''.join(['%02X' % ord(x) for x in mbr_bin.read(2)]) - return mbr == self.get_mbr() - - def reset_mbr(self): - parent = str(self.drive.get('parent', self._drive)) - if '/dev/loop' not in self.drive: - self.log.info(_('Resetting Master Boot Record') + ' of %s' % parent) - mbr = self._get_mbr_bin() - self.popen('cat %s > %s' % (mbr, parent)) - else: - self.log.info(_('Drive is a loopback, skipping MBR reset')) - def bootable_partition(self): """ Ensure that the selected partition is flagged as bootable """ pass @@ -383,6 +344,21 @@ class LiveUSBCreator(object): obj = unicode(obj, encoding, 'replace') return obj
+ def get_mbr(self): + pass + + def blank_mbr(self): + pass + + def mbr_matches_syslinux_bin(self): + """ + Return whether or not the MBR on the drive matches the system's + syslinux mbr.bin + """ + return True + + def reset_mbr(self): + pass
class LinuxLiveUSBCreator(LiveUSBCreator):
@@ -726,6 +702,45 @@ class LinuxLiveUSBCreator(LiveUSBCreator): self.log.info('Formatting %s as FAT32' % self._drive) self.popen('mkfs.vfat -F 32 %s' % self._drive)
+ def get_mbr(self): + parent = str(self.drive.get('parent', self._drive)) + self.log.debug('Checking the MBR of %s' % parent) + drive = open(parent, 'rb') + mbr = ''.join(['%02X' % ord(x) for x in drive.read(2)]) + drive.close() + self.log.debug('mbr = %r' % mbr) + return mbr + + def blank_mbr(self): + """ Return whether the MBR is empty or not """ + return self.get_mbr() == '0000' + + def _get_mbr_bin(self): + mbr = None + for mbr_bin in ('/usr/lib/syslinux/mbr.bin', + '/usr/share/syslinux/mbr.bin'): + if os.path.exists(mbr_bin): + mbr = mbr_bin + return mbr + + def mbr_matches_syslinux_bin(self): + """ + Return whether or not the MBR on the drive matches the system's + syslinux mbr.bin + """ + mbr_bin = open(self._get_mbr_bin(), 'rb') + mbr = ''.join(['%02X' % ord(x) for x in mbr_bin.read(2)]) + return mbr == self.get_mbr() + + def reset_mbr(self): + parent = str(self.drive.get('parent', self._drive)) + if '/dev/loop' not in self.drive: + self.log.info(_('Resetting Master Boot Record') + ' of %s' % parent) + mbr = self._get_mbr_bin() + self.popen('cat %s > %s' % (mbr, parent)) + else: + self.log.info(_('Drive is a loopback, skipping MBR reset')) +
class WindowsLiveUSBCreator(LiveUSBCreator):
commit 27b28fad946b44b958f1d2c00a215e621ef5e0d6 Author: Luke Macken lmacken@redhat.com Date: Fri Jun 19 11:48:25 2009 -0400
Make our MBR checking work on devices w/o parents
diff --git a/liveusb/creator.py b/liveusb/creator.py index 476c99e..f96a0c1 100755 --- a/liveusb/creator.py +++ b/liveusb/creator.py @@ -328,7 +328,7 @@ class LiveUSBCreator(object): return None
def get_mbr(self): - parent = str(self.drive['parent']) + parent = str(self.drive.get('parent', self._drive)) self.log.debug('Checking the MBR of %s' % parent) drive = open(parent, 'rb') mbr = ''.join(['%02X' % ord(x) for x in drive.read(2)]) @@ -358,7 +358,7 @@ class LiveUSBCreator(object): return mbr == self.get_mbr()
def reset_mbr(self): - parent = str(self.drive['parent']) + parent = str(self.drive.get('parent', self._drive)) if '/dev/loop' not in self.drive: self.log.info(_('Resetting Master Boot Record') + ' of %s' % parent) mbr = self._get_mbr_bin()
liveusb-creator@lists.stg.fedorahosted.org