70 lines
1.7 KiB
Bash
70 lines
1.7 KiB
Bash
#!/bin/bash
|
|
|
|
build() {
|
|
set +e
|
|
local mod pub_key
|
|
|
|
map add_module 'dm-crypt' 'dm-integrity' 'hid-generic?'
|
|
if [[ -n "$CRYPTO_MODULES" ]]; then
|
|
for mod in $CRYPTO_MODULES; do
|
|
add_module "$mod"
|
|
done
|
|
else
|
|
add_all_modules '/crypto/'
|
|
fi
|
|
|
|
add_binary 'cryptsetup'
|
|
|
|
map add_udev_rule \
|
|
'10-dm.rules' \
|
|
'13-dm-disk.rules' \
|
|
'95-dm-notify.rules' \
|
|
'/usr/lib/initcpio/udev/11-dm-initramfs.rules'
|
|
|
|
# cryptsetup calls pthread_create(), which dlopen()s libgcc_s.so.1
|
|
add_binary '/usr/lib/libgcc_s.so.1'
|
|
|
|
# cryptsetup loads the legacy provider which is required for whirlpool
|
|
add_binary '/usr/lib/ossl-modules/legacy.so'
|
|
|
|
# above is from encrypt hook, below is for gpg
|
|
|
|
if [ -d $BUILDROOT/etc/initcpio/gpg ]; then
|
|
echo "WARNING! /etc/initcpio/gpg exists in initramfs buildroot. Huh?"
|
|
rm -rf "$BUILDROOT/etc/initcpio/gpg"
|
|
fi
|
|
|
|
mkdir -p $BUILDROOT/etc/initcpio/gpg
|
|
chmod 0700 $BUILDROOT/etc/initcpio/gpg
|
|
|
|
add_binary "tr"
|
|
add_binary "dmsetup"
|
|
add_binary "gpg"
|
|
add_binary "gpg-agent"
|
|
add_binary "gpg-connect-agent"
|
|
add_binary "/usr/lib/gnupg/scdaemon"
|
|
|
|
add_file "/root/disk.bin.gpg"
|
|
|
|
pub_key="/root/disk.pub.key"
|
|
if [[ ! -f "$pub_key" ]]; then
|
|
error "file not found: '%s'" "$pub_key"
|
|
return 1
|
|
fi
|
|
|
|
gpg --homedir "$BUILDROOT/etc/initcpio/gpg" --import "$pub_key"
|
|
|
|
rm -f "$BUILDROOT/etc/initcpio/gpg/S.gpg-agent"*
|
|
|
|
add_runscript
|
|
}
|
|
|
|
help() {
|
|
cat <<HELPEOF
|
|
Plese refer to the help for the regular Arch encrypt hook, and the
|
|
docs in initramfs-pgp-encrypt.install for how to set up the PGP keys
|
|
HELPEOF
|
|
}
|
|
|
|
# vim: set ft=sh ts=4 sw=4 et:
|