Merge pull request #22969 from symphorien/extrainitrd
grub module: add extraInitrd option
This commit is contained in:
commit
60555c7c0a
@ -54,7 +54,7 @@ let
|
|||||||
inherit (efi) canTouchEfiVariables;
|
inherit (efi) canTouchEfiVariables;
|
||||||
inherit (cfg)
|
inherit (cfg)
|
||||||
version extraConfig extraPerEntryConfig extraEntries forceInstall useOSProber
|
version extraConfig extraPerEntryConfig extraEntries forceInstall useOSProber
|
||||||
extraEntriesBeforeNixOS extraPrepareConfig configurationLimit copyKernels
|
extraEntriesBeforeNixOS extraPrepareConfig extraInitrd configurationLimit copyKernels
|
||||||
default fsIdentifier efiSupport efiInstallAsRemovable gfxmodeEfi gfxmodeBios;
|
default fsIdentifier efiSupport efiInstallAsRemovable gfxmodeEfi gfxmodeBios;
|
||||||
path = (makeBinPath ([
|
path = (makeBinPath ([
|
||||||
pkgs.coreutils pkgs.gnused pkgs.gnugrep pkgs.findutils pkgs.diffutils pkgs.btrfs-progs
|
pkgs.coreutils pkgs.gnused pkgs.gnugrep pkgs.findutils pkgs.diffutils pkgs.btrfs-progs
|
||||||
@ -267,6 +267,19 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extraInitrd = mkOption {
|
||||||
|
type = types.nullOr types.path;
|
||||||
|
default = null;
|
||||||
|
example = "/boot/extra_initrafms.gz";
|
||||||
|
description = ''
|
||||||
|
The path to a second initramfs to be supplied to the kernel.
|
||||||
|
This ramfs will not be copied to the store, so that it can
|
||||||
|
contain secrets such as LUKS keyfiles or ssh keys.
|
||||||
|
This implies that rolling back to a previous configuration
|
||||||
|
won't rollback the state of this file.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
useOSProber = mkOption {
|
useOSProber = mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
|
@ -49,6 +49,7 @@ my $extraPrepareConfig = get("extraPrepareConfig");
|
|||||||
my $extraPerEntryConfig = get("extraPerEntryConfig");
|
my $extraPerEntryConfig = get("extraPerEntryConfig");
|
||||||
my $extraEntries = get("extraEntries");
|
my $extraEntries = get("extraEntries");
|
||||||
my $extraEntriesBeforeNixOS = get("extraEntriesBeforeNixOS") eq "true";
|
my $extraEntriesBeforeNixOS = get("extraEntriesBeforeNixOS") eq "true";
|
||||||
|
my $extraInitrd = get("extraInitrd");
|
||||||
my $splashImage = get("splashImage");
|
my $splashImage = get("splashImage");
|
||||||
my $configurationLimit = int(get("configurationLimit"));
|
my $configurationLimit = int(get("configurationLimit"));
|
||||||
my $copyKernels = get("copyKernels") eq "true";
|
my $copyKernels = get("copyKernels") eq "true";
|
||||||
@ -226,6 +227,13 @@ my $grubStore;
|
|||||||
if ($copyKernels == 0) {
|
if ($copyKernels == 0) {
|
||||||
$grubStore = GrubFs($storePath);
|
$grubStore = GrubFs($storePath);
|
||||||
}
|
}
|
||||||
|
my $extraInitrdPath;
|
||||||
|
if ($extraInitrd) {
|
||||||
|
if (! -f $extraInitrd) {
|
||||||
|
print STDERR "Warning: the specified extraInitrd " . $extraInitrd . " doesn't exist. Your system won't boot without it.\n";
|
||||||
|
}
|
||||||
|
$extraInitrdPath = GrubFs($extraInitrd);
|
||||||
|
}
|
||||||
|
|
||||||
# Generate the header.
|
# Generate the header.
|
||||||
my $conf .= "# Automatically generated. DO NOT EDIT THIS FILE!\n";
|
my $conf .= "# Automatically generated. DO NOT EDIT THIS FILE!\n";
|
||||||
@ -336,6 +344,9 @@ sub addEntry {
|
|||||||
|
|
||||||
my $kernel = copyToKernelsDir(Cwd::abs_path("$path/kernel"));
|
my $kernel = copyToKernelsDir(Cwd::abs_path("$path/kernel"));
|
||||||
my $initrd = copyToKernelsDir(Cwd::abs_path("$path/initrd"));
|
my $initrd = copyToKernelsDir(Cwd::abs_path("$path/initrd"));
|
||||||
|
if ($extraInitrd) {
|
||||||
|
$initrd .= " " .$extraInitrdPath->path;
|
||||||
|
}
|
||||||
my $xen = -e "$path/xen.gz" ? copyToKernelsDir(Cwd::abs_path("$path/xen.gz")) : undef;
|
my $xen = -e "$path/xen.gz" ? copyToKernelsDir(Cwd::abs_path("$path/xen.gz")) : undef;
|
||||||
|
|
||||||
# FIXME: $confName
|
# FIXME: $confName
|
||||||
@ -358,6 +369,9 @@ sub addEntry {
|
|||||||
if ($copyKernels == 0) {
|
if ($copyKernels == 0) {
|
||||||
$conf .= $grubStore->search . "\n";
|
$conf .= $grubStore->search . "\n";
|
||||||
}
|
}
|
||||||
|
if ($extraInitrd) {
|
||||||
|
$conf .= $extraInitrdPath->search . "\n";
|
||||||
|
}
|
||||||
$conf .= " $extraPerEntryConfig\n" if $extraPerEntryConfig;
|
$conf .= " $extraPerEntryConfig\n" if $extraPerEntryConfig;
|
||||||
$conf .= " multiboot $xen $xenParams\n" if $xen;
|
$conf .= " multiboot $xen $xenParams\n" if $xen;
|
||||||
$conf .= " " . ($xen ? "module" : "linux") . " $kernel $kernelParams\n";
|
$conf .= " " . ($xen ? "module" : "linux") . " $kernel $kernelParams\n";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user