You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

90 lines
2.2 KiB

#!/bin/sh
# gather grub configuration from snippets;
# copy modules; see also this feature's generate.mk
CFG="$WORKDIR/boot/grub/grub.cfg"
if [ "$GLOBAL_EFI_BOOTLOADER" != 'grub-efi' ]; then
case "$GLOBAL_BOOTLOADER" in
ieee1275boot|grubpcboot) ;;
*) rm -fr "$WORKDIR/boot"
exit 0;;
esac
fi
cd "$WORKDIR/boot/grub"
# copy extra files, if any
GRUB_FILES="$(cat .in/grub.list)"
if [ -n "${GRUB_FILES% }" ]; then
cp -a $GRUB_FILES .
fi
# number ordering sponsored by shell's pathname expansion
grep -hv '^#' $(find .in/*.cfg) > "$CFG"
# there should be DEFAULT directive there (at least for alterator-netinst)
default_change() {
local CFG=$1
if [ -n "$GLOBAL_GRUB_DEFAULT" ]; then
if [ -n "$(grep -i "$GLOBAL_GRUB_DEFAULT" "$CFG")" ]; then
DEFAULT="$GLOBAL_GRUB_DEFAULT"
else
echo "error: $GLOBAL_GRUB_DEFAULT missing in $CFG" >&2
exit 1
fi
else
grep -i '\-\-id ' "$CFG" | grep 'linux' && DEFAULT=linux
fi
sed -i "s/@default_id@/$DEFAULT/" "$CFG"
}
default_change "$CFG"
# snippets are not going into the actual image
if [ "$DEBUG" != 2 ]; then
rm -r .in/
fi
# change kernels version for multiple kernels only
if [ $(echo "$GLOBAL_KFLAVOURS" | wc -w) -gt 1 ]; then
kver=
echo $GLOBAL_KFLAVOURS
for KFLAVOUR in $GLOBAL_KFLAVOURS; do
kver+=" $(rpm -qa 'kernel-image*' \
--qf '%{version}-%{name}-%{release}\n' \
| grep "$KFLAVOUR" \
| sed 's/kernel-image-//')"
done
sed -i "s,@KFLAVOUR@,$kver,g" $CFG
fi
# copy grub theme
mkdir -p themes
GRUBTHEME="$(grep -m1 '/theme.txt;' "$CFG" |tail -n 1)"
GRUBTHEME="${GRUBTHEME%/*}"
GRUBTHEME="${GRUBTHEME##*/}"
if [ -n "$GRUBTHEME" ]; then
if [ -d "/boot/grub/themes/$GRUBTHEME" ]; then
cp -r /boot/grub/themes/$GRUBTHEME themes/
else
echo "Error: Directory /boot/grub/themes/$GRUBTHEME not exist"
exit 1
fi
fi
# copy grub locale
mkdir -p locale
if [ ! -e "$boot/locale" -a -f "$CFG" ]; then
langs=$(grep -oP "([a-z]{2})(?=_[A-Z]{2})" "$CFG" | sort | uniq)
for i in $langs; do
fp="/usr/share/locale/$i/LC_MESSAGES/grub.mo"
[ -f $fp ] && cp -arf "$fp" "locale/$i.mo"
done
fi
exit 0
# NB: there will be final macro expansion based on actual image sizes
# done by features.in/grub/scripts.d/20-propagator-ramdisk-grub