#!/bin/bash ################################################# # Title: mk-setup-vmdk # # Date: 2014-11-14 # # Version: 1.0 # # Author: dthaluru@vmware.com # # Options: # ################################################# # Overview # Creating hard disk with photon on it # End # set -o errexit # exit if error...insurance ;) set -o nounset # exit if variable not initalized set +h # disable hashall PRGNAME=${0##*/} # script name minus the path source config.inc # configuration parameters source function.inc # commonn functions LOGFILE="/var/log/${PRGNAME}-${LOGFILE}" # set log file name LFS_DISK="/mnt/photon-disk" [ ${EUID} -eq 0 ] || die "${PRGNAME}: Need to be root user: FAILURE" > ${LOGFILE} # clear/initialize logfile echo -e "Setting up the disk...\n" set -x LFS_OPTION="" VMDK_IMAGE_NAME=mydisk.vmdk ROOT_PARTITION_SIZE=1 SWAP_PARTITION_SIZE=0 BOOT_FIRM_WARE="bios" while [[ $# > 0 ]] do key="$1" shift case $key in -rp|--ROOT_PARTITION_SIZE) ROOT_PARTITION_SIZE="$1" shift ;; -sp|--SWAP_PARTITION_SIZE) SWAP_PARTITION_SIZE="$1" shift ;; -fm|--firmware) BOOT_FIRM_WARE="$1" shift ;; -a|--all) LFS_OPTION="all" ;; -m|--minimal) LFS_OPTION="" ;; -n|--IMG_NAME) VMDK_IMAGE_NAME="$1".raw shift ;; -h|--help) echo 'Usage:' echo '-rp|--ROOT_PARTITION_SIZE :sets root partition size' echo '-sp|--SWAP_PARTITION_SIZE :sets swap partition size' echo '-a|--all :installs all available packages' echo '-n|--IMG_NAME :sets name of the vmdk image' echo '-m|--minimal :installs basic packages' echo '-fm|--firmware :firmware' exit 0 ;; *) # unknown option ;; esac done mkdir -p $LFS_DISK TOTAL_SIZE=` echo $ROOT_PARTITION_SIZE + $SWAP_PARTITION_SIZE | bc` echo "Creating raw disk file " $VMDK_IMAGE_NAME " of size " $TOTAL_SIZE # hack to create 512MB image instead of 1GB - use 512 instead of 1024 dd if=/dev/zero of=$VMDK_IMAGE_NAME bs=1024 count=$(($TOTAL_SIZE * 1024 * 512)) chmod 755 $VMDK_IMAGE_NAME parted -s $VMDK_IMAGE_NAME mklabel msdos mkpart primary fat32 1M 30M mkpart primary ext4 30M 100% echo "Associating loopdevice to raw disk" DISK_DEVICE=`losetup --show -f -P $VMDK_IMAGE_NAME` #echo "Creating partition on raw disk" #if [ $SWAP_PARTITION_SIZE -gt 0 ] #then # sgdisk -n 1::+8M -n 2::+${ROOT_PARTITION_SIZE}G -n 3: -p $DISK_DEVICE >> $LOGFILE #else # sgdisk -n 1::+8M -n 2: -p $DISK_DEVICE >> $LOGFILE #fi #if [ $BOOT_FIRM_WARE = "efi" ] #then # echo "EFI boot partition" # sgdisk -t1:ef00 $DISK_DEVICE >> $LOGFILE #else # echo "BIOS boot partition" # sgdisk -t1:ef02 $DISK_DEVICE >> $LOGFILE #fi echo "Mapping device partition to loop device" kpartx -avs $DISK_DEVICE >> $LOGFILE DEVICE_NAME=`echo $DISK_DEVICE|cut -c6- ` echo "Formatting partitions" mkfs.ext4 /dev/mapper/${DEVICE_NAME}p2 mkfs.fat /dev/mapper/${DEVICE_NAME}p1 echo "DISK_DEVICE=$DISK_DEVICE" echo "ROOT_PARTITION=/dev/mapper/${DEVICE_NAME}p2" echo "ESP_PARTITION=/dev/mapper/${DEVICE_NAME}p1"