File: //usr/bin/setup_grub_cmdline
#!/bin/bash
# set grub cmdline
CMDLINE_FILE=$1
UUID=$2
GRUB_DIR=$3
if [ -z "$UUID" ]; then
GRUB_DEVICE=$(df --output=source /boot/ | sed -n '2p')
UUID=$(lsblk -n -o uuid $GRUB_DEVICE)
else
GRUB_DEVICE=$(blkid -U $UUID)
fi
if [ -z "$GRUB_DIR" ]; then
GRUB_DIR=$(grub2-mkrelpath /boot/grub2/)
mount_point=$(lsblk -n -o mountpoint $GRUB_DEVICE)
if [ "$mount_point" == "/" ]; then
GRUB_DIR="/boot/grub2"
elif [ "$mount_point" == "/boot" ]; then
GRUB_DIR="/grub2"
fi
fi
if ! grep ^GRUB_CMDLINE_LINUX= /etc/default/grub | grep -q "cat $CMDLINE_FILE"; then
eval $(grep ^GRUB_CMDLINE_LINUX= /etc/default/grub)
sed -i /^GRUB_CMDLINE_LINUX=/d /etc/default/grub
for var in $GRUB_CMDLINE_LINUX; do
if ! grep -q ^$(echo ${var} | awk -F= '{print $1}') $CMDLINE_FILE; then
NEW_GRUB_CMDLINE_LINUX="${GRUB_CMDLINE_LINUX:+$NEW_GRUB_CMDLINE_LINUX }${var}"
fi
done
echo 'GRUB_CMDLINE_LINUX="'${NEW_GRUB_CMDLINE_LINUX:+$NEW_GRUB_CMDLINE_LINUX }'$(cat '$CMDLINE_FILE' | xargs)"' >> /etc/default/grub
fi
grub2-mkconfig -o /boot/grub2/grub.cfg
EFI_GRUB_DIR=$(rpm --eval %{?efi_esp_dir})
if [ -z "$EFI_GRUB_DIR" ]; then
EFI_GRUB_DIR="/boot/efi/EFI/alinux"
fi
if [ -L /boot/grub2/grubenv ]; then
mv /boot/grub2/$(readlink /boot/grub2/grubenv) /boot/grub2/grubenv
fi
cat <<EOF > ${EFI_GRUB_DIR}/grub.cfg
search --no-floppy --set dev ${UUID:+--fs-uuid $UUID} ${GRUB_DIR:+--file $GRUB_DIR/grub.cfg}
set prefix=(\$dev)${GRUB_DIR}
export \$prefix
configfile \$prefix/grub.cfg
EOF