#!/bin/sh

PROBE=/sbin/fdisk
crunch () { # remove extra whitespace
    read STRING;
    echo $STRING
}

# 󥹥ȡľʤɬפʾ/tmp
if [ -f /tmp/SeTT_PX -a -f /tmp/SeTrootdev ] ; then  
    MTPT=`cat /tmp/SeTT_PX`
    ROOT_DEVICE=`cat /tmp/SeTrootdev`
else
    CURRENT_ROOT_DEVICE=`grep " / " /etc/fstab | cut -f1 -d' '`

    /bin/dialog --title "grub򥤥󥹥ȡ뤹ǥ쥯ȥ(1)" --yesno \
	"grubϻꤷǥѡƥ/boot/grub/ \
ɬפʥե򥤥󥹥ȡ뤷ޤ \
ߤΥ롼ȥѡƥ($CURRENT_ROOT_DEVICE) \
grub򥤥󥹥ȡ뤷ޤ" 10 70

    if [ $? = 0 ]; then
	MTPT="/"
	ROOT_DEVICE=$CURRENT_ROOT_DEVICE
    else
        # ߤ root partition Ȥϰ㤦Ȥgrub򥤥󥹥ȡ
	/bin/dialog --title "grub򥤥󥹥ȡ뤹ǥ쥯ȥ(2)" --yesno \
	    "grub򸽺ߤΥ롼ȥѡƥʳ˥󥹥ȡ뤹硤 \
󥹥ȡ뤷ѡƥŬڤʥǥ쥯ȥ(㤨/mnt) \
˥ޥȤƤɬפޤ\n\
/boot̥ѡƥˤƤϤΥѡƥŬڤʰ \
(㤨/mnt/boot)˥ޥȤƤƤ \n\n\
ǤƤʤϡäλơĶƤƼ¹ԤƤ\n\n\
grubΥ󥹥ȡ³ޤ" 18 74

	if [ $? -ne 0 ] ;then
	    exit
	fi

	/bin/dialog --title "grub򥤥󥹥ȡ뤹ǥ쥯ȥ(3)" --inputbox \
	    "grub򥤥󥹥ȡ뤷ѡƥޥȤƤ֤ \
ꤷƤ" 10 74 2> /tmp/return
	if [ $? = 255 -o $? = 1 ]; then   # user break
	    exit 1
	fi
	MTPT=`cat /tmp/return`
	rm /tmp/return
        # check $MTPT
	if [ "$MTPT.x" = ".x" ] ; then
	    /bin/dialog --title "Error: no mountpoint" --msgbox \
		"ޥȥݥȤꤵޤǤΤǽλޤ" 6 70
            exit 1
	elif [ ! -d $MTPT/boot ]; then
	    /bin/dialog --title "Error: no /boot found" --msgbox \
		"$MTPT/bootǥ쥯ȥ꤬ĤޤǤΤǽλޤ" 6 70
            exit 1
	elif [ ! -e $MTPT/boot/vmlinuz ] ; then
	    /bin/dialog --title "Error: no /boot/vmlinuz found" --msgbox \
		"$MTPT/boot/vmlinuz ե뤬ĤޤǤΤǽλޤ" 6 70
	    exit 1
	fi

	ROOT_DEVICE=`mount -v | grep "$MTPT " | cut -f1 -d' '`
    fi
fi

echo "$ROOT_DEVICE" > $MTPT/tmp/grub_ROOT_DEVICE

/bin/dialog --title "grub-installμ¹" --yesno \
    "$MTPTchrootơgrub$ROOT_DEVICE˥󥹥ȡ뤷ޤ \
󥹥ȡκݤˤ³ƤǥХåΤǡĶˤäƤ \
¿֤뤫Τޤ󡥤ޤưѤեޤ \
ʳǤMBRѹޤ󡥽³ޤ" 10 70

if [ $? -ne 0 ]; then
	/bin/dialog --title "User exit" --msgbox \
	    "Ǥޤ" 6 70
	exit 1
fi

ROOT_DISK=`echo $ROOT_DEVICE | sed "s/[0-9]//g"`
gpt_test=`LANG=C ; fdisk -l $ROOT_DISK | grep Disklabel | grep gpt`

if [ "$gpt_test.x" != ".x" ]; then   # GPT partition
    efivars_chk=`cat /proc/mounts | grep efivarfs`
    if [ "$efivars_chk.x" = ".x" ]; then
	mount -t efivarfs efivarfs /sys/firmware/efi/efivars
    fi
    echo $ROOT_DISK > $MTPT/tmp/grub_ROOT_DISK
    chroot $MTPT /sbin/grubconfig_efi
else    
    chroot $MTPT /sbin/grubconfig_mbr
fi    
