> As it stands currently, net_pxe_* variables are defined on PC BIOS > platform only. For UEFI (which you apparently have) GRUB2 defines > net_efinetNN_* variables where efinetNN is symbolic name for interface > that was used to boot GRUB2. > > May be GRUB2 should also define net_pxe_* namespace for the case of > UEFI.
"pxe" is the name of drivers used for BIOS. But it's ok to define net_boot_* on all platforms and make it alias to the boot interface. > There is no real way to find out which interface was used for > booting and even if there were, grub does not support nested > variables substitution or eval'ing (like ${net_${boot_if}_mac). > Bash doesn't support such construction either. We generally prefer to stay reasonably close to bash to allow for easy reference and testing. > Probably, adding "eval" support is really the most simple. Could you > test the patch below. What it does, is > > - it adds "eval" command (same as known from UNIX shells) which > executes its argument eval is generally good > > - it exports boot interface as "efi_boot_interface" variable > This is needlessly EFI-specific. Similar variable would be useful on many platforms. But a possible problem is that it's not known when using native drivers (and on some platforms you have to). Perhaps making something similar to "root" partition would be useful: E.g. net_default_interface=pxe echo $net_default_mac With net_default_interface defined to boot one on boot. This would parallel net_default_server. > This should allow you to do > > if $grub_platform = efi ; then > eval "set net_pxe_mac=\$net_${efi_boot_interface}_mac" > fi > Defining system variables manually looks dirty. > +static grub_err_t > +grub_cmd_eval (grub_extcmd_context_t ctxt __attribute__((__unused__)), > + int argc, char *argv[]) > +{ You don't use any argument parsing. It's better to use command and not extcmd in this case. Also "eval" in bash concatenates its arguments. > + cmd = grub_register_extcmd ("eval", grub_cmd_eval, 0, > + N_("[STRING]"), N_("Evaluate commands"), This description seems a bit vague for either human-reading or translation.
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel