commit 9f3c80e77452ad5ad423efb3765efb68fa02f6af
parent 29c7af5892de13b5b852c988410dc929c221a7a2
Author: Daniel Barlow <dan@telent.net>
Date: Tue, 11 Apr 2023 23:08:02 +0100
make initramfs busybox (very slightly) smaller
Diffstat:
1 file changed, 21 insertions(+), 8 deletions(-)
diff --git 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
'';