#!/bin/sh

copy_bootparms() {
    if [ -f /mnt/boot/boot.ini ]; then
	if mount | grep /fd 1> /dev/null 2> /dev/null ; then
	    cp /mnt/boot/boot.ini /mnt/boot/*.pbr /fd
	fi
    fi
}

dialog --title "レスキューディスク作成" --menu \
    "ここでは FD からシステムを起動するためのレスキューディスクを \n\
作成します．レスキューデイスクの作り方は，マザーボードに直接接 \n\
続される従来の FD ドライブ(/dev/fd0)と USB で接続される FD ドラ \n\
ブ(/dev/sda)では多少異なります． \n\
お使いの FD はどちらのタイプですか？" 20 72 6 \
"FD" "従来型の FD ドライブ"  \
"USB" "USB タイプの FD ドライブ" \
"EXIT" "レスキューデイスクの作成を終了" 2> /tmp/return
if [ ! $? = 0 ]; then
    break;
fi
FDTYPE=`cat /tmp/return`
rm -f /tmp/return

if [ "$FDTYPE" =  "EXIT" ]; then
    break
elif [ "$FDTYPE" = "FD" ]; then  
    while [ 0 ]; do # the bootdisk menu loop
	dialog --title "FDD の確認" --menu \
	    "レスキューディスクを作成する前にFDD にある FD を確認して \n\
ください。レスキューディスク用 FD は完全に上書きされ， \n\
FD 上のデータは全部消去されます．\n\
レスキューディスクは使用するブートローダに応じて \n\
grub 版と syslinux 版の 2 種があります． \n\
ブートディスクにするFDがフォーマットされていない場合，\n\
まずフォーマットしておく必要があります．" 22 78 6 \
	    "format" "/dev/fd0(a:)でフロッピーをフォーマットする" \
	    "grub" "grubのブートディスクを作成する" \
	    "syslinux" "syslinuxのブートディスクを作成する" \
	    "continue" "ブートディスク作成を終了する" 2> /tmp/return
	if [ ! $? = 0 ]; then
	    break;
	fi
	REPLY=`cat /tmp/return`
	rm -f /tmp/return
	if [ "$REPLY" = "format" ]; then
	    dialog --title "フロッピーの確認" --msgbox \
		"/dev/fd0 のディスクをインストーラの起動ディスクから入れ替えて \n\
いることを確認してください。" 6 72
	    if [ $? = 0 ]; then
		dialog --title "/dev/fd0のフォーマット中" --infobox "/dev/fd0を1.44メガ\
バイトでフォーマットしています。" 3 70 
		fdformat /dev/fd0u1440
		dialog --title "formatting.." --infobox "/dev/fd0 にファイルシステムを作成中" 3 70 
		mkdosfs /dev/fd0u1440
	    fi
	    rm -f /tmp/return
	elif [ "$REPLY" = "grub" ]; then # make grub bootdisk
	    dialog --title "grub ブートディスク作成" --yesno \
		"\n\
ブート可能なFDドライブにフォーマット済みのフロッピーを \n\
入れてください。このディスクを Plamo Linux のブートディ \n\
スクにします．ハードディスクからブートできるようになる \n\
までは、このフロッピーをご利用ください。 \n\n\
このフロッピーディスクの内容は完全に上書きされます。\n\n\
YESでディスクを作成し、NOで中止します。\n" 14 74
	    if [ "$?" = "0" ]; then
		dialog --title "ディスク作成" --infobox "'vmlinuz'をコピーしています..." 5 70
		if [ ! -d /fd ]; then
		    mkdir /fd
		fi
		mount /dev/fd0 /fd -t vfat
		if [ $? = 0 ]; then
		    cp $T_PX/vmlinuz /fd
		    cp $T_PX/boot/grub/stage1 /fd
		    cp $T_PX/boot/grub/stage2 /fd

		    cat <<EOF > /fd/grub.cfg
# GRUB configuration file
# generated by 'grubconfig'
#
# Start GRUB global section
default 0
timeout 30
fallback 1

title Plamo Linux
kernel (fd0)/vmlinuz root=$ROOT_DEVICE ro
EOF
		    dialog --infobox "\nGRUBをインストール中..." 5 40
		    $T_PX/usr/sbin/grub --batch <<EOF
root (fd0)
install (fd0)/stage1 d (fd0) (fd0)/stage2 0x8000 p (fd0)/grub.cfg
quit
EOF
		    copy_bootparms
		    sync
		    sync
		    umount /fd
		else
		    dialog --title "FDマウント不可" --msgbox "FD が正常にマウントできないため \n\
FD に grub をインストールできませんでした" 5 70
		fi
	    fi
	elif [ "$REPLY" = "syslinux" ]; then # make syslinux bootdisk
	    dialog --title "/dev/fd0でsyslinuxのブートディスク作成" --yesno \
		"ブート可能なFDドライブにフォーマット済みのフロッピーを入れてください。\n\
これが Plamo Linuxシステムを起動するブートディスクとなります。\n\
フロッピーの内容は完全に上書きされます。YESでディスクを作成し、 \n\
NOで中止します。" 10 74
	    if [ $? = 0 ]; then # make the disk
		DEV=/dev/fd0
		dialog --infobox "$ROOT_DEVICEのためのsyslinuxブートディスクを作成中..." 3 70
		$T_PX/sbin/syslinux -s  $DEV 1> /dev/null 2> /dev/null
		mount -t vfat /dev/fd0 /fd 1> /dev/null 2> /dev/null
		if [ $? = 0 ]; then
		    cp $T_PX/vmlinuz /fd/vmlinuz
		    cat << EOF > /fd/syslinux.cfg
DEFAULT vmlinuz root=$ROOT_DEVICE ro
DISPLAY plamo.msg
EOF
		    cat << EOF > /fd/plamo.msg
plamo2.lss
Welcome to Plamo Linux !!
We hope you'll enjoy the simple linux environment via Plamo Linux :-)

EOF

      # cp -a /usr/lib/setup/plamo2.lss /fd/plamo2.lss

		    copy_bootparms
		    sync
		    sync
		    umount /fd
  	        else
		    dialog --title "FDマウント不可" --msgbox "FD が正常にマウントできないため \n\
FD に grub をインストールできませんでした" 5 70
	        fi
	    fi
       elif [ "$REPLY" = "continue" ] ; then
	    break
       fi
    done
else   # FDTYPE=USB
    dialog --title "USB FDD の注意" --yesno \
	"お使いのマシンに USB FDD 以外の USB 記憶デバイス(外付けUSB HDD \n\
や USB メモリ等)が接続されている場合，USB FDD と誤解されて内容が \n\
消去される可能性があります．お使いのマシンに USB FDD 以外の USB \n\
記憶デバイス(USB CD-ROM は接続されていても構いません)が接続されて \n\
いる場合，以下の作業は実施できませんので NO で終了してください．\n\
このまま作業を進めて構いませんか？ \n" 12 72
    if [ $? != 0 ]; then
	exit
    fi
    dialog --title "FDD の確認" --msgbox \
	"レスキューディスクを作成する前にFDD にある FD を確認してください。 \n\
レスキューディスク用 FD は完全に上書きされ，FD 上のデータは全部消去 \n\
されます．また，USB FDD で物理フォーマットすることができないため， \n\
レスキューディスクは 事前に物理フォーマットしておいてください．" 10 74

    dialog --title "USB 用のブートディスク作成" --yesno \
        "USB な FDドライブにフォーマット済みのフロッピーを入れてください。\n\
これが Plamo Linuxシステムを起動するブートディスクとなります。\n\
フロッピーの内容は完全に上書きされます。YESでディスクを作成し、 \n\
NOで中止します。" 9 72 
    if [ $? = 0 ]; then # make FD
	DEV=`fdisk -l | grep "1 MB" | cut -d" " -f2 | tr -d ":"`
	if [ -f /var/adm/mount/boot/syslinux.img ]; then
	    FDIMG=/var/adm/mount/boot/syslinux.img
	elif [ -f /var/adm/mount/plamo/boot/syslinux.img ]; then
	    FDIMG=/var/adm/mount/plamo/boot/syslinux.img
	else
	    dialog --msgbox "USBブートディスク用のイメージが見付かりません. \n\
手動でUSBブートディスクを作る場合は，plamo/boot ディレクトリにある \n\
mkbootdsk.sh コマンドを実行してください．" 10 72
	    exit
	fi
	dialog --infobox "$ROOT_DEVICEのための USB ブートディスクを作成中..." 3 70
	cat $FDIMG > $DEV
	$T_PX/sbin/syslinux  $DEV 1> /dev/null 2> /dev/null
	mount -t vfat $DEV /fd 1> /dev/null 2> /dev/null
	if [ $? = 0 ]; then
	    cat << EOF > /fd/syslinux.cfg
DEFAULT vmlinuz root=$ROOT_DEVICE ro
DISPLAY plamo.msg
EOF
	    cat << EOF > /fd/plamo.msg
Welcome to Plamo Linux !!
We hope you'll enjoy the simple linux environment via Plamo Linux :-)

EOF
	    copy_bootparms
	    sync
	    sync
	    umount /fd
	else
	    dialog --title "FDマウント不可" --msgbox "FD が正常にマウントできないため \n\
FD に grub をインストールできませんでした" 5 70
	fi
   fi  # end of make FD
fi  # FDTYPE=USB end
