How to use Alpine Linux commit hooks
tl;dr:
- Create directory
/etc/apk/commit_hooks.d
- Put your executable files in there
- First argument passed to your script is the stage (
pre-commit
/post-commit
)
Example hook
#!/bin/sh
if ! mount | grep -q '/boot/efi'; then
mount /boot/efi
fi
if [[ "$1" == "post-commit" ]]; then
cp /boot/initramfs-lts /boot/efi/alpine/initramfs-lts
cp /boot/vmlinuz-lts /boot/efi/alpine/vmlinuz-lts
fi
Why?
I use Gummiboot as my bootloader,
which can boot Linux kernel images directly from the EFI partition.
Alpine packages don’t care about EFI though, they just put the stuff in /boot
directly.
(I mean, the official wiki just says “manually copy them to /boot/efi/
”, which works but I tend to forget about it)
I didn’t want to mount EFI as /boot
, so I decided that creating a commit hook would be
the easiest way of hotfixing that issue (not ideal, as it runs with every apk commit,
but feasible for my use).