#!/bin/bash # # larch-grub-install - Set up a grub boot # #2010.08.09 # $1: path to system to be used as chroot for running grub # ("/" if no chroot is to be used) # $2: larch partition, e.g. /dev/sdb1 # $3: 'MBR', if to be installed to MBR INSTLDIR="$1" if [ "${INSTLDIR}" = "/" ]; then INSTLDIR="" fi DEVICE="$2" mbr="$3" dev=${DEVICE:0:8} part=${DEVICE:8} # Convert the device and partion to grub syntax grubdevice () { ## The contents of DEVICE.map look something like this: #(fd0) /dev/fd0 #(hd0) /dev/hda #(hd1) /dev/sda gdev="$( cat ${INSTLDIR}${dmap} | grep "${dev}" | cut -f1 | tr -d "()" )" gpart=$(( ${part} - 1 )) gdst="${gdev},${gpart}" [[ ${mbr} != 'MBR' ]] && gdev=${gdst} echo "#Installing GRUB to (${gdev}), root (${gst})" } dmap=/tmp/DEVICE.map rm -f ${INSTLDIR}${dmap} if [ -n "${INSTLDIR}" ]; then # First try to get a device mapping mount --bind /dev ${INSTLDIR}/dev echo "quit" | chroot ${INSTLDIR} grub --no-floppy --device-map=${dmap} --batch grubdevice # Now actually install grub # As far as I can tell, the extra options to grub are not needed here chroot ${INSTLDIR} grub --batch <