|
@@ -0,0 +1,152 @@
|
|
|
+#!/bin/sh
|
|
|
+
|
|
|
+BLOCKSIZE=516096
|
|
|
+WORKING_DIR=`pwd`
|
|
|
+
|
|
|
+echo "This script will create a bootable ext3 image from buildroot."
|
|
|
+
|
|
|
+echo "Enter the path to the image (${WORKING_DIR})"
|
|
|
+read IMG_PATH
|
|
|
+
|
|
|
+if [ "${IMAGE_PATH}" = "" ]; then
|
|
|
+ IMAGE_PATH=${WORKING_DIR}
|
|
|
+fi
|
|
|
+
|
|
|
+echo "Enter the name of the image file (buildroot.img)"
|
|
|
+read IMG_NAME
|
|
|
+
|
|
|
+if [ "${IMAGE_NAME}" = "" ]; then
|
|
|
+ IMAGE_NAME="buildroot.img"
|
|
|
+fi
|
|
|
+
|
|
|
+IMAGE=${IMAGE_PATH}/${IMAGE_NAME}
|
|
|
+
|
|
|
+echo "Enter the path to the root filesystem that you want"
|
|
|
+echo "to install to the image"
|
|
|
+read ROOT_PATH
|
|
|
+
|
|
|
+if [ "${ROOT_PATH}" = "" ]; then
|
|
|
+ echo "Error: you must specify a path."
|
|
|
+ exit 1
|
|
|
+fi
|
|
|
+
|
|
|
+CYLINDERS=`du --summarize --block-size=${BLOCKSIZE} ${ROOT_PATH}`
|
|
|
+BYTE_SIZE=`du --summarize --block-size=${BLOCKSIZE} --human-readable ${ROOT_PATH}`
|
|
|
+
|
|
|
+CYLINDERS=${CYLINDERS%${ROOT_PATH}}
|
|
|
+BYTE_SIZE=${BYTE_SIZE%${ROOT_PATH}}
|
|
|
+
|
|
|
+CYLINDERS=`expr ${CYLINDERS} "+" 2`
|
|
|
+
|
|
|
+echo "Now I will create an ext3 image file"
|
|
|
+echo "using ${CYLINDERS} cylinders, with ${BLOCKSIZE} bytes per block"
|
|
|
+echo "in other words, ${BYTE_SIZE}bytes..."
|
|
|
+
|
|
|
+ dd if=/dev/zero of=${IMAGE} bs=${BLOCKSIZE}c count=${CYLINDERS}
|
|
|
+
|
|
|
+# Create file partition and filesystem
|
|
|
+
|
|
|
+ # STEP 1. create partition
|
|
|
+ /sbin/losetup /dev/loop3 ${IMAGE}
|
|
|
+ # probably should figure out how to use GNU parted to do this non-interactively
|
|
|
+ /sbin/fdisk -u -C${CYLINDERS} -S63 -H16 /dev/loop3
|
|
|
+ /sbin/losetup -d /dev/loop3
|
|
|
+
|
|
|
+ # STEP 2. make file system (ext3)
|
|
|
+ /sbin/losetup -o 32256 /dev/loop3 ${IMAGE}
|
|
|
+ /sbin/mkfs.ext3 /dev/loop3
|
|
|
+ /sbin/losetup -d /dev/loop3
|
|
|
+
|
|
|
+# Install Software to the image
|
|
|
+ mkdir -p ${IMAGE_PATH}/temp
|
|
|
+ mount -o offset=32256,loop ${IMAGE} ${IMAGE_PATH}/temp
|
|
|
+ cp -a ${ROOT_PATH}/* ${IMAGE_PATH}/temp
|
|
|
+ # make sure to unmount the image
|
|
|
+ umount ${IMAGE_PATH}/temp
|
|
|
+ rm -rf ${IMAGE_PATH}/temp
|
|
|
+
|
|
|
+# Create a VMware .vmx file
|
|
|
+cat > ${IMAGE_PATH}/buildroot.vmx <<EOF
|
|
|
+config.version = "8"
|
|
|
+virtualHW.version = "3"
|
|
|
+
|
|
|
+uuid.location = "56 4d 5c cc 3d 4a 43 29-55 89 5c 28 1e 7e 06 58"
|
|
|
+uuid.bios = "56 4d 5c cc 3d 4a 43 29-55 89 5c 28 1e 7e 06 58"
|
|
|
+
|
|
|
+uuid.action = "create"
|
|
|
+checkpoint.vmState = ""
|
|
|
+
|
|
|
+displayName = "Buildroot"
|
|
|
+annotation = ""
|
|
|
+guestinfo.vmware.product.long = ""
|
|
|
+guestinfo.vmware.product.url = "http://dcgrendel.be/vmbuilder/"
|
|
|
+
|
|
|
+guestOS = "linux"
|
|
|
+numvcpus = "1"
|
|
|
+memsize = "256"
|
|
|
+paevm = "FALSE"
|
|
|
+sched.mem.pshare.enable = "TRUE"
|
|
|
+MemAllowAutoScaleDown = "FALSE"
|
|
|
+
|
|
|
+MemTrimRate = "-1"
|
|
|
+
|
|
|
+nvram = "nvram"
|
|
|
+
|
|
|
+mks.enable3d = "FALSE"
|
|
|
+vmmouse.present = "TRUE"
|
|
|
+
|
|
|
+tools.syncTime = "TRUE"
|
|
|
+tools.remindinstall = "FALSE"
|
|
|
+
|
|
|
+isolation.tools.hgfs.disable = "FALSE"
|
|
|
+isolation.tools.dnd.disable = "FALSE"
|
|
|
+isolation.tools.copy.enable = "TRUE"
|
|
|
+isolation.tools.paste.enabled = "TRUE"
|
|
|
+gui.restricted = "FALSE"
|
|
|
+
|
|
|
+ethernet0.present = "TRUE"
|
|
|
+ethernet0.connectionType = "bridged"
|
|
|
+ethernet0.addressType = "generated"
|
|
|
+ethernet0.generatedAddress = "00:0c:29:7e:06:58"
|
|
|
+ethernet0.generatedAddressOffset = "0"
|
|
|
+
|
|
|
+usb.present = "TRUE"
|
|
|
+usb.generic.autoconnect = "FALSE"
|
|
|
+
|
|
|
+sound.present = "TRUE"
|
|
|
+sound.virtualdev = "es1371"
|
|
|
+
|
|
|
+ide0:0.present = "TRUE"
|
|
|
+ide0:0.fileName = "buildroot.vmdk"
|
|
|
+ide0:0.deviceType = "disk"
|
|
|
+ide0:0.mode = ""
|
|
|
+ide0:0.redo = ""
|
|
|
+ide0:0.writeThrough = "FALSE"
|
|
|
+ide0:0.startConnected = "TRUE"
|
|
|
+
|
|
|
+ide1:0.present = "TRUE"
|
|
|
+ide1:0.fileName = ""
|
|
|
+ide1:0.deviceType = "disk"
|
|
|
+ide1:0.mode = ""
|
|
|
+ide1:0.redo = ""
|
|
|
+ide1:0.writeThrough = "FALSE"
|
|
|
+ide1:0.startConnected = "FALSE"
|
|
|
+
|
|
|
+floppy0.present = "FALSE"
|
|
|
+
|
|
|
+serial0.present = "FALSE"
|
|
|
+
|
|
|
+serial1.present = "FALSE"
|
|
|
+
|
|
|
+parallel0.present = "FALSE"
|
|
|
+
|
|
|
+EOF
|
|
|
+
|
|
|
+# Install GRUB
|
|
|
+ /sbin/grub --no-floppy --batch <<EOT
|
|
|
+ device (hd0) ${IMAGE}
|
|
|
+ geometry (hd0) ${CYLINDERS} 16 63
|
|
|
+ root (hd0,0)
|
|
|
+ setup (hd0)
|
|
|
+ quit
|
|
|
+ EOT
|