[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] Add HybridISO support for PyGrub2
grub-mkrescue internally uses xorriso, which generates a so-called "hybrid ISO": The ISO images also contains a DOS partition table, which allows the identical ISO file to be stored on an USB stick for booting from it. This breaks PyGrub, since it (wrongly) detects the DOS partition table and uses the first partition instead of the complete ISO file. Add a check to detech HybridISO files and fall back to unpartitioned operation. Signed-off-by: Philipp Hahn <hahn@xxxxxxxxxxxxx> --- a/tools/pygrub/src/pygrub +++ b/tools/pygrub/src/pygrub @@ -41,12 +41,16 @@ def enable_cursor(ison): pass def is_disk_image(file): + """Detect DOS partition table.""" fd = os.open(file, os.O_RDONLY) - buf = os.read(fd, 512) + buf = os.read(fd, 0x8006) os.close(fd) if len(buf) >= 512 and \ struct.unpack("H", buf[0x1fe: 0x200]) == (0xaa55,): + # HybridISO contains a DOS partition table for booting from USB devices, but really is an ISO image + if len(buf) >= 0x8006 and buf[0x8001:0x8006] == 'CD001': + return False return True return False -- Philipp Hahn Open Source Software Engineer hahn@xxxxxxxxxxxxx Univention GmbH Linux for Your Business fon: +49 421 22 232- 0 Mary-Somerville-Str.1 D-28359 Bremen fax: +49 421 22 232-99 http://www.univention.de/ Attachment:
signature.asc _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |