#! /bin/sh
#
#   makefd.sh -- ハードディスク全消去用ブートフロッピーの作成
#
#   revision history:
#	0.0: Oct. 26, 2001 by Dai ISHIJIMA
#
#   usage:
#	# sh makefd.sh
#

#
rc=/home/ishijima/emerg/startup.sh
check=/home/ishijima/emerg/check
scripts='/home/ishijima/emerg/?.sh'

kernel=/sys/compile/MINI/kernel
bins="dd echo sh test expr"
sbins="init mount_cd9660"
devs="std ad0 ad1 acd0"
formatfd=NO

# 
if [ ! -f /usr/src/release/write_mfs_in_kernel.c ] ; then
	echo 'unable to compile "write_mfs_in_kernel"'
	exit 1
fi

if [ ! -f $kernel ] ; then
	echo 'no kernel found'
	exit 1
fi


echo "Making write_mfs_in_kernel..."
#
# write_mfs_in_kernel を作る
#
mkdir /tmp/write_mfs_in_kernel
cd /tmp/write_mfs_in_kernel
cp /usr/src/release/write_mfs_in_kernel.c .
cc -o write_mfs_in_kernel write_mfs_in_kernel.c


echo "Making file system onto MFS..."
#
# MFSに入れるファイルシステムを作る
#
cd /tmp
# 21セクタ, 82シリンダ -> 10752バイト/トラック, 164トラック
dd of=fd-image if=/dev/zero count=164 bs=10752
vnconfig -c /dev/vn0 fd-image
newfs -t 2 -u 21 -l 1 -c 40 -i 5120 -m 5 -o space -T fd1720 /dev/rvn0

# -t [track/cylinder]
# -u [sectors/track]
# -l [interleave factor]
# -i [bytes/inode]
# -m [MINFREE]
# -o [optimize]

echo "Mounting MFS..."
#
# MFSをマウントする
#
mount /dev/vn0 /mnt

echo "Making device files..."
#
# デバイスファイルを作る
#
mkdir /mnt/dev
cd /mnt/dev
cp /dev/MAKEDEV .
for i in $devs; do
	./MAKEDEV $i
done

echo "Making tmp..."
#
# /tmp ディレクトリを作る
#
mkdir /mnt/tmp
chmod 777 /mnt/tmp

mkdir /mnt/mnt
mkdir /mnt/cdrom

echo "Making etc..."
#
# /etc ディレクトリを作る
#
mkdir /mnt/etc
cd /mnt/etc
echo 'root:*:0:0:Charlie &:/:/bin/sh' > /mnt/etc/passwd
echo 'root:*:0:0::0:0:Charlie &:/:/bin/sh' > /mnt/etc/master.passwd
pwd_mkdb -d /mnt/etc /mnt/etc/master.passwd

#
#
#
cp $rc /mnt/etc/rc
chmod +x /mnt/etc/rc

echo "Copying binaries..."
#
# /bin
#
mkdir /mnt/bin
cd /mnt/bin
for i in $bins; do
	#gzip < /bin/$i > /mnt/bin/$i
	#chmod +x /mnt/bin/$i
	cp /bin/$i /mnt/bin/$i
done
cd /mnt/bin
ln 'test' '['
cp $check /mnt/bin
cp $scripts /mnt/bin

#
# /sbin
#
mkdir /mnt/sbin
cd /mnt/sbin
for i in $sbins; do
	#gzip < /sbin/$i > /mnt/sbin/$i
	#chmod +x /mnt/sbin/$i
	cp /sbin/$i /mnt/sbin/$i
done

#
# MFSをアンマウント
#
cd /tmp
umount /mnt
vnconfig -u /dev/vn0

echo "Compressing kernel..."
#
#
#
cp $kernel /tmp
/tmp/write_mfs_in_kernel/write_mfs_in_kernel /tmp/kernel /tmp/fd-image

#
# カーネルを圧縮
#
cd /tmp
gzip --best < /tmp/kernel > /tmp/kernel.gz
chmod +x kernel.gz

#exit 0

echo "Writing to floppy..."
#
# フロッピーをフォーマット
#
case x$formatfd in
	xYES) fdformat fd0
esac

disklabel -w -B -b /boot/boot1 -s /boot/boot2 /dev/rfd0c fd1440
newfs -t 2 -u 18 -l 1 -c 40 -i 5120 -m 5 -o space /dev/rfd0a

#
# フロッピーをマウント
#
mount /dev/fd0a /mnt

#
# 圧縮したカーネルをコピー
#
mkdir /mnt/boot
cp /boot/boot1 /mnt/boot
cp /boot/boot2 /mnt/boot
cp /boot/loader /mnt/boot

cp -f /tmp/kernel.gz /mnt/kernel.gz

umount /mnt

#
# おしまい
#
