Browse code

Add a different ova for uefi boot

Anish Swaminathan authored on 2015/09/04 08:20:14
Showing 18 changed files
... ...
@@ -354,26 +354,17 @@ photon-vagrant-local: check-packer check-vagrant
354 354
 cloud-image: $(PHOTON_STAGE) $(PHOTON_ISO_PATH) iso
355 355
 	@echo "Building cloud image $(IMG_NAME)..."
356 356
 	@cd $(PHOTON_CLOUD_IMAGE_BUILDER_DIR)
357
-	@if [ -e $(PHOTON_STAGE)/photon.iso ]; then \
358
-		$(PHOTON_CLOUD_IMAGE_BUILDER) $(PHOTON_STAGE)/photon.iso $(PHOTON_CLOUD_IMAGE_BUILDER_DIR) $(IMG_NAME) $(SRCROOT) $(PHOTON_GENERATED_DATA_DIR); \
359
-	elif [ -e $(PHOTON_STAGE)/photon-minimal.iso ]; then \
360
-		$(PHOTON_CLOUD_IMAGE_BUILDER) $(PHOTON_STAGE)/photon-minimal.iso $(PHOTON_CLOUD_IMAGE_BUILDER_DIR) $(IMG_NAME) $(SRCROOT) $(PHOTON_GENERATED_DATA_DIR); \
361
-	else \
362
-		echo "Unable to find photon iso file... aborting build"; \
363
-	fi
357
+	$(PHOTON_CLOUD_IMAGE_BUILDER) $(PHOTON_CLOUD_IMAGE_BUILDER_DIR) $(IMG_NAME) $(SRCROOT) $(PHOTON_GENERATED_DATA_DIR) $(PHOTON_STAGE) $(ADDITIONAL_RPMS_PATH)
364 358
 
365 359
 
366 360
 cloud-image-all: $(PHOTON_STAGE) $(PHOTON_ISO_PATH) iso
367 361
 	@echo "Building cloud images - gce, ami, azure and ova..."
368 362
 	@cd $(PHOTON_CLOUD_IMAGE_BUILDER_DIR)
369
-	@if [ -e $(PHOTON_STAGE)/photon.iso ]; then \
370
-		$(PHOTON_CLOUD_IMAGE_BUILDER) $(PHOTON_STAGE)/photon.iso $(PHOTON_CLOUD_IMAGE_BUILDER_DIR) gce $(SRCROOT) $(PHOTON_GENERATED_DATA_DIR); \
371
-		$(PHOTON_CLOUD_IMAGE_BUILDER) $(PHOTON_STAGE)/photon.iso $(PHOTON_CLOUD_IMAGE_BUILDER_DIR) ami $(SRCROOT) $(PHOTON_GENERATED_DATA_DIR); \
372
-		$(PHOTON_CLOUD_IMAGE_BUILDER) $(PHOTON_STAGE)/photon.iso $(PHOTON_CLOUD_IMAGE_BUILDER_DIR) azure $(SRCROOT) $(PHOTON_GENERATED_DATA_DIR); \
373
-		$(PHOTON_CLOUD_IMAGE_BUILDER) $(PHOTON_STAGE)/photon.iso $(PHOTON_CLOUD_IMAGE_BUILDER_DIR) ova $(SRCROOT) $(PHOTON_GENERATED_DATA_DIR); \
374
-	else \
375
-		echo "Unable to find photon iso file... aborting build"; \
376
-	fi
363
+	$(PHOTON_CLOUD_IMAGE_BUILDER) $(PHOTON_CLOUD_IMAGE_BUILDER_DIR) gce $(SRCROOT) $(PHOTON_GENERATED_DATA_DIR) $(PHOTON_STAGE) $(ADDITIONAL_RPMS_PATH)
364
+	$(PHOTON_CLOUD_IMAGE_BUILDER) $(PHOTON_CLOUD_IMAGE_BUILDER_DIR) ami $(SRCROOT) $(PHOTON_GENERATED_DATA_DIR) $(PHOTON_STAGE) $(ADDITIONAL_RPMS_PATH)
365
+	$(PHOTON_CLOUD_IMAGE_BUILDER) $(PHOTON_CLOUD_IMAGE_BUILDER_DIR) azure $(SRCROOT) $(PHOTON_GENERATED_DATA_DIR) $(PHOTON_STAGE) $(ADDITIONAL_RPMS_PATH)
366
+	$(PHOTON_CLOUD_IMAGE_BUILDER) $(PHOTON_CLOUD_IMAGE_BUILDER_DIR) ova $(SRCROOT) $(PHOTON_GENERATED_DATA_DIR) $(PHOTON_STAGE) $(ADDITIONAL_RPMS_PATH)
367
+
377 368
 
378 369
 check: check-bison check-g++ check-gawk check-createrepo check-texinfo check-sanity check-docker
379 370
 
380 371
new file mode 100644
... ...
@@ -0,0 +1,14 @@
0
+{
1
+    "minimal" : {
2
+        "title" : "Photon Minimal",
3
+        "file" : "packages_minimal.json",
4
+        "visible" : true,
5
+        "include" : []
6
+    },
7
+    "uefi" : {
8
+        "title" : "Photon UEFI packages",
9
+        "file" : "packages_uefi.json",
10
+        "visible" : true,
11
+        "include" : ["minimal"]
12
+    }
13
+}
0 14
new file mode 100644
... ...
@@ -0,0 +1,4 @@
0
+{
1
+    "packages":["tzdata", "mesos"]
2
+}
3
+
... ...
@@ -12,6 +12,7 @@
12 12
 #		The path to this empty disk is specified in the HDD variable in config.inc
13 13
 #	End
14 14
 #
15
+
15 16
 grub_efi_install()
16 17
 {
17 18
     mkdir $BUILDROOT/boot/efi
... ...
@@ -27,7 +28,7 @@ grub_efi_install()
27 27
     mkfs.vfat $BOOT_PARTITION
28 28
     mount -t vfat $BOOT_PARTITION $BUILDROOT/boot/efi
29 29
     cp boot/unifont.pf2 /usr/share/grub/
30
-    grub2-efi-install --target=x86_64-efi --efi-directory=$BUILDROOT/boot/efi --bootloader-id=Boot --root-directory=$BUILDROOT --recheck --debug
30
+    grub2-efi-install --target=x86_64-efi --efi-directory=$BUILDROOT/boot/efi --bootloader-id=Boot --root-directory=$BUILDROOT --recheck
31 31
     rm $BUILDROOT/boot/efi/EFI/Boot/grubx64.efi
32 32
     cp efi/bootx64.efi $BUILDROOT/boot/efi/EFI/Boot/bootx64.efi
33 33
     umount $BUILDROOT/boot/efi
... ...
@@ -69,7 +70,7 @@ ln -sfv grub2 $BUILDROOT/boot/grub
69 69
 command -v grub-install >/dev/null 2>&1 && grubInstallCmd="grub-install" && { echo >&2 "Found grub-install"; }
70 70
 command -v grub2-install >/dev/null 2>&1 && grubInstallCmd="grub2-install" && { echo >&2 "Found grub2-install"; }
71 71
 if [ -z $grubInstallCmd ]; then
72
-echo "Unable to found grub install command"
72
+echo "Unable to find grub install command"
73 73
 exit 1
74 74
 fi
75 75
 
... ...
@@ -1,3 +1,6 @@
1 1
 #!/bin/bash
2 2
 
3 3
 PHOTON_IMG_OUTPUT_PATH=$1
4
+tar -Szcf $PHOTON_IMG_OUTPUT_PATH/photon-ami.tar.gz $PHOTON_IMG_OUTPUT_PATH/photon-ami.raw
5
+
6
+rm -f $PHOTON_IMG_OUTPUT_PATH/photon-ami.raw
... ...
@@ -6,7 +6,7 @@
6 6
 			"text": "PASSWORD"
7 7
 		},
8 8
 	"type": "ami",
9
-    "size": {"root": "5", "swap": "0"},
9
+    "size": {"root": "8", "swap": "0"},
10 10
     "public_key":"<ssh-key-here>"
11 11
 }
12 12
 
... ...
@@ -1,5 +1,4 @@
1 1
 #!/bin/bash
2
-set -x
3 2
 
4 3
 cd /lib/systemd/system/multi-user.target.wants/
5 4
 
... ...
@@ -7,4 +7,6 @@ mkdir -p $SRC_ROOT/tools/bin
7 7
 make clean
8 8
 make
9 9
 $SRC_ROOT/tools/bin/imgconverter -i $PHOTON_IMG_OUTPUT_PATH/photon-azure.raw -v vhd -o $PHOTON_IMG_OUTPUT_PATH/photon-azure.vhd
10
-exit 0
10
+
11
+rm -f $PHOTON_IMG_OUTPUT_PATH/photon-azure.raw
12
+
... ...
@@ -6,7 +6,7 @@
6 6
 			"text": "PASSWORD"
7 7
 		},
8 8
 	"type": "azure",
9
-    "size": {"root": "2", "swap": "0"},
9
+    "size": {"root": "8", "swap": "0"},
10 10
     "public_key":"<ssh-key-here>"
11 11
 }
12 12
 
... ...
@@ -10,61 +10,52 @@
10 10
 #		Create cloud images
11 11
 #	End
12 12
 #
13
-
14 13
 set -x
15
-PHOTON_ISO_PATH=$1
16
-BUILD_SCRIPTS_FOLDER=$2
17
-IMG_NAME=$3
18
-SRC_ROOT=$4
19
-GENERATED_DATA_PATH=$5
20
-PHOTON_STAGE_PATH="${PHOTON_ISO_PATH%/*}"
14
+BUILD_SCRIPTS_PATH=$1
15
+IMG_NAME=$2
16
+SRC_ROOT=$3
17
+GENERATED_DATA_PATH=$4
18
+PHOTON_STAGE_PATH=$5
19
+ADDITIONAL_RPMS_PATH=$6
21 20
 INSTALLER_PATH=$PHOTON_STAGE_PATH/$IMG_NAME
22 21
 
23 22
 PHOTON_IMG_OUTPUT_PATH=$PHOTON_STAGE_PATH/$IMG_NAME
24 23
 
25
-VMDK_CONFIG_FILE=${BUILD_SCRIPTS_FOLDER}/$IMG_NAME/vmdk_$IMG_NAME.json
26
-VMDK_CONFIG_SAFE_FILE=${BUILD_SCRIPTS_FOLDER}/$IMG_NAME/vmdk_safe_$IMG_NAME.json
27
-ISO_MOUNT_FOLDER=$PHOTON_STAGE_PATH/iso_mount
24
+VMDK_CONFIG_FILE=${BUILD_SCRIPTS_PATH}/$IMG_NAME/vmdk_$IMG_NAME.json
25
+VMDK_CONFIG_SAFE_FILE=${BUILD_SCRIPTS_PATH}/$IMG_NAME/vmdk_safe_$IMG_NAME.json
28 26
 
29
-mkdir -p $ISO_MOUNT_FOLDER
30 27
 mkdir -p $INSTALLER_PATH/installer
31 28
 cp -R $SRC_ROOT/installer $INSTALLER_PATH/
32 29
 
33 30
 cd $INSTALLER_PATH/installer
34 31
 cp $VMDK_CONFIG_FILE $VMDK_CONFIG_SAFE_FILE
35
-cp ${BUILD_SCRIPTS_FOLDER}/mk-setup-vmdk.sh .
36
-cp ${BUILD_SCRIPTS_FOLDER}/mk-clean-vmdk.sh .
32
+cp ${BUILD_SCRIPTS_PATH}/mk-setup-vmdk.sh .
33
+cp ${BUILD_SCRIPTS_PATH}/mk-clean-vmdk.sh .
37 34
 
38 35
 if [ $IMG_NAME != "ova" ]
39 36
   then
40
-    cp ${BUILD_SCRIPTS_FOLDER}/mk-setup-grub.sh .
37
+    cp ${BUILD_SCRIPTS_PATH}/mk-setup-grub.sh .
41 38
 fi
42 39
 
43
-if [ -e ${BUILD_SCRIPTS_FOLDER}/${IMG_NAME}/mk-setup-grub.sh ]
40
+if [ -e ${BUILD_SCRIPTS_PATH}/${IMG_NAME}/mk-setup-grub.sh ]
44 41
   then
45
-    cp ${BUILD_SCRIPTS_FOLDER}/${IMG_NAME}/mk-setup-grub.sh .
42
+    cp ${BUILD_SCRIPTS_PATH}/${IMG_NAME}/mk-setup-grub.sh .
46 43
 fi
47 44
 
48
-if [ -e ${BUILD_SCRIPTS_FOLDER}/${IMG_NAME}/mk-setup-vmdk.sh ]
49
-  then
50
-    cp ${BUILD_SCRIPTS_FOLDER}/${IMG_NAME}/mk-setup-vmdk.sh .
51
-fi
45
+PASSWORD=`date | md5sum | cut -f 1 -d ' '`
46
+sed -i "s/PASSWORD/$PASSWORD/" $VMDK_CONFIG_SAFE_FILE
52 47
 
53
-if [ -e ${BUILD_SCRIPTS_FOLDER}/${IMG_NAME}/mk-clean-vmdk.sh ]
48
+echo $ADDITIONAL_RPMS_PATH
49
+if [ -n "$ADDITIONAL_RPMS_PATH" ]
54 50
   then
55
-    cp ${BUILD_SCRIPTS_FOLDER}/${IMG_NAME}/mk-clean-vmdk.sh .
51
+    mkdir $PHOTON_STAGE_PATH/RPMS/additonal
52
+    cp -f $ADDITIONAL_RPMS_PATH/* $PHOTON_STAGE_PATH/RPMS/additonal/
56 53
 fi
57 54
 
58
-PASSWORD=`date | md5sum | cut -f 1 -d ' '`
59
-sed -i "s/PASSWORD/$PASSWORD/" $VMDK_CONFIG_SAFE_FILE
60
-cat $VMDK_CONFIG_SAFE_FILE
61 55
 ./photonInstaller.py -p $GENERATED_DATA_PATH/build_install_options_$IMG_NAME.json -r $PHOTON_STAGE_PATH/RPMS -v $INSTALLER_PATH/photon-${IMG_NAME} -o $GENERATED_DATA_PATH -f $VMDK_CONFIG_SAFE_FILE
62 56
 rm $VMDK_CONFIG_SAFE_FILE
63 57
 
64
-
65
-cd $BUILD_SCRIPTS_FOLDER
66
-
67
-
58
+cd $BUILD_SCRIPTS_PATH
68 59
 
69 60
 DISK_DEVICE=`losetup --show -f ${PHOTON_IMG_OUTPUT_PATH}/photon-${IMG_NAME}.raw`
70 61
 
... ...
@@ -87,7 +78,7 @@ sed -e "s/^\(root:\)[^:]*:/\1*:/" $PHOTON_IMG_OUTPUT_PATH/photon-${IMG_NAME}/etc
87 87
 rm -f $PHOTON_IMG_OUTPUT_PATH/photon-${IMG_NAME}/etc/shadow.bak
88 88
 rm -f $PHOTON_IMG_OUTPUT_PATH/photon-${IMG_NAME}/etc/shadow-
89 89
 
90
-if [ $IMG_NAME != "ova" ]
90
+if [ $IMG_NAME != "ova" ] && [ $IMG_NAME != "ova_uefi" ]
91 91
   then
92 92
     mount -o bind /proc $PHOTON_IMG_OUTPUT_PATH/photon-${IMG_NAME}/proc
93 93
     mount -o bind /dev $PHOTON_IMG_OUTPUT_PATH/photon-${IMG_NAME}/dev
... ...
@@ -1,5 +1,4 @@
1 1
 #!/bin/bash
2
-set -x
3 2
 
4 3
 cd /lib/systemd/system/multi-user.target.wants/
5 4
 
... ...
@@ -8,3 +8,5 @@ echo "Creating ${TARFILE} file from ${RAWFILE}."
8 8
 cd $PHOTON_IMG_OUTPUT_PATH
9 9
 mv ${RAWFILE} disk.raw
10 10
 tar -Szcf $PHOTON_IMG_OUTPUT_PATH/${TARFILE} disk.raw
11
+
12
+rm -f disk.raw
... ...
@@ -6,7 +6,7 @@
6 6
 			"text": "PASSWORD"
7 7
 		},
8 8
 	"type": "gce",
9
-    "size": {"root": "2", "swap": "0"},
9
+    "size": {"root": "8", "swap": "0"},
10 10
     "public_key":"<ssh-key-here>"
11 11
 }
12 12
 
... ...
@@ -24,6 +24,8 @@ ovftool /tmp/vmx-temp.vmx $PHOTON_IMG_OUTPUT_PATH/temp/photon-ova.ovf
24 24
 cd $PHOTON_IMG_OUTPUT_PATH/temp
25 25
 
26 26
 sed -i "s/otherGuest/other3xLinux64Guest/g" $PHOTON_IMG_OUTPUT_PATH/temp/photon-ova.ovf
27
+#Add product info
28
+sed -i '/\/VirtualHardwareSection>/i \ \t<ProductSection> \n \t\t<Info>Information about the installed software</Info> \n \t\t<Product>Photon</Product> \n \t\t<Vendor>VMware Inc.</Vendor> \n \t\t<Version>1.0.0</Version> \n \t\t<FullVersion>1.0.0-TP2</FullVersion> \n \t</ProductSection> ' $PHOTON_IMG_OUTPUT_PATH/temp/photon-ova.ovf
27 29
 rm -f $PHOTON_IMG_OUTPUT_PATH/temp/photon-ova.mf
28 30
 openssl sha1 *.vmdk photon-ova.ovf > photon-ova.mf
29 31
 tar cf photon-ova.ova photon-ova.ovf photon-ova.mf photon-ova-disk1.vmdk
... ...
@@ -64,6 +66,8 @@ mkdir -p $PHOTON_IMG_OUTPUT_PATH/temp1
64 64
 ovftool /tmp/vmx-temp-custom.vmx $PHOTON_IMG_OUTPUT_PATH/temp1/photon-custom.ovf
65 65
 cd $PHOTON_IMG_OUTPUT_PATH/temp1
66 66
 sed -i "s/otherGuest/other3xLinux64Guest/g" $PHOTON_IMG_OUTPUT_PATH/temp1/photon-custom.ovf
67
+#Add product info
68
+sed -i '/\/VirtualHardwareSection>/i \ \t<ProductSection> \n \t\t<Info>Information about the installed software</Info> \n \t\t<Product>Photon</Product> \n \t\t<Vendor>VMware Inc.</Vendor> \n \t\t<Version>1.0.0</Version> \n \t\t<FullVersion>1.0.0-TP2</FullVersion> \n \t</ProductSection> ' $PHOTON_IMG_OUTPUT_PATH/temp1/photon-custom.ovf
67 69
 rm -f $PHOTON_IMG_OUTPUT_PATH/temp1/photon-custom.mf
68 70
 openssl sha1 *.vmdk photon-custom.ovf > photon-custom.mf
69 71
 tar cf photon-custom.ova photon-custom.ovf photon-custom.mf photon-custom-disk1.vmdk
... ...
@@ -71,3 +75,4 @@ cp $PHOTON_IMG_OUTPUT_PATH/temp1/photon-custom.ova $PHOTON_IMG_OUTPUT_PATH/
71 71
 cd $PHOTON_IMG_OUTPUT_PATH
72 72
 rm -rf $PHOTON_IMG_OUTPUT_PATH/temp/
73 73
 rm -rf $PHOTON_IMG_OUTPUT_PATH/temp1/
74
+rm -f $PHOTON_IMG_OUTPUT_PATH/photon-ova.raw
... ...
@@ -6,7 +6,7 @@
6 6
 			"text": "PASSWORD"
7 7
 		},
8 8
 	"type": "minimal",
9
-    "size": {"root": "2", "swap": "0"},
9
+    "size": {"root": "8", "swap": "0"},
10 10
     "public_key":"<ssh-key-here>"
11 11
 }
12 12
 
13 13
new file mode 100755
... ...
@@ -0,0 +1,37 @@
0
+#!/bin/bash
1
+set -x
2
+PHOTON_IMG_OUTPUT_PATH=$1
3
+SRC_ROOT=$2
4
+
5
+rm -f $PHOTON_IMG_OUTPUT_PATH/*.vmdk
6
+rm -f $PHOTON_IMG_OUTPUT_PATH/*.ova
7
+sed "s|VMDK_IMAGE|$PHOTON_IMG_OUTPUT_PATH/photon-ova-uefi.vmdk|" vmx-uefi-template > /tmp/vmx-temp-uefi.vmx
8
+
9
+cd $SRC_ROOT/tools/src/vixDiskUtil
10
+mkdir -p $SRC_ROOT/tools/bin
11
+make clean
12
+make
13
+
14
+cd $PHOTON_IMG_OUTPUT_PATH
15
+
16
+$SRC_ROOT/tools/bin/vixdiskutil -convert $PHOTON_IMG_OUTPUT_PATH/photon-ova_uefi.raw -cap 16000 $PHOTON_IMG_OUTPUT_PATH/photon-ova-uefi.vmdk
17
+$SRC_ROOT/tools/bin/vixdiskutil -wmeta toolsVersion 2147483647 $PHOTON_IMG_OUTPUT_PATH/photon-ova-uefi.vmdk
18
+
19
+mkdir -p $PHOTON_IMG_OUTPUT_PATH/temp
20
+ovftool /tmp/vmx-temp-uefi.vmx $PHOTON_IMG_OUTPUT_PATH/temp/photon-ova-uefi.ovf
21
+cd $PHOTON_IMG_OUTPUT_PATH/temp
22
+
23
+sed -i "s/otherGuest/other3xLinux64Guest/g" $PHOTON_IMG_OUTPUT_PATH/temp/photon-ova-uefi.ovf
24
+#Add uefi metadata
25
+sed -i '/vmw:value="efi"\/>/a \ \t<vmw:Config ovf:required="false" vmw:key="uefi.secureBoot.enabled" vmw:value="TRUE"/>\n \ \t<vmw:Config ovf:required="false" vmw:key="isolation.monitor.control.disable" vmw:value="FALSE"/> ' $PHOTON_IMG_OUTPUT_PATH/temp/photon-ova-uefi.ovf
26
+#Add product info
27
+sed -i '/\/VirtualHardwareSection>/i \ \t<ProductSection> \n \t\t<Info>Information about the installed software</Info> \n \t\t<Product>Photon</Product> \n \t\t<Vendor>VMware Inc.</Vendor> \n \t\t<Version>1.0.0</Version> \n \t\t<FullVersion>1.0.0-TP2</FullVersion> \n \t</ProductSection> ' $PHOTON_IMG_OUTPUT_PATH/temp/photon-ova-uefi.ovf
28
+
29
+openssl sha1 *.vmdk photon-ova-uefi.ovf > photon-ova-uefi.mf
30
+tar cf photon-ova-uefi.ova photon-ova-uefi.ovf photon-ova-uefi.mf photon-ova-uefi-disk1.vmdk
31
+
32
+cp $PHOTON_IMG_OUTPUT_PATH/temp/photon-ova-uefi.ova $PHOTON_IMG_OUTPUT_PATH/
33
+rm -rf $PHOTON_IMG_OUTPUT_PATH/temp/
34
+
35
+rm -f $PHOTON_IMG_OUTPUT_PATH/photon-ova_uefi.raw
36
+
0 37
new file mode 100644
... ...
@@ -0,0 +1,13 @@
0
+{
1
+	"hostname": "photon-machine",
2
+	"password": 
3
+		{
4
+			"crypted": false,
5
+			"text": "PASSWORD"
6
+		},
7
+	"type": "uefi",
8
+    "size": {"root": "8", "swap": "0"},
9
+    "boot":"efi",
10
+    "public_key":"<ssh-key-here>"
11
+}
12
+
0 13
new file mode 100644
... ...
@@ -0,0 +1,23 @@
0
+.encoding = "UTF-8"
1
+virtualHW.version = "10"
2
+scsi0.present = "TRUE"
3
+scsi0.virtualDev = "lsilogic"
4
+scsi0:0.present = "TRUE"
5
+scsi0:0.fileName = "VMDK_IMAGE"
6
+ethernet0.present = "TRUE"
7
+ethernet0.virtualDev = "vmxnet3"
8
+ethernet0.wakeOnPcktRcv = "FALSE"
9
+ethernet0.addressType = "generated"
10
+ethernet0.linkStatePropagation.enable = "TRUE"
11
+ethernet0.connectionType = "None"
12
+displayName = "Photon"
13
+guestOS = "*other26xLinux64Guest"
14
+memsize = "2048"
15
+ide1:0.present = "TRUE"
16
+ide1:0.autodetect = "TRUE"
17
+ide1:0.deviceType = "cdrom-raw"
18
+ide1:0.startConnected = "FALSE"
19
+firmware = "efi"
20
+uefi.secureBoot.enabled = "TRUE"
21
+isolation.monitor.control.disable = "FALSE"
22
+