[Libosinfo] [libosinfo PATCH v2 6/6] media: Check whether PPC ISOs are bootable

Daniel P. Berrangé berrange at redhat.com
Thu Dec 20 09:51:03 UTC 2018


On Thu, Dec 20, 2018 at 08:46:47AM +0100, Fabiano Fidêncio wrote:
> PPC ISOs do not have the "El Torito" extension that describes whether
> the media is bootable or not. However, they have a "bootinfo.txt" file
> placed under "ppc" directory in order to specify the media is bootable.
> 
> So, let's add a few more checks looking for "/ppc/bootinfo.txt" in case
> the El Torito header is not found.
> 
> The whole implementation has been based on the following sources:
> - The ISO 9660 (ECMA-119) specification:
>   http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-119.pdf
> - The ISO 9660 osdev wiki page:
>   https://wiki.osdev.org/ISO_9660
> - IBM's developer article:
>   https://www.ibm.com/developerworks/linux/library/l-detecting-bootable-ibm-power-server-iso-images/index.html
> 
> And what the implementation does is:
> - Access the *root* directory record, which has a fixed size of 33 bytes
>   and is located at the bytes offset 156 of the PVD;
> - Load the *root* directory record extent content into the memory and:
>   - Search for the the dir/file we're looking at;
>   - In the dir is present, we load its directory record extent content
>     into the memory and search for the next dir/file;
>     - In case the file is present, we return that the media is bootable;
>     - Otherwise, we return the media is non bootable;
> 
> Mind, though, that this code is *not* generic enough to be adapted in
> case we want to search for a different dir/file and the reason for that
> is related to some ISOs using a TRANS.TBL table that translates the
> given name of a file to the shown name of the same file.
> 
> If, for some reason, we ever want to take the path of having this code
> more generic we'd have to:
> - For each directory acessed, search for TRANS.TBL;
>   - In case it's present, load its content into a hash table and, for
>     each dir/file, check the name of the file we're looking for with the
>     shown name (only present in the TRANS.TBL;
>   - Otherwise, just follow the very same code we currently have;
> 
> The decision for not implementing this TRANS.TBL changes is, mainly,
> because it'd make the code circa twice slower than it currently is
> (as we'd have to search for the TRANS.TBL as the first thing ...)
> without any specific gain for the needs we have right now. In case
> there's the need, in the future, it could be implemented in the way
> described here.
> 
> https://gitlab.com/libosinfo/libosinfo/issues/8
> 
> Signed-off-by: Fabiano Fidêncio <fidencio at redhat.com>
> ---
>  osinfo/osinfo_media.c | 291 +++++++++++++++++++++++++++++++++++++++++-
>  osinfo/osinfo_media.h |   3 +-
>  2 files changed, 287 insertions(+), 7 deletions(-)

Reviewed-by: Daniel P. Berrangé <berrange at redhat.com>

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




More information about the Libosinfo mailing list