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