123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- #!/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
|