Received: (at maintonly) by bugs.debian.org; 28 Dec 1996 01:23:21 +0000 Received: (qmail 1053 invoked from network); 28 Dec 1996 01:23:18 -0000 Received: from os.inf.tu-dresden.de (141.76.1.46) by master.debian.org with SMTP; 28 Dec 1996 01:23:11 -0000 Received: (from sr1@localhost) by os.inf.tu-dresden.de (8.7.6/8.7.3) id CAA06951; Sat, 28 Dec 1996 02:22:28 +0100 Date: Sat, 28 Dec 1996 02:22:28 +0100 Message-Id: <199612280122.CAA06951@os.inf.tu-dresden.de> From: Sven Rudolph To: maintonly@bugs.debian.org Subject: mkrboot: floppy image support, and minor fixes Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Package: mkrboot Version: 0.6 I taught mkrboot to work on floppy images instead of real disks. When the device is not a block device, it is mounted using '-o loop'. I tested this only for syslinux. I found a bug in the procedure for getting the remaining disk space: old: FREE=`df /mnt|awk '/mnt/ { print $4; }'` This fails on multiline mount output,hence: new: FREE=`df /mnt|awk '/mnt/ { print $(NF-2); }'` And there was still a place where you used img${SIZE}.gz instead of img${SIZE}k.gz ... The diff contains everything. Sven -- Sven Rudolph ; WWW : http://www.sax.de/~sr1/ *** mkrboot-0.6.old/mkrboot Thu Dec 12 22:42:48 1996 --- mkrboot-0.6/mkrboot Sat Dec 28 02:13:02 1996 *************** *** 60,69 **** --- 60,103 ---- exit 1 fi + if [ ! -b $DEV ]; then + if [ ! -e $DEV -o -f $DEV -a -w $DEV ]; then + echo "mkrboot: trying to use floppy image $DEV" + if [ "$1" != "syslinux" ]; then + echo "mkrboot: this isn't tested yet for this method" + exit 1 + fi + if [ ! -e $DEV ]; then + if touch $DEV 2>/dev/null ; then + echo -n + else + echo "mkrboot: Cannot write floppy image $DEV" + exit 1 + fi + fi + MOUNTOPT="-o loop" + else + echo "mkrboot: Target Device $DEV is no block device" + exit 1 + fi + fi + KERNEL_SIZE=`du $KERNEL |awk '{ print $1; }'` ROOT_SIZE=`du $ROOTIMAGE |awk '{ print $1; }'` echo "Kernel Size=$KERNEL_SIZE k, Root System Size=$ROOT_SIZE k" + + function pad_disk + { + + if [ -f $1 ]; then + FILLLENGTH=`wc -c <$1` + FILLSIZE=`expr $2 + $2 - $FILLLENGTH / 512` + dd if=/dev/zero bs=512 count=$FILLSIZE >>$1 + fi + } + + if [ "$1" = "loadlin" ]; then if [ ! -d /usr/lib/loadlin ]; then echo "mkrboot: ERROR: no loadlin found!" *************** *** 120,126 **** fi echo "Setting up a bootable disk with FreeDOS ..." zcat /usr/fdos/boot-fdos${SIZE}.gz >$DEV ! mount -tmsdos $DEV /mnt echo "Copying files ..." cp $LIB/fdos/* /mnt unix2dos /mnt/*.bat --- 154,160 ---- fi echo "Setting up a bootable disk with FreeDOS ..." zcat /usr/fdos/boot-fdos${SIZE}.gz >$DEV ! mount -tmsdos $MOUNTOPT $DEV /mnt echo "Copying files ..." cp $LIB/fdos/* /mnt unix2dos /mnt/*.bat *************** *** 129,135 **** cp $ROOTIMAGE /mnt/ROOT.BIN /usr/sbin/rdev /mnt/LINUX /dev/ram0 /usr/sbin/ramsize /mnt/LINUX 0 ! FREE=`df /mnt|awk '/mnt/ { print $4; }'` umount /mnt echo "Bootdisk preparation finished. $FREE k still available" exit 0 --- 163,169 ---- cp $ROOTIMAGE /mnt/ROOT.BIN /usr/sbin/rdev /mnt/LINUX /dev/ram0 /usr/sbin/ramsize /mnt/LINUX 0 ! FREE=`df /mnt|awk '/mnt/ { print $(NF-2); }'` umount /mnt echo "Bootdisk preparation finished. $FREE k still available" exit 0 *************** *** 143,149 **** set -e echo "Making Minix FS ..." mkfs.minix -n14 $DEV $SIZE >/dev/null ! mount -tminix $DEV /mnt echo "Copying files ..." cp $KERNEL /mnt/linux cp $ROOTIMAGE /mnt/root.bin --- 177,183 ---- set -e echo "Making Minix FS ..." mkfs.minix -n14 $DEV $SIZE >/dev/null ! mount -tminix $MOUNTOPT $DEV /mnt echo "Copying files ..." cp $KERNEL /mnt/linux cp $ROOTIMAGE /mnt/root.bin *************** *** 152,158 **** rdev /mnt/linux /dev/ram0 ramsize /mnt/linux 0 lilo -C - -b $DEV -i /mnt/boot.b -c -m /mnt/map <$LIB/lilo/lilo.conf >/dev/null ! FREE=`df /mnt|awk '/mnt/ { print $4; }'` umount /mnt echo "Bootdisk preparation finished. $FREE k still available." exit 0 --- 186,192 ---- rdev /mnt/linux /dev/ram0 ramsize /mnt/linux 0 lilo -C - -b $DEV -i /mnt/boot.b -c -m /mnt/map <$LIB/lilo/lilo.conf >/dev/null ! FREE=`df /mnt|awk '/mnt/ { print $(NF-2); }'` umount /mnt echo "Bootdisk preparation finished. $FREE k still available." exit 0 *************** *** 160,175 **** if [ "$1" = "syslinux" ]; then if [ ! -d /usr/lib/syslinux ]; then ! echo mkrboot: ERROR: no syslinux package found! exit 1 fi if [ ! -r /usr/lib/syslinux/img${SIZE}k.gz ]; then echo mkrboot: ERROR: no syslinux image for size $SIZE found! exit 1 fi ! zcat /usr/lib/syslinux/img${SIZE}.gz >$DEV sync ! mount -tmsdos $DEV /mnt echo "Copying files ..." cp -v $LIB/syslinux/* /mnt cp /usr/lib/syslinux/syslinux.exe /mnt --- 194,212 ---- if [ "$1" = "syslinux" ]; then if [ ! -d /usr/lib/syslinux ]; then ! echo "mkrboot: ERROR: no syslinux package found!" exit 1 fi if [ ! -r /usr/lib/syslinux/img${SIZE}k.gz ]; then echo mkrboot: ERROR: no syslinux image for size $SIZE found! exit 1 fi ! zcat /usr/lib/syslinux/img${SIZE}k.gz >$DEV ! if [ -f $DEV ]; then ! pad_disk $DEV $SIZE ! fi sync ! mount -tmsdos $MOUNTOPT $DEV /mnt echo "Copying files ..." cp -v $LIB/syslinux/* /mnt cp /usr/lib/syslinux/syslinux.exe /mnt *************** *** 178,184 **** cp $ROOTIMAGE /mnt/ROOT.BIN /usr/sbin/rdev /mnt/LINUX /dev/ram0 /usr/sbin/ramsize /mnt/LINUX 0 ! FREE=`df /mnt|awk '/mnt/ { print $4; }'` umount /mnt echo "Bootdisk preparation finished. $FREE k still available" exit 0 --- 215,221 ---- cp $ROOTIMAGE /mnt/ROOT.BIN /usr/sbin/rdev /mnt/LINUX /dev/ram0 /usr/sbin/ramsize /mnt/LINUX 0 ! FREE=`df /mnt|awk '/mnt/ { print $(NF-2); }'` umount /mnt echo "Bootdisk preparation finished. $FREE k still available" exit 0