# alx specific functions add_conf_prot() { local i for i in $@ do export CONFIG_PROTECT="${CONFIG_PROTECT} ${i}" done } add_conf_prot_mask() { local i for i in $@ do export CONFIG_PROTECT_MASK="${CONFIG_PROTECT_MASK} ${i}" done } # updates /boot/grub/grub.conf with given params # example: alx_grub_update kernel-image-name description alx_grub_update() { local KERNEL_IMAGE local KERNEL_DESCRIPTION local i local rootfs local grubroot local OLD_IFS local grubconf="/boot/grub/grub.conf" KERNEL_IMAGE="$1" KERNEL_DESCRIPTION="$2" # some checks if [ -z "${KERNEL_IMAGE}" ] then echo "At least a kernel-image must be given" return 1 fi [ -z "${KERNEL_DESCRIPTION}" ] && KERNEL_DESCRIPTION="${KERNEL_IMAGE}" if [ ! -f ${grubconf} ] then echo "${grubconf} not found" return 1 fi # first of all get the first rootfs instance for i in $(< ${grubconf}) do rootfs="$(echo ${i} | grep root=)" [[ -n ${rootfs} ]] && break done # then get the grub-root OLD_IFS="$IFS" IFS=$'\n' for i in $(< ${grubconf}) do grubroot="$(echo ${i} | grep 'root (' | cut -d' ' -f2)" [[ -n ${grubroot} ]] && break done IFS="${OLD_IFS}" # fix description : > ${grubconf} echo "default 0" >> ${grubconf} echo "timeout 3" >> ${grubconf} # using roots current password echo "password --md5 $(cat /etc/shadow | grep root | cut -d: -f2)" >> ${grubconf} echo >> ${grubconf} acho "# normal boot" >> ${grubconf} echo "title ${KERNEL_DESCRIPTION}" >> ${grubconf} echo "root ${grubroot}" >> ${grubconf} echo "kernel ${grubroot}/boot/${KERNEL_IMAGE} ${rootfs} quiet" >> ${grubconf} echo >> ${grubconf} echo "# admin boots" >> ${grubconf} echo "title ${KERNEL_DESCRIPTION} - Re-run hardware-detection" >> ${grubconf} echo "lock" >> ${grubconf} echo "root ${grubroot}" >> ${grubconf} echo "kernel ${grubroot}/boot/${KERNEL_IMAGE} ${rootfs} quiet hardware-auto-detection" >> ${grubconf} echo >> ${grubconf} echo "title ${KERNEL_DESCRIPTION} - Reset *all* local settings" >> ${grubconf} echo "lock" >> ${grubconf} echo "root ${grubroot}" >> ${grubconf} echo "kernel ${grubroot}/boot/${KERNEL_IMAGE} ${rootfs} quiet alx-reset-settings" >> ${grubconf} } ## compat alx_grub_update_new() { echo -e "${COLYELLOW}alx_grub_update_new() is deprecated - please only use alx_grub_update() from now on${COLDEFAULT}" alx_grub_update echo -e "${COLYELLOW}alx_grub_update_new() is deprecated - please only use alx_grub_update() from now on${COLDEFAULT}" }