| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | 
							- #!/usr/bin/perl -w
 - #
 - # A program to make a netbootable image from a LRP firewall floppy
 - # Tested on a Coyote Linux floppy
 - #
 - @cfg = `mtype a:syslinux.cfg`;
 - unless (defined(@cfg)) {
 - 	print "Cannot find syslinux.cfg on floppy\n";
 - 	exit 1;
 - }
 - ($append) = grep(/^append/, @cfg);	# find the append= line
 - chomp($append);				# remove trailing newline
 - $append =~ s/append=//;			# remove the append= at beginning
 - @args = split(/ /, $append);		# split into arguments at whitespace
 - ($root) = grep(/^initrd=/, @args);	# find the initrd= argument
 - $root =~ s/^initrd=//;			# remove the initrd= at beginning
 - ($lrp) = grep(/^LRP=/, @args);		# find the LRP= argument
 - $lrp =~ s/^LRP=//;			# remove the LRP= at beginning
 - @lrp = split(/,/, $lrp);		# split into filenames at ,
 - unshift(@lrp, $root);			# prepend the root LRP filename
 - $append = '';
 - foreach $i (@args) {			# rebuild the append string
 - 	next if ($i =~ /^initrd=/);	# minus the unneeded parameters
 - 	next if ($i =~ /^LRP=/);
 - 	next if ($i =~ /^boot=/);
 - 	$append .= "$i ";
 - }
 - # print "$append\n";
 - $tempdir = "/tmp/lrp$$";
 - mkdir($tempdir, 0777) or die "$tempdir: $!\n";
 - chdir($tempdir) or die "$tempdir: $!\n";
 - foreach $i (@lrp) {
 - 	$i .= '.lrp' if $i !~ /\.lrp$/;
 - 	print "Unpacking $i\n";
 - 	system("mtype a:$i | tar zxvf -");
 - }
 - print "Repacking to /tmp/lrp.lrp\n";
 - system("tar zcf /tmp/lrp.lrp *");
 - chdir('/tmp') or die "/tmp: $!\n";
 - system("rm -fr $tempdir");
 - print "Extracting kernel image from floppy\n";
 - system("mtype a:linux > /tmp/lrp.ker");
 - print "Creating netboot image in /tmp/lrp.nb\n";
 - system("mkelf-linux --append='$append' --output=/tmp/lrp.nb /tmp/lrp.ker /tmp/lrp.lrp");
 - exit 0;
 
 
  |