From: Philipp Hahn <hahn@univention.de>
To: "xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>
Subject: [PATCH] Add HybridISO support for PyGrub2
Date: Tue, 25 Oct 2011 10:56:58 +0200 [thread overview]
Message-ID: <201110251057.06774.hahn@univention.de> (raw)
[-- Attachment #1.1: Type: text/plain, Size: 1473 bytes --]
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@univention.de>
--- 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@univention.de
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 #1.2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 197 bytes --]
[-- Attachment #2: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
next reply other threads:[~2011-10-25 8:56 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-25 8:56 Philipp Hahn [this message]
2011-10-25 9:17 ` [PATCH] Add HybridISO support for PyGrub2 Ian Campbell
2011-10-25 9:51 ` Tim Deegan
2011-10-25 10:33 ` Philipp Hahn
2011-10-27 10:21 ` Ian Campbell
2011-10-28 7:46 ` [PATCH v2] " Philipp Hahn
2011-10-28 11:54 ` Ian Campbell
2011-11-01 18:53 ` Ian Jackson
2011-11-01 19:04 ` Philipp Hahn
2011-11-02 16:29 ` Ian Jackson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201110251057.06774.hahn@univention.de \
--to=hahn@univention.de \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.