From fe3a63b7d03d7a85e4e1b17243a37691c4e7bc28 Mon Sep 17 00:00:00 2001 From: Rob Vermaas Date: Thu, 19 Jun 2014 10:56:52 +0200 Subject: EC2: allow building S3-backed HVM ami's (cherry picked from commit e007559e9580c134f43ea9dc2279ff41cb3bd015) --- nixos/modules/virtualisation/amazon-image.nix | 31 +++++++++++++++++++++------ 1 file changed, 24 insertions(+), 7 deletions(-) (limited to 'nixos/modules/virtualisation') diff --git a/nixos/modules/virtualisation/amazon-image.nix b/nixos/modules/virtualisation/amazon-image.nix index 9e64327c3abd..d0d47511af9b 100644 --- a/nixos/modules/virtualisation/amazon-image.nix +++ b/nixos/modules/virtualisation/amazon-image.nix @@ -34,16 +34,32 @@ in [ "closure" config.system.build.toplevel ]; } '' - # Create an empty filesystem and mount it. - ${pkgs.e2fsprogs}/sbin/mkfs.ext4 -L nixos /dev/vda - ${pkgs.e2fsprogs}/sbin/tune2fs -c 0 -i 0 /dev/vda - mkdir /mnt - mount /dev/vda /mnt + ${if cfg.hvm then '' + # Create a single / partition. + ${pkgs.parted}/sbin/parted /dev/vda mklabel msdos + ${pkgs.parted}/sbin/parted /dev/vda -- mkpart primary ext2 1M -1s + . /sys/class/block/vda1/uevent + mknod /dev/vda1 b $MAJOR $MINOR + + # Create an empty filesystem and mount it. + ${pkgs.e2fsprogs}/sbin/mkfs.ext4 -L nixos /dev/vda1 + ${pkgs.e2fsprogs}/sbin/tune2fs -c 0 -i 0 /dev/vda1 + mkdir /mnt + mount /dev/vda1 /mnt + '' else '' + # Create an empty filesystem and mount it. + ${pkgs.e2fsprogs}/sbin/mkfs.ext4 -L nixos /dev/vda + ${pkgs.e2fsprogs}/sbin/tune2fs -c 0 -i 0 /dev/vda + mkdir /mnt + mount /dev/vda /mnt + ''} # The initrd expects these directories to exist. mkdir /mnt/dev /mnt/proc /mnt/sys mount -o bind /proc /mnt/proc + mount -o bind /dev /mnt/dev + mount -o bind /sys /mnt/sys # Copy all paths in the closure to the filesystem. storePaths=$(perl ${pkgs.pathsFromGraph} /tmp/xchg/closure) @@ -73,9 +89,10 @@ in cp ${./amazon-config.nix} /mnt/etc/nixos/configuration.nix # Generate the GRUB menu. + ln -s vda /dev/xvda chroot /mnt ${config.system.build.toplevel}/bin/switch-to-configuration boot - umount /mnt/proc + umount /mnt/proc /mnt/dev /mnt/sys umount /mnt '' ); @@ -86,7 +103,7 @@ in boot.kernelModules = [ "xen-netfront" ]; # Generate a GRUB menu. Amazon's pv-grub uses this to boot our kernel/initrd. - boot.loader.grub.version = 1; + boot.loader.grub.version = if cfg.hvm then 2 else 1; boot.loader.grub.device = if cfg.hvm then "/dev/xvda" else "nodev"; boot.loader.grub.timeout = 0; boot.loader.grub.extraPerEntryConfig = "root (hd0${lib.optionalString cfg.hvm ",0"})"; -- cgit 1.4.1