From 8c960af98488c7585ef05a21013700783b1adede Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 10 Aug 2010 08:36:59 +0000 Subject: [PATCH] * Handle the case where /boot is on the same filesystem as / but on a different filesystem than /nix/store. In that case we need to copy the kernels and initrds to /boot. svn path=/nixos/trunk/; revision=23085 --- modules/installer/grub/grub-menu-builder.sh | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/modules/installer/grub/grub-menu-builder.sh b/modules/installer/grub/grub-menu-builder.sh index 0d5ddf60787..fc246847eed 100644 --- a/modules/installer/grub/grub-menu-builder.sh +++ b/modules/installer/grub/grub-menu-builder.sh @@ -25,17 +25,20 @@ case "$grubVersion" in esac -# Discover whether /boot is on the same filesystem as /. If not, then -# all kernels and initrds must be copied to /boot, and all paths in -# the GRUB config file must be relative to the root of the /boot -# filesystem. `$bootRoot' is the path to be prepended to paths under -# /boot. -if [ "$(stat -c '%D' /.)" = "$(stat -c '%D' /boot/.)" ]; then - bootRoot=/boot - copyKernels="@copyKernels@" # user can override in the NixOS config -else +# Discover whether /boot is on the same filesystem as / and +# /nix/store. If not, then all kernels and initrds must be copied to +# /boot, and all paths in the GRUB config file must be relative to the +# root of the /boot filesystem. `$bootRoot' is the path to be +# prepended to paths under /boot. +if [ "$(stat -c '%D' /.)" != "$(stat -c '%D' /boot/.)" ]; then bootRoot= copyKernels=1 +elif [ "$(stat -c '%D' /boot/.)" != "$(stat -c '%D' /nix/store/.)" ]; then + bootRoot=/boot + copyKernels=1 +else + bootRoot=/boot + copyKernels="@copyKernels@" # user can override in the NixOS config fi