m0n0wall not booting after switch to mdconfig
Matt Juszczak
matt at atopia.net
Tue Oct 12 20:14:59 PDT 2004
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.
Thanks,
Matt
-------------- next part --------------
# /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)
-------------- next part --------------
#!/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
More information about the freebsd-questions
mailing list