summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xinitramfs-tools/hooks/samizdat22
-rw-r--r--initrd-dependencies.txt5
-rwxr-xr-xinitrd.sh30
3 files changed, 42 insertions, 15 deletions
diff --git a/initramfs-tools/hooks/samizdat b/initramfs-tools/hooks/samizdat
index 3415f18..2dffdd1 100755
--- a/initramfs-tools/hooks/samizdat
+++ b/initramfs-tools/hooks/samizdat
@@ -1,25 +1,31 @@
1#!/bin/sh 1#!/bin/sh
2[ "$1" = prereqs ] && { echo; exit; } 2[ "$1" = prereqs ] && { echo; exit; }
3 3
4CopyExec() { copy_exec "$@" || exit 1; }
5
4. /usr/share/initramfs-tools/hook-functions 6. /usr/share/initramfs-tools/hook-functions
5 7
6for f in ./old-school/*; do copy_exec "$f" /bin; done 8for f in ./old-school/*; do CopyExec "$f" /bin; done
7 9
8path_execs='mountpoint openvt' 10# TODO: check samizdat source to see what it copies
11path_execs='mountpoint openvt rsync gpg2 gpg-agent pinentry-curses truncate cryptsetup mkfs.btrfs'
9 12
10for c in $path_execs; do copy_exec "$(which $c)" /bin; done 13for c in $path_execs; do CopyExec "$(which $c)" /bin; done
11 14
12copy_exec /bin/openvt /bin/OpenVT 15CopyExec /bin/openvt /bin/OpenVT
13 16
14absolute_path_copies='/lib/terminfo/l/linux' 17absolute_path_copies='/lib/terminfo/l/linux'
15 18
16for f in $absolute_path_copies; do copy_exec "$f" "$f"; done 19for f in $absolute_path_copies; do CopyExec "$f" "$f"; done
17 20
18samizdat_execs_dir=/home/d/src/samizdat # TODO 21samizdat_execs_dir=/home/d/src/samizdat # TODO
19samizdat_execs='wait_for_files samizdat-pinentry dynmenu' 22samizdat_execs='wait_for_files samizdat-pinentry dynmenu src/samizdat-password-agent src/samizdat-gpg-agent'
23
24for c in $samizdat_execs; do CopyExec ${samizdat_execs_dir}/$c /bin; done
20 25
21for c in $samizdat_execs; do copy_exec ${samizdat_execs_dir}/$c /bin; done 26CopyExec vol_id.txt /lib/samizdat/vol_id.txt
22 27
23copy_exec vol_id.txt /lib/samizdat/vol_id.txt 28modules='loop xts dm-crypt'
29for m in $modules; do force_load "$m" || exit 1; done
24 30
25exit 0 31exit 0
diff --git a/initrd-dependencies.txt b/initrd-dependencies.txt
new file mode 100644
index 0000000..6f4f9e6
--- /dev/null
+++ b/initrd-dependencies.txt
@@ -0,0 +1,5 @@
1expect
2pgpdump
3monkeysphere
4libmime-base32-perl
5pinentry-curses
diff --git a/initrd.sh b/initrd.sh
index 5adb405..1eca9bb 100755
--- a/initrd.sh
+++ b/initrd.sh
@@ -6,14 +6,30 @@ vmlinuz=isolinux/live/vmlinuz
6version=$(uname -r) 6version=$(uname -r)
7conf_dir=initramfs-tools 7conf_dir=initramfs-tools
8 8
9if [ ! -e "$initrd" -o ! -e "$vmlinuz" ]; then 9apt_dependencies=initrd-dependencies.txt
10 need_update=1 10
11elif [ "$(find "$conf_dir" -newer "$initrd" -print -quit)" ]; then 11find_source_dirs() {
12 need_update=1 12 set -- find "$conf_dir" ./old-school "$@"
13fi 13 "$@"
14}
15
16force_rebuild()
17{
18 touch "$conf_dir"
19 return 1
20}
21
22rebuild()
23{
24 [ ! -f "$apt_dependencies" ] || sudo apt-get install -q=10 --no-upgrade -y $(cat "$apt_dependencies")
14 25
15if [ "$need_update" ]; then
16 set -ex 26 set -ex
17 cp -f /boot/vmlinuz-${version} "$vmlinuz" 27 cp -f /boot/vmlinuz-${version} "$vmlinuz"
18 /usr/sbin/mkinitramfs -d "$conf_dir" -o "$initrd" ${version} 28 /usr/sbin/mkinitramfs -d "$conf_dir" -o "$initrd" ${version} || force_rebuild
29}
30
31if [ ! -e "$initrd" -o ! -e "$vmlinuz" ]; then
32 rebuild
33elif [ "$(find_source_dirs -newer "$initrd" -print -quit)" ]; then
34 rebuild
19fi 35fi