From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1Z22Ib-00073J-8C for mharc-grub-devel@gnu.org; Mon, 08 Jun 2015 15:01:29 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45150) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z22IX-0006vy-7h for grub-devel@gnu.org; Mon, 08 Jun 2015 15:01:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z22IT-0003SQ-3g for grub-devel@gnu.org; Mon, 08 Jun 2015 15:01:24 -0400 Received: from mail-la0-x231.google.com ([2a00:1450:4010:c03::231]:35380) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z22IS-0003SA-H8 for grub-devel@gnu.org; Mon, 08 Jun 2015 15:01:20 -0400 Received: by labko7 with SMTP id ko7so103971198lab.2 for ; Mon, 08 Jun 2015 12:01:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:cc:subject:message-id:in-reply-to:references :mime-version:content-type; bh=hOc7Sa0ahJBra7q8SSDa3o7cI7T0slf+u9A5jYSHCx4=; b=gmWwyoJ23xIowyiaqBqSCIBDHNWfXdY3IB1gK5jtK8pd+eXDvEqERKR+scjtGUVV22 0mPUGB9LZu+u76DHyvOO4V1mphNcmixvaZpr3Z4uNwYOIR9FnqurBGZ5DZHSNurLrEHk On76bJOc3QZZN7kWN5l+8K32H03eHh/EpMBGesW5yWjYpJhvGQOqtuQIayIkxmkHy7zH 2YKqsqiA72nlY9iuV8XoT5OdcXDF/uj2omE86rMV/bRrDaNqgZOiYnZ7lgbvo+O6y/fA cXvsvKxljwARToYjhqjYTzB7vvhbeMpHg69Lj3gpLQvOx7bYKJ9PMZ0GkuV1DRgEzv3p xDsw== X-Received: by 10.152.1.40 with SMTP id 8mr13399829laj.56.1433790079544; Mon, 08 Jun 2015 12:01:19 -0700 (PDT) Received: from opensuse.site (ppp91-76-14-38.pppoe.mtu-net.ru. [91.76.14.38]) by mx.google.com with ESMTPSA id ap9sm829690lbd.21.2015.06.08.12.01.18 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 08 Jun 2015 12:01:18 -0700 (PDT) Date: Mon, 8 Jun 2015 22:01:17 +0300 From: Andrei Borzenkov To: Ross Lagerwall Subject: Re: [PATCH] core/partmap: Add El Torito boot catalog parsing Message-ID: <20150608220117.5d8ce61e@opensuse.site> In-Reply-To: <20150608182512.GA10375@hobo.lan> References: <1433672686-774-1-git-send-email-rosslagerwall@gmail.com> <20150608195144.69ed708c@opensuse.site> <20150608173106.GA9456@hobo.lan> <20150608205048.6f36750a@opensuse.site> <20150608182512.GA10375@hobo.lan> X-Mailer: Claws Mail 3.11.0 (GTK+ 2.24.28; x86_64-suse-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; boundary="Sig_/vlAWE60BCX4/X28vKCoigUI"; protocol="application/pgp-signature" X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:4010:c03::231 Cc: grub-devel@gnu.org X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Jun 2015 19:01:27 -0000 --Sig_/vlAWE60BCX4/X28vKCoigUI Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable =D0=92 Mon, 8 Jun 2015 19:25:12 +0100 Ross Lagerwall =D0=BF=D0=B8=D1=88=D0=B5=D1=82: > On Mon, Jun 08, 2015 at 08:50:48PM +0300, Andrei Borzenkov wrote: > > =D0=92 Mon, 8 Jun 2015 18:31:06 +0100 > > Ross Lagerwall =D0=BF=D0=B8=D1=88=D0=B5=D1=82: > >=20 > > > On Mon, Jun 08, 2015 at 07:51:44PM +0300, Andrei Borzenkov wrote: > > > > =D0=92 Sun, 7 Jun 2015 11:24:46 +0100 > > > > Ross Lagerwall =D0=BF=D0=B8=D1=88=D0=B5= =D1=82: > > > >=20 > > > > > Add a module, part_eltorito, to allow parsing of the El Torito bo= ot > > > > > catalog into partitions. This follows the El Torito Bootable CD-R= OM > > > > > Format Specification Version 1.0 and the UEFI Specification 2.5. > > > > > In cases where the specification is unclear, the code follows the= UEFI > > > > > reference implementation. > > > > >=20 > > > > > This is useful when booting CDs in UEFI mode. Before, GRUB would = not be > > > > > able to use the embedded ESP from which it was executed, so it wo= uld > > > > > have a root and prefix set to the top level of the CD. This could= result > > > > > in subtle configuration bugs, because the same ISO booted from a = USB > > > > > disk (using isohybrid) would have its root and prefix set to the > > > > > embedded ESP because it can find it through the MBR. > > > >=20 > > > > You can already access ESP on hybrid image using e.g. (cd0,msdos1);= why > > > > is it not enough? > > >=20 > > > This is about booting a CD in UEFI mode; it may not be a hybrid disc = in > > > which case it doesn't have an MBR. > > >=20 > >=20 > > So you need to either add partition label or add additional driver to > > grub.efi. The former works already and does not require any new code. > >=20 > > > Also, in the case of a hybrid image booted using a CD, the mismatch b= etween > > > the 2048 byte sectors of the CD and the 512 byte sector values used i= n the > > > MBR means that GRUB is not able to access the correctly ESP anyway. > > >=20 > >=20 > > It may depend on how you create partition table. Neither openSUSE DVD > > nor images created by grub-mkrescue have problems. Did you actually try > > it? > >=20 > > As example > >=20 > > bor@opensuse:~/src/grub> xorriso --indev /datastore/iso/openSUSE-13.2-D= VD-x86_64.iso --report-el-torito plain --report-system-area plain > > xorriso 1.3.8 : RockRidge filesystem manipulator, libburnia project. > >=20 > > xorriso : NOTE : Loading ISO image tree from LBA 0 > > xorriso : UPDATE : 6102 nodes read in 1 seconds > > xorriso : NOTE : Detected El-Torito boot information which currently is= set to be discarded > > Drive current: -indev '/datastore/iso/openSUSE-13.2-DVD-x86_64.iso' > > Media current: stdio file, overwriteable > > Media status : is written , is appendable > > Boot record : El Torito , MBR isohybrid cyl-align-off > > Media summary: 1 session, 2284287 data blocks, 4461m data, 31.5g free > > Volume id : 'openSUSE-13.2-DVD-x86_640051' > > El Torito catalog : 20 1 > > El Torito images : N Pltf B Emul Ld_seg Hdpt Ldsiz L= BA > > El Torito boot img : 1 BIOS y none 0x0000 0x00 4 58= 26 > > El Torito boot img : 2 UEFI y none 0x0000 0x00 1 8= 96 > > El Torito img path : 1 /boot/x86_64/loader/isolinux.bin > > El Torito img opts : 1 boot-info-table isohybrid-suitable > > El Torito img path : 2 /boot/x86_64/efi > > System area options: 0x00000202 > > System area summary: MBR isohybrid cyl-align-off > > ISO image size/512 : 9137148 > > Partition offset : 0 > > MBR heads per cyl : 0 > > MBR secs per head : 0 > > MBR partition table: N Status Type Start Blocks > > MBR partition : 1 0x00 0xef 3584 8064 > > MBR partition : 2 0x80 0x17 11648 9126528 > > MBR partition path : 1 /boot/x86_64/efi > > bor@opensuse:~/src/grub>=20 > >=20 > > You may consider using xorriso to create image, it does quite good job > > with hybrid images. >=20 > Yes I have tried, and I made a video of it :-) > https://rossl.org/junk/grub.webm >=20 > See that GRUB is not able to access (cd0,msdos2), which is the embedded > FAT partition. >=20 OK. What about using GPT? it definitely works, just tested. > >=20 > > > For these reasons, I think it is useful to parse the El Torito boot > > > catalog. > > >=20 > >=20 > > I'm not entirely opposed to it, I just do not see compelling reasons to > > do it :) > >=20 > > I actually think that viewing ESP as opaque binary executable and using > > ISO as primary data location is more generic and useful. This way you > > can have any amount of different platform binaries all sharing common > > /boot/grub on ISO with common configuration. Also information in El > > Torito boot image (as grub.cfg) is not as easily accessible as > > information on ISO. Making it hard to understand what image actually > > does. > >=20 >=20 > Except that the ESP isn't a binary executable, the firmware presents it > as a file system and gives it to GRUB as the boot location. >=20 > As it currently stands, the configurations are not shared, because > currently when booting the image using a CD it will look for the cfg at > (cd0)/..., and when booting the same image off a USB, it will look at > the FAT partition (hd0,msdos2)/... because it knows how to find it. >=20 Image created by grub-mkrescue looks at the same place whatever way it is booted. You need to set prefix to ()/path/to/grub then it will be auto-filled with correct boot device name. --Sig_/vlAWE60BCX4/X28vKCoigUI Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iEYEARECAAYFAlV15n0ACgkQR6LMutpd94zwOwCgjZmKu7pWSUKqVgjZwYemkcms 7g4An0e64s+V3ADbfaaVedrTAkff9Dlx =XV4l -----END PGP SIGNATURE----- --Sig_/vlAWE60BCX4/X28vKCoigUI--