[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [OSSTEST PATCH 27/35] netboot: UEFI grub: Do it more like pxe
* Abolish setup_grub_efi_bootcfg and use setup_netboot_bootcfg instead. The latter function now expects to be given a config file for the host's bootloader. For a UEFI host, that's a grub config file, which it will write to the configured NetGrub location for the specific host. * Consequently, we no longer copy an actual grub image around every time we do a bootloader setup. Instead, we expect that the tftp server will be configured to point relevant hosts at a suitable fixed image, which will go to our config file. * Also, consequently, write the NetGrubTemplate path when we want to setup the bootloader, rather than the ad-hoc grub-%ether%. * Update mg-netgrub-loader-update jessie so that it writes the NetGrubTemplateReal from the config into the grub.cfg so that the grub image will read that file and then read the file created by setup_netboot_bootcfg. * Document this in its head comment. Currently this new mg-netgrub-loader-update is untested because jessie i386 grub (which is what we would run on the osstest controllers) does not understand the arm64-efi target. But the new Netgrub.cfg location is in use. Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> --- Osstest/TestSupport.pm | 19 ++----------------- mg-netgrub-loader-update | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/Osstest/TestSupport.pm b/Osstest/TestSupport.pm index 9be40a2..ed70579 100644 --- a/Osstest/TestSupport.pm +++ b/Osstest/TestSupport.pm @@ -2457,25 +2457,10 @@ END sub setup_netboot_di_uboot ($$$$$;%) { return &setup_netboot_di_bios; } sub setup_netboot_local_uboot ($) { return &setup_netboot_local_bios; } -sub setup_grub_efi_bootcfg ($$) { - my ($ho, $bootfile) = @_; - my $f = "grub.cfg-$ho->{Ether}"; - my $grub= $ho->{Tftp}{Path}.'/'.$ho->{Tftp}{GrubBase}.'/'. - $c{TftpGrubVersion}."/pxegrub-$r{arch}.efi"; - my $img=$ho->{Tftp}{Path}.'/'.hostnamepath($ho).'/pxe.img'; - - logm("Copy $grub => $img"); - copy($grub, $img) or die "Copy $grub to $img failed: $!"; - - logm("grub_efi bootcfg into $f"); - file_link_contents("$ho->{Tftp}{Path}$ho->{Tftp}{TmpDir}$f", - $bootfile, hostnamepath($ho)."-pxegrub.cfg"); -} - # UEFI systems netboot using grub.efi sub setup_netboot_di_uefi ($$$$$;%) { my ($ho,$kern,$initrd,$dicmd,$hocmd,%xopts) = @_; - setup_grub_efi_bootcfg($ho, <<END); + setup_netboot_bootcfg($ho, <<END); set default=0 set timeout=5 menuentry 'overwrite' { @@ -2493,7 +2478,7 @@ sub setup_netboot_local_uefi ($) { i386 IA32); die "EFI arch" unless $efi_archs{ $r{arch} }; my $efi = $efi_archs{ $r{arch} }; - setup_grub_efi_bootcfg($ho, <<END); + setup_netboot_bootcfg($ho, <<END); set default=0 set timeout=5 menuentry 'local' { diff --git a/mg-netgrub-loader-update b/mg-netgrub-loader-update index ec6dfd3..21157a2 100755 --- a/mg-netgrub-loader-update +++ b/mg-netgrub-loader-update @@ -3,6 +3,12 @@ # ./mg-netgrub-loader-update jessie # # Requires grub-mkimage (Debian package: grub-common) +# +# Creates $c{TftpPath}/$c{TftpGrubBase}/YYYY-MM-DD/grub/*.efi +# which expect to load .../YYYY-MM-DD/grub/grub.cfg +# which in turn loads .../Netgrub.cfg/EE:EE:EE:EE:EE:EE +# (where EE:EE:EE:EE:EE:EE is the MAC address) +# (or whatever else is specified in TftpNetGrubTemplates). # This is part of "osstest", an automated testing framework for Xen. # Copyright (C) 2015 Citrix Inc. @@ -40,6 +46,17 @@ dst=$date grubpfx=$grubbase/$date/grub +grubcfg=$(perl -e ' + use Osstest; + use Osstest::TestSupport; + readglobalconfig; + my $k = qw(TftpNetGrubTemplatesReal); + my $file = subst_netboot_template $c{$k}, + { ether => qw(${net_default_mac}) }, + $k; + print $file, "\n" or die $!; +') + mkdir -p $dstroot cd $dstroot mkdir -p $dst -- 2.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |