diff options
-rwxr-xr-x | initramfs-tools/hooks/samizdat | 22 | ||||
-rw-r--r-- | initrd-dependencies.txt | 5 | ||||
-rwxr-xr-x | initrd.sh | 30 |
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 | ||
4 | CopyExec() { copy_exec "$@" || exit 1; } | ||
5 | |||
4 | . /usr/share/initramfs-tools/hook-functions | 6 | . /usr/share/initramfs-tools/hook-functions |
5 | 7 | ||
6 | for f in ./old-school/*; do copy_exec "$f" /bin; done | 8 | for f in ./old-school/*; do CopyExec "$f" /bin; done |
7 | 9 | ||
8 | path_execs='mountpoint openvt' | 10 | # TODO: check samizdat source to see what it copies |
11 | path_execs='mountpoint openvt rsync gpg2 gpg-agent pinentry-curses truncate cryptsetup mkfs.btrfs' | ||
9 | 12 | ||
10 | for c in $path_execs; do copy_exec "$(which $c)" /bin; done | 13 | for c in $path_execs; do CopyExec "$(which $c)" /bin; done |
11 | 14 | ||
12 | copy_exec /bin/openvt /bin/OpenVT | 15 | CopyExec /bin/openvt /bin/OpenVT |
13 | 16 | ||
14 | absolute_path_copies='/lib/terminfo/l/linux' | 17 | absolute_path_copies='/lib/terminfo/l/linux' |
15 | 18 | ||
16 | for f in $absolute_path_copies; do copy_exec "$f" "$f"; done | 19 | for f in $absolute_path_copies; do CopyExec "$f" "$f"; done |
17 | 20 | ||
18 | samizdat_execs_dir=/home/d/src/samizdat # TODO | 21 | samizdat_execs_dir=/home/d/src/samizdat # TODO |
19 | samizdat_execs='wait_for_files samizdat-pinentry dynmenu' | 22 | samizdat_execs='wait_for_files samizdat-pinentry dynmenu src/samizdat-password-agent src/samizdat-gpg-agent' |
23 | |||
24 | for c in $samizdat_execs; do CopyExec ${samizdat_execs_dir}/$c /bin; done | ||
20 | 25 | ||
21 | for c in $samizdat_execs; do copy_exec ${samizdat_execs_dir}/$c /bin; done | 26 | CopyExec vol_id.txt /lib/samizdat/vol_id.txt |
22 | 27 | ||
23 | copy_exec vol_id.txt /lib/samizdat/vol_id.txt | 28 | modules='loop xts dm-crypt' |
29 | for m in $modules; do force_load "$m" || exit 1; done | ||
24 | 30 | ||
25 | exit 0 | 31 | exit 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 @@ | |||
1 | expect | ||
2 | pgpdump | ||
3 | monkeysphere | ||
4 | libmime-base32-perl | ||
5 | pinentry-curses | ||
@@ -6,14 +6,30 @@ vmlinuz=isolinux/live/vmlinuz | |||
6 | version=$(uname -r) | 6 | version=$(uname -r) |
7 | conf_dir=initramfs-tools | 7 | conf_dir=initramfs-tools |
8 | 8 | ||
9 | if [ ! -e "$initrd" -o ! -e "$vmlinuz" ]; then | 9 | apt_dependencies=initrd-dependencies.txt |
10 | need_update=1 | 10 | |
11 | elif [ "$(find "$conf_dir" -newer "$initrd" -print -quit)" ]; then | 11 | find_source_dirs() { |
12 | need_update=1 | 12 | set -- find "$conf_dir" ./old-school "$@" |
13 | fi | 13 | "$@" |
14 | } | ||
15 | |||
16 | force_rebuild() | ||
17 | { | ||
18 | touch "$conf_dir" | ||
19 | return 1 | ||
20 | } | ||
21 | |||
22 | rebuild() | ||
23 | { | ||
24 | [ ! -f "$apt_dependencies" ] || sudo apt-get install -q=10 --no-upgrade -y $(cat "$apt_dependencies") | ||
14 | 25 | ||
15 | if [ "$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 | |||
31 | if [ ! -e "$initrd" -o ! -e "$vmlinuz" ]; then | ||
32 | rebuild | ||
33 | elif [ "$(find_source_dirs -newer "$initrd" -print -quit)" ]; then | ||
34 | rebuild | ||
19 | fi | 35 | fi |