--- trunk/grubby/new-kernel-pkg 2012/02/17 23:10:15 1691 +++ trunk/grubby/new-kernel-pkg 2012/02/18 00:15:09 1697 @@ -42,6 +42,8 @@ [ -f /etc/conf.d/grubby ] && . /etc/conf.d/grubby [ -f /etc/conf.d/grubby-uboot ] && . /etc/conf.d/grubby-uboot +cfgGrub2="" +cfgGrub2Efi="" cfgGrub="" cfgLilo="" cfguBoot="" @@ -96,6 +98,8 @@ # this leaves i?86 and x86_64 liloConfig=/etc/lilo.conf grubConfig=/boot/grub/grub.conf + grub2Config=/boot/grub/grub.cfg + grub2EfiConfig=/boot/grub/grub-efi.cfg bootPrefix=/boot liloFlag=lilo isx86="yes" @@ -130,15 +134,6 @@ exit 1 } -run_grub2() -{ - if [ -d /boot/grub -a -x /sbin/grub-mkconfig ] - then - cp /boot/grub/grub.cfg /boot/grub/grub.cfg.old - /sbin/grub-mkconfig -o /boot/grub/grub.cfg - fi -} - install() { # XXX kernel should be able to be specified also (or work right on ia64) @@ -176,9 +171,6 @@ return fi - # Run grub2's configuration update in parallel, if it is installed - run_grub2 - # get the root filesystem to use rootdevice=$(awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $1; }}' /etc/fstab) @@ -201,12 +193,56 @@ else title="Magellan Linux (${version})" fi - ${grubby} --add-kernel=${bootPrefix}/${kernelName}-${version} \ + ${grubby} --grub --add-kernel=${bootPrefix}/${kernelName}-${version} \ ${INITRD} --copy-default ${makedefault} --title "${title}" \ ${mbkernel:+--add-multiboot="${mbkernel}"} ${mbargs:+--mbargs="${mbargs}"} \ --args="root=${rootdevice} ${kernargs}" --remove-kernel="TITLE=${title}" else - [[ -n ${verbose} ]] && echo "${grubConfig} does not exist, not running grubby" + [[ -n ${verbose} ]] && echo "${grubConfig} does not exist, not running grubby for grub 0.97" + fi + if [[ -n ${cfgGrub2} ]] + then + [[ -n ${verbose} ]] && echo "adding ${version} to ${grub2Config}" + + if [[ -n ${banner} ]] + then + title="${banner} (${version})" + elif [ -f /etc/mageversion ] + then + title="Magellan Linux $(< /etc/mageversion) (${version})" + else + title="Magellan Linux (${version})" + fi + ${grubby} --grub2 -c ${grub2Cfg} \ + --add-kernel=${bootPrefix}/${kernelName}-${version} \ + ${INITRD} --copy-default ${makedefault} --title "${title}" \ + ${mbkernel:+--add-multiboot="${mbkernel}"} \ + ${mbargs:+--mbargs="${mbargs}"} \ + --args="root=${rootdevice} ${kernargs}" --remove-kernel="TITLE=${title}" + else + [[ -n ${verbose} ]] && echo "${grub2Config} does not exist, not running grubby for grub 2" + fi + if [[ -n ${cfgGrub2Efi} ]] + then + [[ -n ${verbose} ]] && echo "adding ${version} to ${grub2EfiConfig}" + + if [[ -n ${banner} ]] + then + title="${banner} (${version})" + elif [ -f /etc/mageversion ] + then + title="Magellan Linux $(< /etc/mageversion) (${version})" + else + title="Magellan Linux (${version})" + fi + ${grubby} --grub2 -c ${grub2EfiCfg} \ + --add-kernel=${bootPrefix}/${kernelName}-${version} \ + ${INITRD} --copy-default ${makedefault} --title "${title}" \ + ${mbkernel:+--add-multiboot="${mbkernel}"} \ + ${mbargs:+--mbargs="${mbargs}"} \ + --args="root=${rootdevice} ${kernargs}" --remove-kernel="TITLE=${title}" + else + [[ -n ${verbose} ]] && echo "${grub2EfiConfig} does not exist, not running grubby for grub 2 with UEFI" fi if [[ -n ${cfgLilo} ]] @@ -244,15 +280,28 @@ return fi - # Run grub2's configuration update in parallel, if it is installed - run_grub2 - if [[ -n ${cfgGrub} ]] then [[ -n ${verbose} ]] && echo "removing ${version} from ${grubConfig}" - ${grubby} --remove-kernel=${bootPrefix}/${kernelName}-${version} + ${grubby} --grub --remove-kernel=${bootPrefix}/${kernelName}-${version} else - [[ -n ${verbose} ]] && echo "${grubConfig} does not exist, not running grubby" + [[ -n ${verbose} ]] && echo "${grubConfig} does not exist, not running grubby for grub 0.97" + fi + if [[ -n ${cfgGrub2} ]] + then + [[ -n ${verbose} ]] && echo "removing ${version} from ${grub2Config}" + ${grubby} --grub2 -c ${grub2Config} \ + --remove-kernel=${bootPrefix}/${kernelName}-${version} + else + [[ -n ${verbose} ]] && echo "${grub2Config} does not exist, not running grubby for grub 2" + fi + if [[ -n ${cfgGrub2Efi} ]] + then + [[ -n ${verbose} ]] && echo "removing ${version} from ${grub2EfiConfig}" + ${grubby} --grub2 -c ${grub2EfiConfig} \ + --remove-kernel=${bootPrefix}/${kernelName}-${version} + else + [[ -n ${verbose} ]] && echo "${grub2EfiConfig} does not exist, not running grubby grub 2 with UEFI" fi if [[ -n ${cfgLilo} ]] @@ -349,9 +398,6 @@ fi fi - # Run grub2's configuration update in parallel, if it is installed - run_grub2 - if [[ -n ${cfgGrub} ]] then [[ -n ${verbose} ]] && echo "updating ${version} from ${grubConfig}" @@ -363,6 +409,30 @@ [[ -n ${verbose} ]] && echo "${grubConfig} does not exist, not running grubby" fi + if [[ -n ${cfgGrub2} ]] + then + [[ -n ${verbose} ]] && echo "updating ${version} from ${grub2Config}" + ${grubby} --grub2 -c ${grub2Config} \ + --update-kernel=${bootPrefix}/${kernelName}-${version} \ + ${INITRD} \ + ${kernargs:+--args="${kernargs}"} \ + ${removeargs:+--remove-args="${removeargs}"} + else + [[ -n ${verbose} ]] && echo "${grub2Config} does not exist, not running grubby" + fi + + if [[ -n ${cfgGrub2Efi} ]] + then + [[ -n ${verbose} ]] && echo "updating ${version} from ${grub2EfiConfig}" + ${grubby} --grub2 -c ${grub2EfiConfig} \ + --update-kernel=${bootPrefix}/${kernelName}-${version} \ + ${INITRD} \ + ${kernargs:+--args="${kernargs}"} \ + ${removeargs:+--remove-args="${removeargs}"} + else + [[ -n ${verbose} ]] && echo "${grub2EfiConfig} does not exist, not running grubby" + fi + if [[ -n ${cfgLilo} ]] then [[ -n ${verbose} ]] && echo "updating ${version} from ${liloConfig}" @@ -679,6 +749,8 @@ fi [[ -n ${grubConfig} ]] && [ -f ${grubConfig} ] && cfgGrub=1 +[[ -n ${grub2Config} ]] && [ -f ${grub2Config} ] && cfgGrub2=1 +[[ -n ${grub2EfiConfig} ]] && [ -f ${grub2EfiConfig} ] && cfgGrub2Efi=1 [[ -n ${liloConfig} ]] && [ -f ${liloConfig} ] && cfgLilo=1 # if we have a uBoot directory, check if it is mounted.