All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1 of 6] pygrub should check all GPT partitions
@ 2011-10-19 23:03 M A Young
  2011-10-20  7:38 ` Paolo Bonzini
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: M A Young @ 2011-10-19 23:03 UTC (permalink / raw)
  To: xen-devel; +Cc: Ian Campbell

[-- Attachment #1: Type: TEXT/PLAIN, Size: 0 bytes --]



[-- Attachment #2: Type: TEXT/PLAIN, Size: 1510 bytes --]

On Fedora 16 the first GPT partition is a boot partition for grub2 with
the grub2 configuration in the second partition.
Check all GPT partitions for grub configuration, not just the first.
Signed-off-by: Michael Young <m.a.young@durham.ac.uk>

--- a/tools/pygrub/src/pygrub	2011-10-16 20:58:02.000000000 +0100
+++ b/tools/pygrub/src/pygrub	2011-10-16 20:59:52.000000000 +0100
@@ -78,9 +78,17 @@
 def get_fs_offset_gpt(file):
     fd = os.open(file, os.O_RDONLY)
     # assume the first partition is an EFI system partition.
-    os.lseek(fd, SECTOR_SIZE * 2, 0)
+    os.lseek(fd, SECTOR_SIZE, 0)
     buf = os.read(fd, 512)
-    return struct.unpack("<Q", buf[32:40])[0] * SECTOR_SIZE
+    partcount = struct.unpack("<L", buf[80:84])[0]
+    partsize = struct.unpack("<L", buf[84:88])[0]
+    i = partcount
+    offsets = []
+    while i>0:
+        buf = os.read(fd, partsize)
+        offsets.append(struct.unpack("<Q", buf[32:40])[0] * SECTOR_SIZE)
+        i -= 1
+    return offsets
 
 FDISK_PART_SOLARIS=0xbf
 FDISK_PART_SOLARIS_OLD=0x82
@@ -114,7 +122,9 @@
                 continue # no solaris magic at that offset, ignore partition
 
         if type == FDISK_PART_GPT:
-            offset = get_fs_offset_gpt(file)
+            for offset in get_fs_offset_gpt(file):
+                part_offs.append(offset)
+            break
 
         # Active partition has 0x80 as the first byte.
         # If active, prepend to front of list, otherwise append to back.

[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2011-10-25 18:23 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-10-19 23:03 [PATCH 1 of 6] pygrub should check all GPT partitions M A Young
2011-10-20  7:38 ` Paolo Bonzini
2011-10-20  8:25   ` Ian Campbell
2011-10-20  8:52     ` Paolo Bonzini
2011-10-20  8:53       ` Ian Campbell
2011-10-20  8:25 ` Ian Campbell
2011-10-20  8:34   ` M A Young
2011-10-25 18:23 ` Ian Jackson

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.