#!/bin/bash # **** License **** # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # This code was originally developed by Vyatta, Inc. # Portions created by Vyatta are Copyright (C) 2007 Vyatta, Inc. # All Rights Reserved. # # Author: Robert Bays # **** End License **** shopt -s xpg_echo test -f /etc/default/vyatta && \ source /etc/default/vyatta : ${vyatta_sbindir:=/opt/vyatta/sbin} : ${vyatta_sysconfdir:=/opt/vyatta/etc} if [ -n "$1" ]; then DRIVE=$1 else DRIVE="/dev/fd0" fi failure () { echo "$*" exit 1 } # Look and see if we have a floopy drive if sed -n '/[0-9]\+ fd$/ { q 1 }' /proc/devices || [ ! -e $DRIVE ] ; then failure "No floppy device" fi echo "This will erase all data on floppy $DRIVE." read -p 'Continue (y/n)? [y] ' -n 1 -t 5 yorn if [[ "$yorn" == [nN]* ]] ; then echo exit 0 fi fd=/media/floppy unbind_notice="\rUnbinding config from floppy...\c" unbind__error="\rError: Couldn't unbind ${vyatta_sysconfdir}/config." umount_notice="\rAttempting to unmount floppy...\c" umount__error="\rError: Couldn't unmount $DRIVE." format_notice="\rFormatting floppy $DRIVE... \c" format__error="\rPlease insert a floppy disk in $DRIVE and rerun init-floppy." create_notice="\rCreating file system... \c" create__error="\rError: Couldn't create filesystem on floppy $DRIVE" mount__notice="\rMounting formatted floppy... \c" mount___error="\rError: Couldn't mount floppy $DRIVE to $fd" config_notice="\rSaving config... \c" config__error="\rError: Couldn't save config in $fd/config/config.boot" bind___notice="\rRedirecting config directory...\c" bind____error="\rError: redirect to floppy" saved__notice="\rYour configuration was saved in: $fd/config/config.boot" mkdir -p $fd if grep -q "$DRIVE ${vyatta_sysconfdir}/config" /proc/mounts ; then echo "$unbind_notice" /bin/umount ${vyatta_sysconfdir}/config &>/dev/null || \ failure $unbind__error fi if grep -q $DRIVE /proc/mounts ; then echo "$umount_notice" /bin/umount $fd &>/dev/null || \ failure "$umount__error" fi echo "$format_notice" /usr/bin/fdformat -n $DRIVE &>/dev/null || \ failure "$format__error" echo "$create_notice" /sbin/mke2fs -q $DRIVE &>/dev/null || \ failure "$create__error" echo "$mount__notice" /bin/mount /dev/fd0 $fd -t ext2 -o sync &>/dev/null || \ failure "$mount___error" /bin/mkdir $fd/config /bin/chmod 777 $fd/config echo "$config_notice" ${vyatta_sbindir}/vyatta-save-config.pl $fd/config/config.boot &>/dev/null || \ failure "$config__error" echo "$bind___notice" /bin/mount -o bind $fd/config ${vyatta_sysconfdir}/config &>/dev/null || \ failure "$bind____error" echo "$saved__notice" # Local Variables: # mode: shell-script # sh-indentation: 4 # End: