| #!/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 and filename for the root filesystem" |
| echo "tarball that you want to install into 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 |
| tar -xvf ${ROOT_PATH} --directory ${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 = "FALSE" |
| 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 |