diff --git a/modules/initramfs.nix b/modules/initramfs.nix index 31ec94d..a0359f8 100644 --- a/modules/initramfs.nix +++ b/modules/initramfs.nix @@ -22,13 +22,20 @@ in outputs = { initramfs = let - bb = pkgs.busybox.override { + bb1 = pkgs.busybox.override { enableStatic = true; enableMinimal = true; enableAppletSymlinks = false; + extraConfig = '' - CONFIG_ASH y - CONFIG_LS y + CONFIG_DESKTOP n + CONFIG_ASH n + CONFIG_HUSH y + CONFIG_HUSH_TICK y + CONFIG_HUSH_LOOPS y + CONFIG_HUSH_CASE y + CONFIG_HUSH_ECHO y + CONFIG_HUSH_SET y CONFIG_LN y CONFIG_CAT y CONFIG_MOUNT y @@ -40,18 +47,23 @@ in CONFIG_CHMOD y CONFIG_MKDIR y CONFIG_MKNOD y - CONFIG_SH_IS_ASH y CONFIG_BASH_IS_NONE y + CONFIG_SH_IS_NONE y + CONFIG_SH_IS_ASH n CONFIG_FEATURE_SH_STANDALONE y CONFIG_FEATURE_PREFER_APPLETS y + CONFIG_BUSYBOX_EXEC_PATH "/bin/busybox" ''; }; + bb = bb1.overrideAttrs(o: { + makeFlags = []; + }); slashinit = pkgs.writeScript "init" '' - #!/bin/sh + #!/bin/hush exec >/dev/console echo Running in initramfs mount -t proc none /proc - set -- $(cat /proc/cmdline) + set -- `cat /proc/cmdline` for i in "$@" ; do case "''${i}" in root=*) @@ -62,7 +74,7 @@ in echo mount -t jffs2 ''${rootdevice} /target/persist mount -t jffs2 ''${rootdevice} /target/persist mount -o bind /target/persist/nix /target/nix - sh /target/persist/activate /target + hush /target/persist/activate /target cd /target mount -o bind /target / exec chroot . /bin/init "$@" @@ -80,7 +92,8 @@ in nod /dev/console 0600 0 0 c 5 1 dir /bin 0755 0 0 file /bin/busybox ${bb}/bin/busybox 0755 0 0 - slink /bin/sh /bin/busybox 0755 0 0 + slink /bin/hush /bin/busybox 0755 0 0 + slink /bin/chroot /bin/busybox 0755 0 0 file /init ${slashinit} 0755 0 0 SPECIALS '';