rev |
line source |
pascal@4025
|
1 #!/bin/sh
|
pascal@4025
|
2
|
pascal@4025
|
3 grub_part=0
|
pascal@4025
|
4 [ -n "$1" ] && case "$1" in
|
pascal@4025
|
5 [0-9]*) grub_part=$1;;
|
pascal@4025
|
6 *) cat 1>&2 <<EOT
|
pascal@4025
|
7 Usage: $0 [partition]
|
pascal@4025
|
8 Install grub on dmraid device. Default partition is 0.
|
pascal@4025
|
9 EOT
|
pascal@4025
|
10 exit 2;;
|
pascal@4025
|
11 esac
|
pascal@4025
|
12
|
pascal@4025
|
13 # Get raid parameters
|
pascal@4025
|
14 dev=/dev/mapper/$(dmraid -s 2> /dev/null | grep ^name | awk '{ print $3 }')
|
pascal@20892
|
15 if [ "$dev" = "/dev/mapper/" ]; then
|
pascal@4025
|
16 echo "No dmraid device found." 1>&2
|
pascal@4025
|
17 exit 1
|
pascal@4025
|
18 fi
|
pascal@4025
|
19
|
pascal@4027
|
20 # Ensure raid is active
|
pascal@4027
|
21 [ ! -e $dev ] && dmraid-start
|
pascal@4027
|
22
|
pascal@4025
|
23 geometry="$(fdisk -l $dev | grep heads | sed \
|
pascal@4025
|
24 's|\(.*\) heads, \(.*\) sectors/track, \(.*\) cylinders|\3 \1 \2|')"
|
pascal@4025
|
25
|
pascal@4025
|
26 # Grub bug workaround
|
pascal@4025
|
27 for i in ${dev}p* ; do
|
pascal@4025
|
28 n=${i#${dev}p}
|
pascal@4025
|
29 [ -e $i -a ! -e ${dev}$n ] && ln -s $(basename $dev)p$n ${dev}$n
|
pascal@4025
|
30 done
|
pascal@4025
|
31
|
pascal@4025
|
32 # Let's go
|
pascal@4025
|
33 grub --device-map=/dev/null --batch <<EOT
|
pascal@4025
|
34 device (hd0) $dev
|
pascal@4025
|
35 geometry (hd0) $geometry
|
pascal@4025
|
36 root (hd0,$grub_part)
|
pascal@4025
|
37 setup (hd0)
|
pascal@4025
|
38 quit
|
pascal@4025
|
39 EOT
|