#############################################################
# How to make single boot floppy for Network install
#############################################################
# ${DIFFD} <- set to the directory of the diff includes
#       hosts network.server network.client .rhosts rc rc.local
#       lilo.conf passwd
# ${ROOT} <- work file for the root file system
# ${WORK} <- mount point (directory) for the work file
# ${OLD} <- directory with NON-ELF (a.out) binaries includes
#       in.rexecd in.rshd inetd  rpc.portmap in.rlogind in.telnetd
#       rpc.pcnfsd  tcpd
#       sleep rcp rlogin rsh ps df rpc services inetd.conf
# /dev/loop0 <- loop-back device for mounting files as filesystems
# /dev/fdo   <- device of Boot Floppy
##############################################################
# 1. Creating the root file system
##############################################################
zcat /cdrom/slackware-3.1/rootdisks/pcmcia.gz > ${ROOT}
/sbin/losetup /dev/loop0 ${ROOT}
mount /dev/loop0 ${WORK}
##############################################################
# 2. Delete unnecessary files to free up disk space
##############################################################
for f in pkgtool pkgtool.tty setup setup.tty swapon
do
        rm ${WORK}/bin/$f
done
for f in fdisk mke2fs mkswap swapon
do
        rm ${WORK}/sbin/$f
done
for f in issue
do
        rm ${WORK}/etc/$f
done
##############################################################
# 3. Add missing files
##############################################################
for f in in.rexecd in.rshd inetd  rpc.portmap in.rlogind  in.telnetd \
    rpc.pcnfsd  tcpd
do
        cp ${OLD}/$f ${WORK}/usr/sbin/
done
for f in rcp rlogin rsh sleep
do
        cp ${OLD}/$f ${WORK}/usr/bin
done
for f in ps df
do
        cp ${OLD}/$f ${WORK}/bin
done
for f in rpc services inetd.conf
do
        cp ${OLD}/$f ${WORK}/etc
done
##################################################################
# 4. Setup to make a working installation disk
##################################################################
# Setup network:
cat ${DIFFD}/hosts >>  ${WORK}/etc/hosts
# Add working user pcnfs
cat ${DIFFD}/passwd >> ${WORK}/etc/passwd
# Network file for server:
# cp ${DIFFD}/network.server ${WORK}/etc/pcmcia
# Or for client:
cp ${DIFFD}/network.client ${WORK}/etc/pcmcia

# Register the machines used in installation: cp ${DIFFD}/.rhosts ${WORK}/ chown pcnfs.users ${WORK}/.rhosts
# Have to fix /etc/rc: cat ${DIFFD}/rc >> ${WORK}/etc/rc
# For client, need the rc.local too:
cp ${DIFFD}/rc.local ${WORK}/etc/rc.d/
################################################################## # 5. Creating a boot floppy ################################################################## # fdformat /dev/fd0u1440 mkfs -t ext2 /dev/fd0 mount /dev/fd0 /mnt rmdir /mnt/lost+found mkdir /mnt/boot # Copy the device: (cd /; tar cvf - dev/fd0* dev/ram* | tar xvCf /mnt -) # Copy boot: cp /boot/map /mnt/boot cp /boot/boot.* /mnt/boot/ # Copy the kernel: cp /cdrom/slackware-3.1/kernels/net.i/bzImage /mnt/ # Compress root: umount ${WORK} /sbin/losetup -d /dev/loop0 gzip ${ROOT} # Copy root: cp ${ROOT}.gz /mnt/root.gz # Make lilo.conf: mkdir /mnt/etc cp ${DIFFD}/lilo.conf /mnt/etc/ # execute lilo.conf: umount /mnt mount /dev/fd0 /mnt lilo -r /mnt # umount /mnt #################################################################### # Our prepared sources ############## ${DIFFD}/rc #####################
NET="/usr/sbin" echo -n "Starting daemons:"
if [ -f ${NET}/rpc.portmap ]; then echo -n " rpc.portmap" ${NET}/rpc.portmap fi if [ -f ${NET}/inetd ]; then echo -n " inetd" ${NET}/inetd else echo "no INETD found. INET cancelled!" exit 1 fi if [ -f ${NET}/rpc.pcnfsd ]; then echo -n " rpc.pcnfsd" ${NET}/rpc.pcnfsd fi
mount -t msdos /dev/hda1 /mnt -o rw,umask=000,user
if [ -x /etc/pcmcia/network ] ; then /sbin/route | fgrep eth0 || /etc/pcmcia/network start eth0 fi
if [ -x /etc/rc.d/rc.local ] ; then echo /etc/rc.d/rc.local fi
############# ${DIFFD}/rc.local ################## #!/bin/sh
RHOST=server.foo.bar.com
sleep 5 echo echo echo echo echo 'Installing FUJITEC monitor system.' echo 'It takes 10 minutes. Press "Enter" key to start.' read ans if [ -f /mnt/autoexec.bat ] then if [ -f /mnt/original.bat ] then echo echo "C:AUTOEXEC.BAT and C:ORIGINAL.BAT exist" echo -n "I will remove C:AUTOEXEC.BAT, OK(Y/n)? ==>" read ans if [ "$ans" = "n" -o "$ans" = "N" ] then echo "aborting installation" exit fi else mv /mnt/autoexec.bat /mnt/original.bat fi fi if [ -d /mnt/linux ] ; then echo echo "I found C:LINUX, and remove it" rm -rf /mnt/linux fi echo echo "Copying System Files........." su pcnfs -c "rcp -r ${RHOST}:/mnt/linux /mnt/linux" echo echo echo if [ -d /mnt/linux/etc -a -d /mnt/linux/bin ] then cp /mnt/linux/linux.bat /mnt/autoexec.bat if [ -f /mnt/config.sys ] ; then mv /mnt/config.sys /mnt/original.sys fi echo "System installation has been completed!!" echo echo "Remove the floppy and restart the computer." echo " (turn OFF then ON the power switch)" echo "The FUJITEC Monitor System will start up automatically." else echo "System installation has been not completed!!" echo "" echo "Check your network and try again!!" fi echo echo /bin/sync
############ ${DIFFD}/lilo.conf ################### # LILO configuration file # Start LILO global section boot = /dev/fd0u1440 delay = 0 vga = normal # force sane state ramdisk = 1440 # paranoia setting # End LILO global section image = /bzImage root = /dev/ram0 initrd = root.gz label = linux read-only # Non-UMSDOS filesystems should be mounted read-only for checking ############ ${DIFFD}/passwd ################### pcnfs:*:65534:100:pc-nfs:/:/bin/csh ############ ${DIFFD}/.rhost ################### server.foo.bar.com client.foo.bar.com ############ ${DIFFD}/hosts #################### 192.168.0.1 server.foo.bar.com 192.168.0.2 client.foo.bar.com ############ ${DIFFD}/network.client ########### #! /bin/sh action=$1 device=$2 # ${DIFFD}/network.server is IPADDR="192.168.0.1" IPADDR="192.168.0.2" NETMASK="255.255.255.0" NETWORK="192.168.200.0" BROADCAST="192.168.200.255"
case "${action:?}" in 'start') /sbin/ifconfig ${device:?} up ${IPADDR} broadcast ${BROADCAST} \ netmask ${NETMASK} /sbin/route add -net ${NETWORK} netmask ${NETMASK} # /sbin/route add default gw ${GATEWAY} metric 1 ;; 'stop') /sbin/route del default /sbin/route del ${NETWORK} /sbin/ifconfig ${device:?} down ;; 'restart') /sbin/ifconfig ${device:?} down up ;; esac