97 lines
2.1 KiB
Bash
Executable File
97 lines
2.1 KiB
Bash
Executable File
#! /bin/bash
|
|
|
|
# (c) Michael Goetze, 2011, mgoetze@mgoetze.net
|
|
# (c) Thomas Lange 2014
|
|
|
|
error=0; trap 'error=$(($?>$error?$?:$error))' ERR # save maximum error code
|
|
|
|
if [ -r $LOGDIR/disk_var.sh ] ; then
|
|
. $LOGDIR/disk_var.sh
|
|
else
|
|
echo "disk_var.sh not found!"
|
|
exit 1
|
|
fi
|
|
|
|
|
|
# CentOS 7 does not have a device.map file, so generate one
|
|
if [ -d $target/boot/grub2 -a ! -f $target/boot/grub2/device.map ]; then
|
|
echo "# Generated by FAI" >> $target/boot/grub2/device.map
|
|
centosdisks=$(awk '/[sv]d.$/ {print $4}' /proc/partitions | sort)
|
|
dcount=0
|
|
for d in $centosdisks; do
|
|
echo "(hd$dcount) /dev/$d" >> $target/boot/grub2/device.map
|
|
dcount=$((dcount + 1))
|
|
done
|
|
fi
|
|
|
|
bootdev=`device2grub $BOOT_DEVICE`
|
|
bootpart=`device2grub $BOOT_PARTITION`
|
|
version=`$ROOTCMD rpm -qv kernel | cut -d- -f2-`
|
|
|
|
if grep '[[:space:]]/boot[[:space:]]' $LOGDIR/fstab; then
|
|
bootdir=''
|
|
else
|
|
bootdir='/boot'
|
|
fi
|
|
|
|
mount -o bind /dev $target/dev
|
|
|
|
|
|
|
|
if [ -f $target/usr/sbin/grub2-install ]; then
|
|
|
|
# CentOS 7
|
|
$ROOTCMD grub2-install --no-floppy "$BOOT_DEVICE"
|
|
$ROOTCMD grub2-mkconfig --output=/boot/grub2/grub.cfg
|
|
else
|
|
|
|
$ROOTCMD grub-install --just-copy
|
|
|
|
$ROOTCMD grub --device-map=/dev/null --no-floppy --batch <<-EOF
|
|
device $bootdev $BOOT_DEVICE
|
|
root $bootpart
|
|
setup $bootdev
|
|
quit
|
|
EOF
|
|
|
|
ln -s ./menu.lst $target/boot/grub/grub.conf
|
|
|
|
if [ -f $target/boot/grub/splash.xpm.gz ]; then
|
|
pretty="splashimage=$bootpart$bootdir/grub/splash.xpm.gz"
|
|
else
|
|
pretty="color cyan/blue white/blue"
|
|
fi
|
|
|
|
if [ -f $target/sbin/dracut -o -f $target/usr/sbin/dracut ]; then
|
|
# CentOS 6
|
|
iname=initramfs
|
|
else
|
|
# CentOS 5
|
|
iname=initrd
|
|
fi
|
|
title=`head -1 $target/etc/redhat-release`
|
|
|
|
cat > $target/boot/grub/grub.conf <<-EOF
|
|
timeout 5
|
|
default 0
|
|
$pretty
|
|
hiddenmenu
|
|
|
|
title $title
|
|
root $bootpart
|
|
kernel $bootdir/vmlinuz-$version root=$ROOT_PARTITION ro
|
|
initrd $bootdir/$iname-$version.img
|
|
EOF
|
|
|
|
fi
|
|
|
|
umount $target/dev
|
|
|
|
echo ""
|
|
echo "Grub installed on $BOOT_DEVICE = $bootdev"
|
|
echo "Grub boot partition is $BOOT_PARTITION = $bootpart"
|
|
echo "Root partition is $ROOT_PARTITION"
|
|
echo "Boot kernel: $version"
|
|
|
|
exit $error
|