pvgrub_image: add package

Add a package containing a pvgrub image for xen generated from grub2
This commit is contained in:
Michał Pałka
2017-07-05 12:23:30 +00:00
parent d15e20f9c9
commit 55208cc2e1
5 changed files with 63 additions and 1 deletions
@@ -0,0 +1 @@
normal (memdisk)/grub.cfg
@@ -0,0 +1,10 @@
# The parentheses around ${root} here to match Grub's config file syntax
if search -s -f /boot/grub/grub.cfg ; then
echo "Reading (${root})/boot/grub/grub.cfg"
configfile /boot/grub/grub.cfg
fi
if search -s -f /grub/grub.cfg ; then
echo "Reading (${root})/grub/grub.cfg"
configfile /grub/grub.cfg
fi
@@ -0,0 +1,42 @@
{ stdenv, grub2_xen }:
with stdenv.lib;
let
efiSystemsBuild = {
"i686-linux".target = "i386";
"x86_64-linux".target = "x86_64";
"aarch64-linux".target = "aarch64";
};
in (
stdenv.mkDerivation rec {
name = "pvgrub-image";
configs = ./configs;
buildInputs = [ grub2_xen ];
buildCommand = ''
cp "${configs}"/* .
tar -cf memdisk.tar grub.cfg
# We include all modules except all_video.mod as otherwise grub will fail printing "no symbol table"
# if we include it.
grub-mkimage -O "${efiSystemsBuild.${stdenv.system}.target}-xen" -c grub-bootstrap.cfg \
-m memdisk.tar -o "grub-${efiSystemsBuild.${stdenv.system}.target}-xen.bin" \
$(ls "${grub2_xen}/lib/grub/${efiSystemsBuild.${stdenv.system}.target}-xen/" |grep 'mod''$'|grep -v '^all_video\.mod''$')
mkdir -p "$out/lib/grub-xen"
cp "grub-${efiSystemsBuild.${stdenv.system}.target}-xen.bin" $out/lib/grub-xen/
'';
meta = with stdenv.lib; {
description = "PvGrub image for use for booting PV Xen guests";
longDescription =
'' This package provides a PvGrub image for booting Para-Virtualized (PV)
Xen guests
'';
platforms = platforms.gnu;
};
})