From: Michael Prokop Date: Fri, 23 Oct 2009 22:35:45 +0000 (+0200) Subject: Adjust grubdevice() handling and install grub-pc X-Git-Tag: v0.31~7 X-Git-Url: https://git.grml.org/?p=grml-debootstrap.git;a=commitdiff_plain;h=cdb55b2de49391fd0efd940ce069302852216d8e Adjust grubdevice() handling and install grub-pc --- diff --git a/chroot-script b/chroot-script index d8b8fb6..7a26927 100755 --- a/chroot-script +++ b/chroot-script @@ -416,6 +416,7 @@ grub() { UPDATEGRUB='/sbin/update-grub' fi $UPDATEGRUB -y + if [ -f /boot/grub/menu.lst ] ; then sed -i "s/^# groot=.*/# groot=(${GROOT})/g" /boot/grub/menu.lst case "$TARGET" in diff --git a/debian/changelog b/debian/changelog index bd67c40..ddb9179 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +grml-debootstrap (0.31) unstable; urgency=low + + * Adjust grubdevice() handling and install grub-pc package for + supporting grub2. + + -- Michael Prokop Sat, 24 Oct 2009 00:35:17 +0200 + grml-debootstrap (0.30) unstable; urgency=low [ Ulrich Dangel ] diff --git a/grml-debootstrap b/grml-debootstrap index 3cf7612..84a3c52 100755 --- a/grml-debootstrap +++ b/grml-debootstrap @@ -350,33 +350,48 @@ grubdevice() { fi device="$1" - device_map=/boot/grub/device.map + device_map=$(mktemp) # create device.map - if ! [ -f "$device_map" ] ; then - echo 'quit' | grub --device-map="$device_map" 1>/dev/null 2>&1 + if which grub >/dev/null 2>&1 ; then + echo 'quit' | grub --device-map="$device_map" >/dev/null 2>&1 + elif which grub-mkdevicemap >/dev/null 2>&1 ; then + grub-mkdevicemap --device-map="$device_map" >/dev/null 2>&1 + else + echo "Error: neither grub nor grub-mkdevicemap command found." >&2 + return 1 fi # based on code from d-i's trunk/packages/arch/i386/grub-installer/grub-installer: - tmp_disk=`echo "$device" | sed -e 's%\([sh]d[a-z]\)[0-9]*$%\1%' \ + tmp_disk=$(echo "$device" | sed -e 's%\(\(s\|h\|v\|xv\)d[a-z]\)[0-9]*$%\1%' \ -e 's%\(fd[0-9]*\)$%\1%' \ -e 's%/part[0-9]*$%/disc%' \ - -e 's%\(c[0-7]d[0-9]*\).*$%\1%'` - tmp_part=`echo "$device" | sed -e 's%.*/[sh]d[a-z]\([0-9]*\)$%\1%' \ + -e 's%\(c[0-7]d[0-9]*\).*$%\1%' \ + -e 's%\(mmcblk[0-9]d[0-9]*\).*$%\1%' \ + -e 's%\(/mapper/mpath[0-9]\+\)-part[0-9]\+$%\1%') + tmp_part=$(echo "$device" | sed -e 's%.*/\(s\|h\|v\|xv\)d[a-z]\([0-9]*\)$%\2%' \ -e 's%.*/fd[0-9]*$%%' \ -e 's%.*/floppy/[0-9]*$%%' \ -e 's%.*/\(disc\|part\([0-9]*\)\)$%\2%' \ - -e 's%.*c[0-7]d[0-9]*p*%%'` + -e 's%.*c[0-7]d[0-9]*p*%%' \ + -e 's%.*mmcblk[0-9]d[0-9]*p%%' \ + -e 's%.*/mapper/mpath[0-9]\+-part\([0-9]\+\)%\1%') tmp_drive=$(grep -v '^#' $device_map | grep "$tmp_disk *$" | sed 's%.*\([hf]d[0-9][a-g0-9,]*\).*%\1%') + if [ -z "$tmp_drive" ]; then + echo "Error: $device does not have any corresponding BIOS drive." >&2 + return 1 + fi + case $1 in /dev/[sh]d[a-z]) # we expect something like 'hd0' echo "$tmp_drive" ;; *) # we expect something like 'hd0,0' - echo "$tmp_drive" | sed "s%$%,`expr $tmp_part - 1`%" # FIXME => md0 + echo "$tmp_drive" | sed "s%$%,$(expr $tmp_part - 1)%" # FIXME => md0 ;; esac + rm -f "$device_map" } # }}} @@ -559,7 +574,6 @@ interactive_mode() TMPDEVICE=$(echo ${SELECTED_PARTITIONS} | awk '{print $1}') # use first disk only GRUB="$(grubdevice ${TMPDEVICE%%[0-9]})" # like: hd0 GROOT="$(grubdevice ${TMPDEVICE})" # like: hd0,0 - echo "debug: GRUB = $GRUB - GROOT = $GROOT" >/tmp/debug # FIXME fi else [ -n "$BOOT_PARTITION" ] && GRUB="$(grubdevice $BOOT_PARTITION)" diff --git a/packages b/packages index 66869ac..83e57ba 100644 --- a/packages +++ b/packages @@ -1,4 +1,5 @@ locales console-data console-common -initramfs-tools grub mdadm lvm2 +initramfs-tools mdadm lvm2 +grub grub-pc bzip2 dhcp3-client file less lsof most pciutils resolvconf screen ssh strace sysfsutils usbutils vim w3m zsh postfix