... | ... |
@@ -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 |
+} |
... | ... |
@@ -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 |
|
... | ... |
@@ -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 |
... | ... |
@@ -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 |
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 | 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 |
+ |