grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Obtaining the UUID of the system for a PXE boot


From: Holger Goetz
Subject: Re: Obtaining the UUID of the system for a PXE boot
Date: Sat, 20 Jul 2013 16:23:47 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:23.0) Gecko/20100101 Thunderbird/23.0


On 19.07.2013 18:31, David Michael wrote:
Hi,

On Fri, Jul 19, 2013 at 10:24 AM, Holger Goetz <address@hidden> wrote:
Yes it's towards the right direction. But it is 32bit only if i understand
correctly, and it basically is a memory access to fixed/hardcoded  MEMORY
address (0x80000001). to pick the veondor id and machine info.
It's true that I've mostly been using the module on 32-bit virtual
machines, so it hasn't really been tested elsewhere.  However, I'm not
sure I understand what you mean by the hard-coded memory address.  The
first function grub_smbios_locate_eps searches for the SMBIOS entry
point structure as described in the spec.  The table entries are then
read at the table address found in the EPS, not a hard-coded location.

I have only 64bit - UEFI here - therefore the approach w/ first searching
the SMBIOS infoblock in memory is probably required. And then properly walk
through the info-tables/blocks to get to the UUID entry. It doesn'T need to
be a fixed info to be retrieved from the SMBIOS memory - maybe a generic
function to query/search a specific entry and return that to be assigned to
a variable would be more flexible.
The module's command-line interface does use a (dumb) query/search
method.  You can specify the desired entry's type and/or handle and
the data to retrieve from it.  For example the following command
prints the machine name (i.e. the string at offset 5 in an entry with
type 1).

         smbios -t 1 -s 5

I think you may have found the first patch I sent in that old thread,
which was for different functionality.  The SMBIOS module can be
downloaded from the list archive[1].

Unfortunately it doesn't have any convenient functions to output a
usable UUID.  It shouldn't take much to add one: the variable "entry"
in the "main" function is a pointer to the matched entry, so entry[8]
through entry[23] is the UUID in a call "smbios -t 1 ...".  I've
verified these bytes correspond to dmidecode output on my physical
hardware with the following.

         for i in 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
         do smbios -t 1 -b $i
         done

If the module isn't salvageable on UEFI, maybe I can send out an
updated version whenever I upgrade to such a system.

Thanks.

David

[1] https://lists.gnu.org/archive/html/grub-devel/2013-04/binx8am8MvVSh.bin

Hi David,

you're right i had only found a small patch using cpuid to retrieve vendor&model .

Looking at the smbios module briefly it looks very much like what i was hoping for. I'll look into it in detail and will see what needs to be added for the UUID on a x86_64-efi system and let you know.

Thanks,
Holger




reply via email to

[Prev in Thread] Current Thread [Next in Thread]