* Modularise vfat support. Also add fsck.vfat to the initrd. This

prevents errors when booting from VFAT (e.g. an ISO image converted
  using unetbootin).

svn path=/nixos/trunk/; revision=32956
This commit is contained in:
Eelco Dolstra 2012-03-09 16:17:37 +00:00
parent 03ebb883d1
commit 9d89ca0c03
5 changed files with 32 additions and 5 deletions

View file

@ -259,4 +259,9 @@ in
touch /etc/NIXOS
${config.environment.nix}/bin/nix-env -p /nix/var/nix/profiles/system --set /var/run/current-system
'';
# Add vfat support to the initrd to enable people to copy the
# contents of the CD to a bootable USB stick.
boot.initrd.supportedFilesystems = [ "vfat" ];
}

View file

@ -203,6 +203,7 @@
./tasks/filesystems/ext.nix
./tasks/filesystems/nfs.nix
./tasks/filesystems/reiserfs.nix
./tasks/filesystems/vfat.nix
./tasks/kbd.nix
./tasks/lvm.nix
./tasks/network-interfaces.nix

View file

@ -41,10 +41,6 @@
# Virtio (QEMU, KVM etc.) support.
"virtio_net" "virtio_pci" "virtio_blk" "virtio_balloon" "virtio_console"
# Add vfat to enable people to copy the contents of the CD to a
# bootable USB stick.
"vfat" "nls_cp437" "nls_iso8859-1"
];
boot.initrd.kernelModules =

View file

@ -51,6 +51,6 @@
];
# Include support for various filesystems.
boot.supportedFilesystems = [ "btrfs" "reiserfs" ];
boot.supportedFilesystems = [ "btrfs" "reiserfs" "vfat" ];
}

View file

@ -0,0 +1,25 @@
{ config, pkgs, ... }:
with pkgs.lib;
let
inInitrd = any (fs: fs == "vfat") config.boot.initrd.supportedFilesystems;
in
{
config = mkIf (any (fs: fs == "vfat") config.boot.supportedFilesystems) {
system.fsPackages = [ pkgs.dosfstools ];
boot.initrd.kernelModules = mkIf inInitrd [ "vfat" "nls_cp437" "nls_iso8859-1" ];
boot.initrd.extraUtilsCommands = mkIf inInitrd
''
cp -v ${pkgs.dosfstools}/sbin/dosfsck $out/bin
ln -sv dosfsck $out/bin/fsck.vfat
'';
};
}