The Script to install Windows 98SE onto a thin client. This is built in to TinyCore98.iso. If you are rolling your own USB installation media you can download a copy
#!/bin/sh
#
# Script to setup ${TARGET}1 as a DOS bootable drive containing the necessary files
# to install Windows 98SE
#
# Version 1.0 30-04-21
# David Parkinson
#
TARGET="/dev/sda" # destination drive
DRIVEC="/mnt/sda1" # Mounted destination
# Determine our mount point. Depending on how the USB flash drive
# was formatted it will be /dev/sdb or /sdb1
SOURCE=$(df | grep /dev/sdb | sed 's/.* \//\//')
if [ -z "$SOURCE" ]; then
echo "Boot drive is not /dev/sdb? as expected"
exit
fi
# First step is to check we have the necessary components:
# - sfdisk to format the drive
# - ms-sys to create the boot sector
# - directory dos_files for initial boot environment
# - directory win98 for the Windows 98SE installation files
if ! [ `type -p ms-sys` ]; then
echo "This script requires the program ms-sys"
exit
fi
if ! [ `type -p sfdisk` ]; then
echo "This script requires the program sfdisk"
exit
fi
if ! [ `type -p mkfs.vfat` ]; then
echo "This script requires dosfstools"
exit
fi
if ! [ -d "${SOURCE}/boot_dos" ]; then
echo "Can't see boot files at ${SOURCE}/boot_dos"
exit
fi
if ! [ -d "${SOURCE}/win98" ]; then
echo "Can't see Windows 98 files at ${SOURCE}/win98"
exit
fi
# Warn before proceeding
echo "About to reformat $TARGET and copy over new files"
read -p "Are you sure? " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]
then
echo "Aborting"
exit
fi
# Need to umount any sda partitions before proceeding
# (Shouldn't be mounted)
SDA=$(df | grep $TARGET | sed 's/ .*//')
if [ "$SDA" = "${TARGET}1" ]; then
echo "Unmounting $SDA"
sudo umount $SDA
fi
# Hose sda and re-read partition table
echo "Clearing old partition table"
sudo dd if=/dev/zero of=${TARGET} count=100
sudo partx -u $TARGET
echo "Partitioning $TARGET"
echo 'type=c' | sudo sfdisk $TARGET
if [ "$?" -ne 0 ] ; then
echo "Failed to partition ${TARGET}"
exit
fi
sudo partx -u $TARGET
# Mark partition as active
sudo sfdisk -A $TARGET 1
echo "Formatting ${TARGET}1"
mkfs.vfat -F 32 ${TARGET}1
if [ "$?" -ne 0 ] ; then
echo "Format failed"
exit
fi
echo "Writing boot sector to $TARGET and boot vector to ${TARGET}1"
ms-sys -w -9 $TARGET
# some form of error check
ms-sys -w -p -9 ${TARGET}1
echo "Mounting ${TARGET}1"
if ! [ -d $DRIVEC ] ; then
mkdir $DRIVEC
fi
sudo mount ${TARGET}1 $DRIVEC
if [ "$?" -ne 0 ] ; then
echo "Failed to mount ${TARGET}1 on $DRIVEC"
exit
fi
# Now copy over all the files we need
# IO.SYS has to be the first entry (and contiguous)
echo "Copying over system files"
sudo cp $SOURCE/boot_dos/IO.SYS $DRIVEC
sudo cp $SOURCE/boot_dos/MSDOS.SYS $DRIVEC
sudo cp $SOURCE/boot_dos/CONFIG.SYS $DRIVEC
sudo cp $SOURCE/boot_dos/COMMAND.COM $DRIVEC
sudo cp $SOURCE/boot_dos/AUTOEXEC.BAT $DRIVEC
echo "Copying over DOS files"
sudo cp -R $SOURCE/boot_dos/DOS $DRIVEC
if [ "$?" -ne 0 ] ; then
echo "An error occured"
fi
sync
echo "Copying over Windows 98SE files"
if ! [ -d $DRIVEC/win98 ] ; then
sudo mkdir $DRIVEC/win98
fi
sudo cp -R $SOURCE/win98 $DRIVEC/
sync
echo "Copying over Extra files"
if ! [ -d $DRIVEC/extras ] ; then
sudo mkdir $DRIVEC/extras
fi
sudo cp -R $SOURCE/extras $DRIVEC/
sync
echo "Job complete"