diff options
author | Renato Botelho <renato@netgate.com> | 2015-08-31 16:31:14 -0300 |
---|---|---|
committer | Renato Botelho <renato@netgate.com> | 2015-08-31 16:31:14 -0300 |
commit | 502db0bde9976bb7c4d950b759e61b8c6eb43582 (patch) | |
tree | 6cd64295875a4bd13d1a8fc7908226c88d00f9b4 | |
parent | 3236b6f490fe1169b08869c8150f2cafe34614eb (diff) | |
download | pfsense-502db0bde9976bb7c4d950b759e61b8c6eb43582.zip pfsense-502db0bde9976bb7c4d950b759e61b8c6eb43582.tar.gz |
Use modern pfSense.ovf template, remove unnecessary variables and use vmdktool to convert disk to a modern version
-rw-r--r-- | tools/builder_common.sh | 53 | ||||
-rw-r--r-- | tools/builder_defaults.sh | 15 | ||||
-rw-r--r-- | tools/templates/ovf/pfSense.ovf | 117 |
3 files changed, 123 insertions, 62 deletions
diff --git a/tools/builder_common.sh b/tools/builder_common.sh index 31e6baf..8459c87 100644 --- a/tools/builder_common.sh +++ b/tools/builder_common.sh @@ -380,7 +380,7 @@ print_flags() { printf " BUILD_KERNELS: %s\n" $BUILD_KERNELS printf " Git Branch or Tag: %s\n" $GIT_REPO_BRANCH_OR_TAG printf " MODULES_OVERRIDE: %s\n" $MODULES_OVERRIDE - printf " OVADISKSIZE: %s\n" $OVADISKSIZE + printf " VMDK_DISK_CAPACITY_IN_GB: %s\n" $VMDK_DISK_CAPACITY_IN_GB printf " OVA_FIRST_PART_SIZE: %s\n" $OVA_FIRST_PART_SIZE printf " OVA_SWAP_PART_SIZE: %s\n" $OVA_SWAP_PART_SIZE printf " OVFTEMPLATE: %s\n" $OVFTEMPLATE @@ -821,12 +821,29 @@ create_ova_image() { -p freebsd-boot:=/boot/gptboot \ -p freebsd-ufs/${PRODUCT_NAME}:=${OVA_TMP}/${OVFUFS} \ -p freebsd-swap/swap0::${OVA_SWAP_PART_SIZE} \ - -o ${OVA_TMP}/${OVFVMDK} 2>&1 >> ${LOGFILE} + -o ${OVA_TMP}/${OVFVMDK}.tmp 2>&1 >> ${LOGFILE} - if [ $? -ne 0 -o ! -f ${OVA_TMP}/${OVFVMDK} ]; then + if [ $? -ne 0 -o ! -f ${OVA_TMP}/${OVFVMDK}.tmp ]; then if [ -f ${OVA_TMP}/${OVFUFS} ]; then rm -f ${OVA_TMP}/${OVFUFS} fi + if [ -f ${OVA_TMP}/${OVFVMDK}.tmp ]; then + rm -f ${OVA_TMP}/${OVFVMDK}.tmp + fi + echo ">>> ERROR: Error creating temporary vmdk image. STOPPING!" | tee -a ${LOGFILE} + print_error_pfS + fi + + # We don't need it anymore + rm -f ${OVA_TMP}/${OVFUFS} >/dev/null 2>&1 + + # Convert vmdk disk to modern version + vmdktool -v ${OVA_TMP}/${OVFVMDK} ${OVA_TMP}/i${OVFVMDK}.tmp + + if [ $? -ne 0 -o ! -f ${OVA_TMP}/${OVFVMDK}.tmp ]; then + if [ -f ${OVA_TMP}/${OVFVMDK}.tmp ]; then + rm -f ${OVA_TMP}/${OVFVMDK}.tmp + fi if [ -f ${OVA_TMP}/${OVFVMDK} ]; then rm -f ${OVA_TMP}/${OVFVMDK} fi @@ -834,8 +851,7 @@ create_ova_image() { print_error_pfS fi - # We don't need it anymore - rm -f ${OVA_TMP}/${OVFUFS} >/dev/null 2>&1 + rm -f ${OVA_TMP}/i${OVFVMDK}.tmp ova_setup_ovf_template @@ -844,8 +860,6 @@ create_ova_image() { gtar -C ${OVA_TMP} -cpf ${OVAPATH} ${PRODUCT_NAME}.ovf ${OVFVMDK} rm -f ${OVA_TMP}/${OVFVMDK} >/dev/null 2>&1 - gzip -qf ${OVAPATH} & - echo ">>> OVA created: $(LC_ALL=C date)" | tee -a ${LOGFILE} } @@ -861,31 +875,28 @@ ova_setup_ovf_template() { # 78 FreeBSD 64-Bit if [ "${TARGET}" = "amd64" ]; then local _os_id="78" - local _os_type="FreeBSD 64-Bit" + local _os_type="freebsd64Guest" + local _os_descr="FreeBSD 64-Bit" elif [ "${TARGET}" = "i386" ]; then local _os_id="42" - local _os_type="FreeBSD" + local _os_type="freebsdGuest" + local _os_descr="FreeBSD" else echo ">>> ERROR: Platform not supported for OVA (${TARGET})" print_error_pfS fi - local POPULATEDSIZE=$(du -d0 -m $FINAL_CHROOT_DIR | cut -f1) - local POPULATEDSIZEBYTES=$((${POPULATEDSIZE}*1024^2)) - local REFERENCESSIZE=$(stat -f "%z" ${OVA_TMP}/${OVFVMDK}) - - echo ">>> Setting REFERENCESSIZE to ${REFERENCESSIZE}..." | tee -a ${LOGFILE} - echo ">>> Setting POPULATEDSIZEBYTES to ${POPULATEDSIZEBYTES}..." | tee -a ${LOGFILE} - echo ">>> Setting DISKSECTIONALLOCATIONUNITS to ${OVA_DISKSECTIONALLOCATIONUNITS}..." | tee -a ${LOGFILE} - echo ">>> Setting DISKSECTIONCAPACITY to ${OVADISKSIZE}..." | tee -a ${LOGFILE} + local POPULATED_SIZE=$(du -d0 -k $FINAL_CHROOT_DIR | cut -f1) + local POPULATED_SIZE_IN_BYTES=$((${POPULATED_SIZE}*1024)) + local VMDK_FILE_SIZE=$(stat -f "%z" ${OVA_TMP}/${OVFVMDK}) sed \ - -e "s,%%REFERENCESSIZE%%,${REFERENCESSIZE},g" \ - -e "s,%%DISKSECTIONALLOCATIONUNITS%%,${OVA_DISKSECTIONALLOCATIONUNITS},g" \ - -e "s,%%DISKSECTIONCAPACITY%%,${OVADISKSIZE},g" \ - -e "s,%%DISKSECTIONPOPULATEDSIZE%%,${POPULATEDSIZEBYTES},g" \ + -e "s,%%VMDK_FILE_SIZE%%,${VMDK_FILE_SIZE},g" \ + -e "s,%%VMDK_DISK_CAPACITY_IN_GB%%,${VMDK_DISK_CAPACITY_IN_GB},g" \ + -e "s,%%POPULATED_SIZE_IN_BYTES%%,${POPULATED_SIZE_IN_BYTES},g" \ -e "s,%%OS_ID%%,${_os_id},g" \ -e "s,%%OS_TYPE%%,${_os_type},g" \ + -e "s,%%OS_DESCR%%,${_os_descr},g" \ -e "s,%%PRODUCT_NAME%%,${PRODUCT_NAME},g" \ -e "s,%%PRODUCT_VERSION%%,${PRODUCT_VERSION},g" \ -e "s,%%PRODUCT_URL%%,${PRODUCT_URL},g" \ diff --git a/tools/builder_defaults.sh b/tools/builder_defaults.sh index ff47cb9..55d2882 100644 --- a/tools/builder_defaults.sh +++ b/tools/builder_defaults.sh @@ -201,15 +201,12 @@ export OVFTEMPLATE=${OVFTEMPLATE:-"${BUILDER_TOOLS}/templates/ovf/${PRODUCT_NAME export OVFUFS=${OVFUFS:-"${PRODUCT_NAME}-disk1.ufs"} # On disk name of VMDK file included in OVA export OVFVMDK=${OVFVMDK:-"${PRODUCT_NAME}-disk1.vmdk"} -# 10 gigabyte on disk VMDK size -export OVADISKSIZE=${OVADISKSIZE:-"10737418240"} -# first partition size (freebsd-ufs) GPT -export OVA_FIRST_PART_SIZE=${OVA_FIRST_PART_SIZE:-"$((8*1024*1024*1024))"} -# swap partition size (freebsd-swap) GPT - -# remaining space of 10G-8G - 128 block beginning/loader -export OVA_SWAP_PART_SIZE=${OVA_SWAP_PART_SIZE:-"4193725"} -# 10737254400 = 10240MB = virtual box vmdk file size XXX grab this value from vbox creation -export OVA_DISKSECTIONALLOCATIONUNITS=${OVA_DISKSECTIONALLOCATIONUNITS:-"10737254400"} +# 8 gigabyte on disk VMDK size +export VMDK_DISK_CAPACITY_IN_GB=${VMDK_DISK_CAPACITY_IN_GB:-"8"} +# first partition size (freebsd-ufs) +export OVA_FIRST_PART_SIZE=${OVA_FIRST_PART_SIZE:-"6g"} +# swap partition size (freebsd-swap) +export OVA_SWAP_PART_SIZE=${OVA_SWAP_PART_SIZE:-"2G"} # Temporary place to save files export OVA_TMP=${OVA_TMP:-"${SCRATCHDIR}/ova_tmp"} # end of OVF diff --git a/tools/templates/ovf/pfSense.ovf b/tools/templates/ovf/pfSense.ovf index 84ff184..1e8b9b7 100644 --- a/tools/templates/ovf/pfSense.ovf +++ b/tools/templates/ovf/pfSense.ovf @@ -1,27 +1,28 @@ <?xml version="1.0" encoding="UTF-8"?> -<Envelope vmw:buildId="build-171294" xmlns="http://schemas.dmtf.org/ovf/envelope/1" xmlns:cim="http://schemas.dmtf.org/wbem/wscim/1/common" xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns:rasd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" xmlns:vmw="http://www.vmware.com/schema/ovf" xmlns:vssd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> +<!--Generated by VMware VirtualCenter Server, User: root, UTC time: 2015-07-28T05:27:27.755385Z--> +<Envelope vmw:buildId="build-2646482" xmlns="http://schemas.dmtf.org/ovf/envelope/1" xmlns:cim="http://schemas.dmtf.org/wbem/wscim/1/common" xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns:rasd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" xmlns:vmw="http://www.vmware.com/schema/ovf" xmlns:vssd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <References> - <File ovf:href="pfSense-disk1.vmdk" ovf:id="file1" ovf:size="%%REFERENCESSIZE%%"/> + <File ovf:href="pfSense-disk1.vmdk" ovf:id="file1" ovf:size="%%VMDK_FILE_SIZE%%" /> </References> <DiskSection> - <Info>List of the virtual disks used in the package</Info> - <Disk ovf:capacityAllocationUnits="byte" ovf:allocationUnits="%%DISKSECTIONALLOCATIONUNITS%%" ovf:capacity="%%DISKSECTIONCAPACITY%%" ovf:diskId="vmdisk1" ovf:fileRef="file1" ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#streamOptimized" populatedSize="%%DISKSECTIONPOPULATEDSIZE%%"/> + <Info>Virtual disk information</Info> + <Disk ovf:capacity="%%VMDK_DISK_CAPACITY_IN_GB%%" ovf:capacityAllocationUnits="byte * 2^30" ovf:diskId="vmdisk1" ovf:fileRef="file1" ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#streamOptimized" ovf:populatedSize="%%POPULATED_SIZE_IN_BYTES%%" /> </DiskSection> <NetworkSection> <Info>The list of logical networks</Info> - <Network ovf:name="VM WAN Network"> - <Description>The VM WAN Network network</Description> + <Network ovf:name="WAN Network"> + <Description>The WAN network</Description> </Network> - <Network ovf:name="VM LAN Network"> - <Description>The VM LAN Network network</Description> + <Network ovf:name="LAN Network"> + <Description>The LAN network</Description> </Network> </NetworkSection> <VirtualSystem ovf:id="pfSense"> - <Info>pfSense virtual machine</Info> + <Info>A virtual machine</Info> <Name>pfSense</Name> - <OperatingSystemSection ovf:id="%%OS_ID%%"> - <Info>%%OS_TYPE%% (pfSense)</Info> - <Description>%%OS_TYPE%%</Description> + <OperatingSystemSection ovf:id="%%OS_ID%%" vmw:osType="%%OS_TYPE%%"> + <Info>The kind of installed guest operating system</Info> + <Description>%%OS_DESCR%%</Description> </OperatingSystemSection> <VirtualHardwareSection> <Info>Virtual hardware requirements</Info> @@ -29,74 +30,126 @@ <vssd:ElementName>Virtual Hardware Family</vssd:ElementName> <vssd:InstanceID>0</vssd:InstanceID> <vssd:VirtualSystemIdentifier>pfSense</vssd:VirtualSystemIdentifier> - <vssd:VirtualSystemType>vmx-07</vssd:VirtualSystemType> + <vssd:VirtualSystemType>vmx-08</vssd:VirtualSystemType> </System> <Item> <rasd:AllocationUnits>hertz * 10^6</rasd:AllocationUnits> <rasd:Description>Number of Virtual CPUs</rasd:Description> - <rasd:ElementName>1 virtual CPU(s)</rasd:ElementName> + <rasd:ElementName>2 virtual CPU(s)</rasd:ElementName> <rasd:InstanceID>1</rasd:InstanceID> <rasd:ResourceType>3</rasd:ResourceType> - <rasd:VirtualQuantity>1</rasd:VirtualQuantity> + <rasd:VirtualQuantity>2</rasd:VirtualQuantity> </Item> <Item> <rasd:AllocationUnits>byte * 2^20</rasd:AllocationUnits> <rasd:Description>Memory Size</rasd:Description> - <rasd:ElementName>1024MB of memory</rasd:ElementName> + <rasd:ElementName>512MB of memory</rasd:ElementName> <rasd:InstanceID>2</rasd:InstanceID> <rasd:ResourceType>4</rasd:ResourceType> - <rasd:VirtualQuantity>1024</rasd:VirtualQuantity> + <rasd:VirtualQuantity>512</rasd:VirtualQuantity> </Item> <Item> <rasd:Address>0</rasd:Address> <rasd:Description>SCSI Controller</rasd:Description> - <rasd:ElementName>scsi0</rasd:ElementName> + <rasd:ElementName>SCSI controller 0</rasd:ElementName> <rasd:InstanceID>3</rasd:InstanceID> <rasd:ResourceSubType>lsilogic</rasd:ResourceSubType> <rasd:ResourceType>6</rasd:ResourceType> + <vmw:Config ovf:required="false" vmw:key="slotInfo.pciSlotNumber" vmw:value="16" /> </Item> <Item> <rasd:Address>1</rasd:Address> <rasd:Description>IDE Controller</rasd:Description> - <rasd:ElementName>VirtualIDEController 1</rasd:ElementName> + <rasd:ElementName>IDE 1</rasd:ElementName> <rasd:InstanceID>4</rasd:InstanceID> <rasd:ResourceType>5</rasd:ResourceType> </Item> <Item> <rasd:Address>0</rasd:Address> <rasd:Description>IDE Controller</rasd:Description> - <rasd:ElementName>VirtualIDEController 0</rasd:ElementName> + <rasd:ElementName>IDE 0</rasd:ElementName> <rasd:InstanceID>5</rasd:InstanceID> <rasd:ResourceType>5</rasd:ResourceType> </Item> + <Item ovf:required="false"> + <rasd:AutomaticAllocation>false</rasd:AutomaticAllocation> + <rasd:ElementName>Video card</rasd:ElementName> + <rasd:InstanceID>6</rasd:InstanceID> + <rasd:ResourceType>24</rasd:ResourceType> + <vmw:Config ovf:required="false" vmw:key="enable3DSupport" vmw:value="false" /> + <vmw:Config ovf:required="false" vmw:key="use3dRenderer" vmw:value="automatic" /> + <vmw:Config ovf:required="false" vmw:key="useAutoDetect" vmw:value="false" /> + <vmw:Config ovf:required="false" vmw:key="videoRamSizeInKB" vmw:value="4096" /> + </Item> + <Item ovf:required="false"> + <rasd:AutomaticAllocation>false</rasd:AutomaticAllocation> + <rasd:ElementName>VMCI device</rasd:ElementName> + <rasd:InstanceID>7</rasd:InstanceID> + <rasd:ResourceSubType>vmware.vmci</rasd:ResourceSubType> + <rasd:ResourceType>1</rasd:ResourceType> + <vmw:Config ovf:required="false" vmw:key="allowUnrestrictedCommunication" vmw:value="false" /> + <vmw:Config ovf:required="false" vmw:key="slotInfo.pciSlotNumber" vmw:value="32" /> + </Item> + <Item ovf:required="false"> + <rasd:AddressOnParent>0</rasd:AddressOnParent> + <rasd:AutomaticAllocation>false</rasd:AutomaticAllocation> + <rasd:ElementName>CD/DVD drive 1</rasd:ElementName> + <rasd:InstanceID>8</rasd:InstanceID> + <rasd:Parent>4</rasd:Parent> + <rasd:ResourceSubType>vmware.cdrom.remotepassthrough</rasd:ResourceSubType> + <rasd:ResourceType>15</rasd:ResourceType> + <vmw:Config ovf:required="false" vmw:key="backing.exclusive" vmw:value="false" /> + </Item> <Item> <rasd:AddressOnParent>7</rasd:AddressOnParent> <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation> - <rasd:Connection>VM WAN Network</rasd:Connection> - <rasd:Description>VmxNet3 ethernet adapter on "VM WAN Network"</rasd:Description> - <rasd:ElementName>ethernet0</rasd:ElementName> - <rasd:InstanceID>6</rasd:InstanceID> + <rasd:Connection>WAN Network</rasd:Connection> + <rasd:Description>VmxNet3 ethernet adapter on "WAN Network"</rasd:Description> + <rasd:ElementName>Network adapter 1</rasd:ElementName> + <rasd:InstanceID>9</rasd:InstanceID> <rasd:ResourceSubType>VmxNet3</rasd:ResourceSubType> <rasd:ResourceType>10</rasd:ResourceType> + <vmw:Config ovf:required="false" vmw:key="slotInfo.pciSlotNumber" vmw:value="160" /> + <vmw:Config ovf:required="false" vmw:key="wakeOnLanEnabled" vmw:value="true" /> </Item> <Item> <rasd:AddressOnParent>8</rasd:AddressOnParent> <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation> - <rasd:Connection>VM LAN Network</rasd:Connection> - <rasd:Description>VmxNet3 ethernet adapter on "VM LAN Network"</rasd:Description> - <rasd:ElementName>ethernet0</rasd:ElementName> - <rasd:InstanceID>7</rasd:InstanceID> + <rasd:Connection>LAN Network</rasd:Connection> + <rasd:Description>VmxNet3 ethernet adapter on "LAN Network"</rasd:Description> + <rasd:ElementName>Network adapter 2</rasd:ElementName> + <rasd:InstanceID>10</rasd:InstanceID> <rasd:ResourceSubType>VmxNet3</rasd:ResourceSubType> <rasd:ResourceType>10</rasd:ResourceType> + <vmw:Config ovf:required="false" vmw:key="slotInfo.pciSlotNumber" vmw:value="192" /> + <vmw:Config ovf:required="false" vmw:key="wakeOnLanEnabled" vmw:value="true" /> </Item> <Item> <rasd:AddressOnParent>0</rasd:AddressOnParent> - <rasd:ElementName>scsi0:0</rasd:ElementName> + <rasd:ElementName>Hard disk 1</rasd:ElementName> <rasd:HostResource>ovf:/disk/vmdisk1</rasd:HostResource> - <rasd:InstanceID>8</rasd:InstanceID> + <rasd:InstanceID>11</rasd:InstanceID> <rasd:Parent>3</rasd:Parent> <rasd:ResourceType>17</rasd:ResourceType> + <vmw:Config ovf:required="false" vmw:key="backing.writeThrough" vmw:value="false" /> </Item> + <vmw:Config ovf:required="false" vmw:key="cpuHotAddEnabled" vmw:value="false" /> + <vmw:Config ovf:required="false" vmw:key="cpuHotRemoveEnabled" vmw:value="false" /> + <vmw:Config ovf:required="false" vmw:key="firmware" vmw:value="bios" /> + <vmw:Config ovf:required="false" vmw:key="virtualICH7MPresent" vmw:value="false" /> + <vmw:Config ovf:required="false" vmw:key="virtualSMCPresent" vmw:value="false" /> + <vmw:Config ovf:required="false" vmw:key="memoryHotAddEnabled" vmw:value="false" /> + <vmw:Config ovf:required="false" vmw:key="nestedHVEnabled" vmw:value="false" /> + <vmw:Config ovf:required="false" vmw:key="powerOpInfo.powerOffType" vmw:value="soft" /> + <vmw:Config ovf:required="false" vmw:key="powerOpInfo.resetType" vmw:value="soft" /> + <vmw:Config ovf:required="false" vmw:key="powerOpInfo.standbyAction" vmw:value="powerOnSuspend" /> + <vmw:Config ovf:required="false" vmw:key="powerOpInfo.suspendType" vmw:value="hard" /> + <vmw:Config ovf:required="false" vmw:key="tools.afterPowerOn" vmw:value="true" /> + <vmw:Config ovf:required="false" vmw:key="tools.afterResume" vmw:value="true" /> + <vmw:Config ovf:required="false" vmw:key="tools.beforeGuestShutdown" vmw:value="true" /> + <vmw:Config ovf:required="false" vmw:key="tools.beforeGuestStandby" vmw:value="true" /> + <vmw:Config ovf:required="false" vmw:key="tools.syncTimeWithHost" vmw:value="false" /> + <vmw:Config ovf:required="false" vmw:key="tools.toolsUpgradePolicy" vmw:value="manual" /> </VirtualHardwareSection> <ProductSection xsi:type="ovf:ProductSection_Type"> <Info>Describes product information for the service</Info> @@ -106,8 +159,8 @@ <ProductUrl>%%PRODUCT_URL%%</ProductUrl> <VendorUrl>%%PRODUCT_URL%%</VendorUrl> </ProductSection> - <AnnotationSection xsi:type="ovf:AnnotationSection_Type"> - <Info>An annotation</Info> + <AnnotationSection ovf:required="false"> + <Info>A human-readable annotation</Info> <Annotation>pfSense is a free, open source customized distribution of FreeBSD tailored for use as a firewall and router. In addition to being a powerful, flexible firewalling and routing platform, it includes a long list of related features and a package system allowing further expandability without adding bloat and potential security vulnerabilities to the base distribution. pfSense is a popular project with more than 1 million downloads since its inception, and proven in countless installations ranging from small home networks protecting a PC and an Xbox to large corporations, universities and other organizations protecting thousands of network devices.</Annotation> </AnnotationSection> <EulaSection> |