diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2015-09-24 18:13:14 +0200 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2015-09-24 19:59:44 +0200 |
commit | 9d92bd7845a0fcf895a1e7c4ae95c908be673060 (patch) | |
tree | a5c0990def36969e3bc19d4aa9fc97f7dadcc846 /nixos/modules/system | |
parent | f40c7ed1435d9507868337ae7509fe6d0392498b (diff) | |
download | nixlib-9d92bd7845a0fcf895a1e7c4ae95c908be673060.tar nixlib-9d92bd7845a0fcf895a1e7c4ae95c908be673060.tar.gz nixlib-9d92bd7845a0fcf895a1e7c4ae95c908be673060.tar.bz2 nixlib-9d92bd7845a0fcf895a1e7c4ae95c908be673060.tar.lz nixlib-9d92bd7845a0fcf895a1e7c4ae95c908be673060.tar.xz nixlib-9d92bd7845a0fcf895a1e7c4ae95c908be673060.tar.zst nixlib-9d92bd7845a0fcf895a1e7c4ae95c908be673060.zip |
Add filesystem option to automatically grow to the maximum size
This is primarily for EC2 and other cloud environments, where the disk may be bigger than the original image.
Diffstat (limited to 'nixos/modules/system')
-rw-r--r-- | nixos/modules/system/boot/stage-1-init.sh | 15 | ||||
-rw-r--r-- | nixos/modules/system/boot/stage-1.nix | 7 |
2 files changed, 20 insertions, 2 deletions
diff --git a/nixos/modules/system/boot/stage-1-init.sh b/nixos/modules/system/boot/stage-1-init.sh index 480bbfa2b07b..516cbb295fa4 100644 --- a/nixos/modules/system/boot/stage-1-init.sh +++ b/nixos/modules/system/boot/stage-1-init.sh @@ -290,10 +290,23 @@ mountFS() { if [ -z "$fsType" ]; then fsType=auto; fi fi - echo "$device /mnt-root$mountPoint $fsType $options" >> /etc/fstab + # Filter out x- options, which busybox doesn't do yet. + local optionsFiltered="$(IFS=,; for i in $options; do if [ "${i:0:2}" != "x-" ]; then echo -n $i,; fi; done)" + + echo "$device /mnt-root$mountPoint $fsType $optionsFiltered" >> /etc/fstab checkFS "$device" "$fsType" + # Optionally resize the filesystem. + case $options in + *x-nixos.autoresize*) + if [ "$fsType" = ext2 -o "$fsType" = ext3 -o "$fsType" = ext4 ]; then + echo "resizing $device..." + resize2fs "$device" + fi + ;; + esac + # Create backing directories for unionfs-fuse. if [ "$fsType" = unionfs-fuse ]; then for i in $(IFS=:; echo ${options##*,dirs=}); do diff --git a/nixos/modules/system/boot/stage-1.nix b/nixos/modules/system/boot/stage-1.nix index f782eca3f647..ace2d10ec9c1 100644 --- a/nixos/modules/system/boot/stage-1.nix +++ b/nixos/modules/system/boot/stage-1.nix @@ -70,6 +70,12 @@ let copy_bin_and_libs ${pkgs.kmod}/bin/kmod ln -sf kmod $out/bin/modprobe + # Copy resize2fs if needed. + ${optionalString (any (fs: fs.autoResize) (attrValues config.fileSystems)) '' + # We need mke2fs in the initrd. + copy_bin_and_libs ${pkgs.e2fsprogs}/sbin/resize2fs + ''} + ${config.boot.initrd.extraUtilsCommands} # Copy ld manually since it isn't detected correctly @@ -393,7 +399,6 @@ in } ]; - system.build.bootStage1 = bootStage1; system.build.initialRamdisk = initialRamdisk; system.build.extraUtils = extraUtils; |