From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH] Improve GPT support in pygrub Date: Mon, 17 Oct 2011 13:03:27 -0400 Message-ID: <20111017170327.GC19756@phenom.dumpdata.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: M A Young , Ian Campbell Cc: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org On Sun, Oct 16, 2011 at 09:45:00PM +0100, M A Young wrote: > This patch is part of a fix I applied to Fedora 16 to get pygrub to > boot a Fedora 16 guest (see > https://bugzilla.redhat.com/show_bug.cgi?id=745335 ). By default > Fedora 16 installs a Bios boot partition as the first GPT partition > to contain grub2 boot code, and the grub2 configuration files are in > the GPT second partition. Pygrub currently only checks the first > partition, so the attached patch tells it to check all the GPT > partitions for grub configuration. > > Michael Young > Check all GPT partitions for grub configuration, not just the first > Signed-off-by: Michael Young Tested-by: Konrad Rzeszutek Wilk > > --- 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(" + partcount = struct.unpack(" + partsize = struct.unpack(" + i = partcount > + offsets = [] > + while i>0: > + buf = os.read(fd, partsize) > + offsets.append(struct.unpack(" + 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. > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel