liminix

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 74f2aa62474c670fbbd1d1e824c692cd43056f33
parent 888a0d5f74ec902e4d00de6a2013c4ad098d6a73
Author: Daniel Barlow <dan@telent.net>
Date:   Sat,  6 May 2023 23:03:51 +0100

initramfs-peek: an initramfs image with a shell, for debugging

Diffstat:
Mpkgs/default.nix | 1+
Apkgs/initramfs-peek/default.nix | 37+++++++++++++++++++++++++++++++++++++
2 files changed, 38 insertions(+), 0 deletions(-)

diff --git a/pkgs/default.nix b/pkgs/default.nix @@ -45,6 +45,7 @@ openwrt = callPackage ./openwrt {}; + initramfs-peek = callPackage ./initramfs-peek {}; min-copy-closure = callPackage ./min-copy-closure {}; hi = callPackage ./hi {}; } diff --git a/pkgs/initramfs-peek/default.nix b/pkgs/initramfs-peek/default.nix @@ -0,0 +1,37 @@ +{ + busybox +, pkgsBuildBuild +, runCommand +, cpio +, writeReferencesToFile +, writeScript +} : +let + inherit (pkgsBuildBuild) gen_init_cpio; + script = writeScript "init" '' + #!/bin/sh + exec >/dev/console + echo Running in initramfs + PATH=${busybox}/bin:$PATH + export PATH + mount -t proc none /proc + mount -t sysfs none /sys + ${busybox}/bin/sh + ''; + refs = writeReferencesToFile busybox; +in runCommand "initramfs.cpio" { } '' + cat << SPECIALS | ${gen_init_cpio}/bin/gen_init_cpio /dev/stdin > out + dir /proc 0755 0 0 + dir /sys 0755 0 0 + dir /dev 0755 0 0 + nod /dev/console 0600 0 0 c 5 1 + nod /dev/mtdblock0 0600 0 0 b 31 0 + dir /nix 0755 0 0 + dir /nix/store 0755 0 0 + dir /bin 0755 0 0 + file /bin/sh ${busybox}/bin/sh 0755 0 0 + file /init ${script} 0755 0 0 + SPECIALS + find $(cat ${refs}) | ${pkgsBuildBuild.cpio}/bin/cpio -H newc -o -A -v -O out + cp out $out +''