60 lines
1.6 KiB
Plaintext
60 lines
1.6 KiB
Plaintext
#!/bin/sh
|
|
CONF_FILE=etc/default/zfsbootmenu
|
|
CONF_DIR=etc/zfsbootmenu/dracut.conf.d
|
|
|
|
if [ -f ${CONF_FILE} ]; then
|
|
. ${CONF_FILE}
|
|
else
|
|
echo "${CONF_FILE} missing"
|
|
exit 0
|
|
fi
|
|
|
|
if [ "x${MANAGE_IMAGES}" != x1 ]; then
|
|
echo "Set MANAGE_IMAGES=1 in ${CONF_FILE}"
|
|
exit 0
|
|
elif [ ! -d ${IMAGE_DIR} ]; then
|
|
echo "${IMAGE_DIR} does not exist"
|
|
exit 0
|
|
fi
|
|
|
|
case "${ACTION}" in
|
|
pre)
|
|
for KERNEL in vmlinux vmlinuz kernel linux; do
|
|
if [ -f ${IMAGE_DIR}/${KERNEL}-zfsbootmenu ]; then
|
|
cp ${IMAGE_DIR}/${KERNEL}-zfsbootmenu ${IMAGE_DIR}/${KERNEL}-zfsbootmenu-backup
|
|
break
|
|
fi
|
|
done
|
|
|
|
if [ -f ${IMAGE_DIR}/initramfs-zfsbootmenu.img ]; then
|
|
cp ${IMAGE_DIR}/initramfs-zfsbootmenu.img ${IMAGE_DIR}/initramfs-zfsbootmenu-backup.img
|
|
fi
|
|
;;
|
|
post)
|
|
dracut -q -f --confdir ${CONF_DIR} ${IMAGE_DIR}/initramfs-zfsbootmenu.img
|
|
|
|
KVER=$( uname -r )
|
|
|
|
for KERNEL in vmlinux vmlinuz kernel linux; do
|
|
if [ -f boot/${KERNEL}-${KVER} ]; then
|
|
cp boot/${KERNEL}-${KVER} ${IMAGE_DIR}/${KERNEL}-zfsbootmenu
|
|
break
|
|
fi
|
|
done
|
|
|
|
# We always want both a primary and a backup image, even on the first run
|
|
for KERNEL in vmlinux vmlinuz kernel linux; do
|
|
if [ -f ${IMAGE_DIR}/${KERNEL}-zfsbootmenu ]; then
|
|
if [ ! -f ${IMAGE_DIR}/${KERNEL}-zfsbootmenu-backup ]; then
|
|
cp ${IMAGE_DIR}/${KERNEL}-zfsbootmenu ${IMAGE_DIR}/${KERNEL}-zfsbootmenu-backup
|
|
fi
|
|
break
|
|
fi
|
|
done
|
|
|
|
if [ ! -f ${IMAGE_DIR}/initramfs-zfsbootmenu-backup.img ]; then
|
|
cp ${IMAGE_DIR}/initramfs-zfsbootmenu.img ${IMAGE_DIR}/initramfs-zfsbootmenu-backup.img
|
|
fi
|
|
;;
|
|
esac
|