summaryrefslogtreecommitdiff
path: root/sys-boot/myinitramfs/files/gen.sh
diff options
context:
space:
mode:
Diffstat (limited to 'sys-boot/myinitramfs/files/gen.sh')
-rwxr-xr-xsys-boot/myinitramfs/files/gen.sh47
1 files changed, 47 insertions, 0 deletions
diff --git a/sys-boot/myinitramfs/files/gen.sh b/sys-boot/myinitramfs/files/gen.sh
new file mode 100755
index 0000000..3341d93
--- /dev/null
+++ b/sys-boot/myinitramfs/files/gen.sh
@@ -0,0 +1,47 @@
+#!/bin/sh
+set -e
+
+OUT="$(readlink -f "$1")"
+shift
+
+cd "$(dirname "$(readlink -f "$0")")"
+
+INIT="./init.plain"
+
+while [ $# -gt 0 ]; do
+ case "$1" in
+ encrypted)
+ INIT="./init.enc"
+ ;;
+ esac
+ shift
+done
+
+LIST="$(mktemp)"
+
+# Base list
+cp baselist "$LIST"
+# Init script
+echo "file /init $INIT 755 0 0" >> "$LIST"
+echo >> "$LIST"
+# Executables
+while read EXE; do
+ P="$(which "$EXE")"
+ echo "# $EXE" >> "$LIST"
+ echo "file $P $P 755 0 0" >> "$LIST"
+ ldd "$P" | awk '{ print $3 }' | sed -n '/^[^ ]\+$/p' | while read LIB; do
+ echo "file $LIB $LIB 755 0 0" >> "$LIST"
+ done
+done <exelist
+
+# Print current list
+cat "$LIST"
+
+# Buld initramfs
+CPIO="$(mktemp)"
+gen_init_cpio "$LIST" > "$CPIO"
+gzip "$CPIO"
+mv "$CPIO.gz" "$OUT"
+
+# Cleaup
+rm "$LIST"