|
|
|
|
|
|
|
|
|
|
xen-devel
[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/
signature.asc
Description: This is a digitally signed message part.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-devel] [PATCH] Add HybridISO support for PyGrub2,
Philipp Hahn <=
|
|
|
|
|