lkraemer
Group: Members
Posts: 16
Joined: Jan. 2008 |
|
Posted: Jan. 03 2010,03:31 |
|
I wanted to use a Boot floppy to boot DSL Ver 4.4.10 from my USB Flash drive on my old Compaq Presario 1672. The previous floppy USB boot image wouldn't work for me with ver 4.4.10, and my BIOS did not allow booting from USB.
I used UNETBOOTIN (with Win2k) to copy the DSL 4.4.10 ISO to my USB Flash Drive.
To make the Boot floppy I used the script located at this URL: http://linuxgazette.net/116/okopnik1.html
The Knoppix CD consists of a number of files, of which only one really mattered to what I needed: the "miniroot". To be exact, the miniroot is a compressed bootable image within the Knoppix image - it is, in fact, the part that makes the Knoppix CD bootable - so tweaking the files inside it consisted of the following steps:
1. Mount the Knoppix image 2. Decompress the miniroot into a temporary file 3. Mount the miniroot 4. Modify the files in it 5. Recompress it 6. Create a loop-mounted file 7. Copy the miniroot into it 8. Make it bootable 9. Write it to a floppy
Boot script follows:
Code Sample | #!/bin/bash # Created by Ben Okopnik on Thu Mar 17 23:56:31 EST 2005 # # Many thanks to Fabian Franz, whose original script gave me the idea of # how it's all supposed to work. # # This script creates a boot floppy that passes control to a USB PenDrive # containing a Knoppix CD image. No CDROM, no problem! # # SYSLINUX & PERL must be installed. # (I used Ubuntu 8.04.3 to execute this script, then copied the boot.img # file to a Flash Drive, then used DSL to create the Floppy.) #
############## User configuration section ###############################
# Set this to the directory where the Knoppix image lives, or specify the # directory as a command-line argument. KNOPPIX_DIR=${1:-/home/larry/tmp2}
############## End of user config section ###############################
abort() { printf "$@\n" exit 1 }
clean_exit() { [ -d "$TMPDIR" ] && rm -rf $TMPDIR }
# Validation tests [ $UID -ne 0 ] && abort "Root privileges are required to run this script." [ -d "$KNOPPIX_DIR" ] || abort "$KNOPPIX_DIR is not a directory." [ -z "`ls $KNOPPIX_DIR|grep -i 'knoppix.*iso'`" ] && abort "Knoppix image not found in $KNOPPIX_DIR."
# Create temp dir, get rid of it on exit TMPDIR=`mktemp -dp /tmp/ make_floppy.XXXXXX` trap "clean_exit" EXIT
# Jump into TMPDIR and prepare it for the coming ops ORIG_DIR=$(pwd) cd $TMPDIR mkdir knoppix floppy miniroot old_miniroot
# Choose and mount the Knoppix image printf "Please choose one of the following images:\n" select choice in $KNOPPIX_DIR/K*.iso; do break; done mount $choice knoppix -o loop
# Decompress the miniroot from the mounted image's boot dir gunzip -c knoppix/boot/isolinux/minirt24.gz > minirt24
# "Back up" and mount the miniroot mv minirt24 minirt24.old mount -o loop minirt24.old old_miniroot
# Create the file which will contain the new miniroot; format it as a DOS # FS and mount it dd if=/dev/zero of=minirt24 bs=4M count=1 mke2fs -L "KNOPPIX Miniroot" -b 1024 -N 8192 -O none -F -q -m 0 minirt24 mount -o loop minirt24 miniroot
# Copy the USB-related modules from the old miniroot to the new one mkdir -p miniroot/modules/scsi for n in `ls old_miniroot/modules/scsi|egrep 'usb|hci'` do cp old_miniroot/modules/scsi/"$n" miniroot/modules/scsi done
# Copy everything except the "scsi" dir from the old miniroot to the new # one rm -rf old_miniroot/modules/scsi cp -af old_miniroot/* miniroot/
# Unmount both umount old_miniroot umount miniroot
# Compress the miniroot again gzip -9 minirt24
# Create a 1.44MB file which will contain the boot image, format it as a # DOS FS, and mount it. dd if=/dev/zero of=$TMPDIR/boot.img bs=1k count=1440 mkdosfs $TMPDIR/boot.img mount -t msdos boot.img floppy -o loop
# Grrr... "mount" weirdness requires waiting, then remounting in order to # have it read-writeable. Perhaps the 'mount' maintainer should get a bug # report? sleep 3 mount floppy -o remount,rw
# Copy the required files from Knoppix's boot dir to the image we're building FILES="boot.msg f2 f3 german.kbd isolinux.cfg linux24 logo.16" (cd knoppix/boot/isolinux/; cp -f $FILES $TMPDIR/floppy/)
# Copy the new miniroot into it - we're almost done! cp minirt24.gz floppy/
# Rename and tweak the config file to conform to the SYSLINUX usage mv floppy/isolinux.cfg floppy/syslinux.cfg [ -n "$LANGUAGE" ] && perl -pi -e "s/lang=de/lang=$LANGUAGE/g" floppy/syslinux.cfg [ -n "$LANGUAGE" ] && perl -pi -e "s/lang=us/lang=$LANGUAGE/g" floppy/syslinux.cfg
# A little cleanup... umount knoppix umount floppy
# Make the image bootable! Since it's not an actual device, 'syslinux' is # going to complain - but we're tough and can handle it. syslinux boot.img 2>/dev/null
# Put the boot image back where we started cp -i boot.img $ORIG_DIR
printf "The boot diskette can now be created with 'dd if=boot.img of=/dev/fd0'.\n"
|
lk
|