[ 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

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

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 ;-(


# /dev/md0c:
type: unknown
disk: amnesiac
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)

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?: "

if [ "$REQUEST" = "d" ]
	printf "Source Name (without extension): "
	read image
	printf "Output Directory: "
	read image_dir
	if [ \( -f $image.img -a $image_dir \) ]
		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%%"
elif [ "$REQUEST" = "g" ]
	printf "Output Name (without extension): "
	read outfile
	printf "Source Directory: "
	read directory
	if [ \( -d $directory -a -n $outfile \) ]
		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%%";
	printf "You must choose G or D"