[ previous ] [ next ] [ threads ]
 
 From:  Matt Juszczak <matt at atopia dot net>
 To:  m0n0wall at lists dot m0n0 dot ch
 Subject:  m0n0wall not booting after mdconfig switchover :-(
 Date:  Tue, 12 Oct 2004 23:16:03 -0400
Hello,

As of yesterday I stopped using m0n0image by Michael I and took most of the commands from m0n0image
and the hackers guide, along with the FreeBSD handbook, and tried to write a new shell script that
worked with mdconfig.

The shell script works great.  It can successfully "decompress" an image and "recompress" an image
without any errors.  However, whenever I boot from an image that the shell script creates, it
doesn't load.  The boot up process stops at the kernel loading and it says it can't find kernel or
kernel.old.

I'm pretty sure I'm doing everything right.  Maybe there's one mistake I'm completely missing. 
Could someone please look at it and let me know?

Shell script is attached.  I also posted this to -questions but then I thought that this might be
more a m0n0wall messup on my part ;-(

Thanks,

Matt
# /dev/md0c:
type: unknown
disk: amnesiac
label:
flags:
bytes/sector: 512
sectors/track: 32
tracks/cylinder: 64
sectors/cylinder: 2048
cylinders: 5
sectors/unit: 12288
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0           # milliseconds
track-to-track seek: 0  # milliseconds
drivedata: 0

8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:    12288        0    4.2BSD     1024  8192    26   # (Cyl.    0 - 4)
  c:    12288        0    unused        0     0         # (Cyl.    0 - 4)
#!/usr/local/bin/bash

printf "Image Generator/Decompressor\n\n"
ls -al | grep "\.img" | grep -v " \."
ls -al | grep "drwx" | grep -v " \."
printf "\n(G)enerate an image or (D)ecompress one?: "
read REQUEST

if [ "$REQUEST" = "d" ]
then
	printf "Source Name (without extension): "
	read image
	printf "Output Directory: "
	read image_dir
	if [ \( -f $image.img -a $image_dir \) ]
	then
		printf "Decompressing $image ... 0%%\b\b"
		mkdir $image_dir
    		mkdir $image_dir/fs
		mkdir $image_dir/kern
		printf "10%%\b\b\b"
		mv $image.img $image.bin.gz
		gzip -d $image.bin.gz
		printf "20%%\b\b\b"
		mdconfig -a -t vnode -f $image.bin -u 0
		mount /dev/md0a /mnt
		printf "30%%\b\b\b"
		cp -p /mnt/kernel.gz $image_dir/kern/
		printf "35%%\b\b\b"
		cp -p /mnt/mfsroot.gz $image_dir
		printf "40%%\b\b\b"
		cp -Rp /mnt/boot $image_dir/boot
		printf "45%%\b\b\b"
		cp -Rp /mnt/conf $image_dir/conf
		printf "50%%\b\b\b"
		umount /mnt
		mdconfig -d -u 0
		printf "60%%\b\b\b"
		gzip -9 $image.bin
		mv $image.bin.gz $image.img
		printf "70%%\b\b\b"
		gzip -d $image_dir/mfsroot.gz
		printf "80%%\b\b\b"
		mdconfig -a -t vnode -f $image_dir/mfsroot -u 0
		mount /dev/md0c /mnt
		cp -Rp /mnt/* $image_dir/fs
		printf "90%%\b\b\b"
		umount /mnt
		mdconfig -d -u 0
		rm $image_dir/mfsroot
		printf "100%%"
	fi
elif [ "$REQUEST" = "g" ]
then
	printf "Output Name (without extension): "
	read outfile
	printf "Source Directory: "
	read directory
	if [ \( -d $directory -a -n $outfile \) ]
	then
		printf "Compressing $directory ... 0%%\b\b"
		mkdir tmp
		dd if=/dev/zero of=tmp/mfsroot.bin bs=1k count=12288 > /dev/null 2>&1
		printf "10%%\b\b\b"
		mdconfig -a -t vnode -f tmp/mfsroot.bin -u 0
		disklabel -r -w md0 auto
		newfs -b 8192 -f 1024 /dev/md0c > /dev/null 2>&1
		printf "20%%\b\b\b"
		mount /dev/md0c /mnt
		cp -Rp $directory/fs/* /mnt
		umount /mnt
		printf "30%%\b\b\b"
		mdconfig -d -u 0
		gzip -9 tmp/mfsroot.bin
		printf "40%%\b\b\b"
		mv tmp/mfsroot.bin.gz tmp/mfsroot.gz
		dd if=/dev/zero of=tmp/$directory.bin bs=1k count=6144 > /dev/null 2>&1
		mdconfig -a -t vnode -f tmp/$directory.bin -u 0
		printf "50%%\b\b\b"
		disklabel -BR md0 label.proto
		newfs -b 8192 -f 1024 /dev/md0a > /dev/null 2>&1
		mount /dev/md0a /mnt
		printf "60%%\b\b\b"
		cp -Rp $directory/boot /mnt
		cp -Rp $directory/conf /mnt
		printf "70%%\b\b\b"
		cp -p tmp/mfsroot.gz $directory/kern/kernel.gz /mnt
		umount /mnt
		printf "80%%\b\b\b"
		mdconfig -d -u 0
		gzip -9 tmp/$directory.bin
		printf "90%%\b\b\b"
		mv tmp/$directory.bin.gz $outfile.img
		rm -rf tmp
		printf "100%%";
	fi
else
	printf "You must choose G or D"
	printf
fi

echo