rm -rf $iso_build_dir
mkdir -p $iso_build_dir
+iso_arch="$(uname -m)"
reposnap_base=$(_read_build_config DEFAULT centos_reposnap)
release_version=$PRODUCT_RELEASE_LABEL
-reposnap_base_dir="${reposnap_base}/os/x86_64/"
+reposnap_base_dir="${reposnap_base}/os/${iso_arch}/"
iso_image_label=$(_read_build_config DEFAULT iso_image_label)
cd_efi_dir="${reposnap_base_dir}/EFI"
cd_images_dir="${reposnap_base_dir}/images"
url=$(remove_extra_slashes_from_url $url)
# count cut length in case url depth changes
cut_dirs=$(echo $url | sed -re 's|.*://[^/]+/(.+)|\1|' -e 's|/$||' | grep -o / | wc -l)
- wget -N -r --no-host-directories --no-verbose --cut-dirs=${cut_dirs} --reject index.html* --no-parent $url
+ wget -N -r \
+ --no-host-directories \
+ --no-verbose \
+ --cut-dirs=${cut_dirs} \
+ --reject index.html* \
+ --no-parent \
+ --execute robots=off \
+ $url
}
pushd $iso_build_dir
# Get files needed for generating CD image.
wget_dir ${cd_efi_dir}/
wget_dir ${cd_images_dir}/
-rm -rf images/boot.iso
+rm -f images/boot.iso
sync
-wget_dir ${cd_isolinux_dir}/
-chmod +w -R isolinux/ EFI/ images/
-
-if [ -e $scriptdir/isolinux/isolinux.cfg ]; then
- cp $scriptdir/isolinux/isolinux.cfg isolinux/isolinux.cfg
-else
- sed -i "s/^timeout.*/timeout 100/" isolinux/isolinux.cfg
- sed -i "s/^ - Press.*/Beginning the cloud installation process/" isolinux/boot.msg
- sed -i "s/^#menu hidden/menu hidden/" isolinux/isolinux.cfg
- sed -i "s/menu default//" isolinux/isolinux.cfg
- sed -i "/^label linux/amenu default" isolinux/isolinux.cfg
- sed -i "/append initrd/ s/$/ console=tty0 console=ttyS1,115200/" isolinux/isolinux.cfg
+chmod +w -R EFI/ images/
+# Only x86_64 supports PC-BIOS, so skip all isolinux processing on other platforms
+if [ "${iso_arch}" = 'x86_64' ]; then
+ wget_dir ${cd_isolinux_dir}/
+ chmod +w -R isolinux/
+
+ if [ -e $scriptdir/isolinux/isolinux.cfg ]; then
+ cp $scriptdir/isolinux/isolinux.cfg isolinux/isolinux.cfg
+ else
+ sed -i "s/^timeout.*/timeout 100/" isolinux/isolinux.cfg
+ sed -i "s/^ - Press.*/Begin the cloud installation process/" isolinux/boot.msg
+ sed -i "s/^#menu hidden/menu hidden/" isolinux/isolinux.cfg
+ sed -i "s/menu default//" isolinux/isolinux.cfg
+ sed -i "/^label linux/amenu default" isolinux/isolinux.cfg
+ sed -i "/append initrd/ s/$/ console=tty0 console=ttyS1,115200/" isolinux/isolinux.cfg
+ fi
+ cp -f $scriptdir/akraino_splash.png isolinux/splash.png
fi
-cp -f $scriptdir/akraino_splash.png isolinux/splash.png
+
+# Update grub.cfg for EFI booting, similar to isolinux
+sed -i '/menuentry/{N;N;N;q}' EFI/BOOT/grub.cfg
+sed -i -e 's|Install CentOS 7|Begin the cloud installation process|' \
+ -e '/vmlinuz/ s/$/ console=tty0 console=ttyS1,115200 console=ttyAMA0,115200/' \
+ EFI/BOOT/grub.cfg
popd
pushd $tmp
# Copy latest kernel and initrd-provisioning from boot dir
-virt-copy-out -a $input_image /boot/ ./
+if [ "${iso_arch}" = 'x86_64' ]; then
+ qemu-img convert $input_image guest-image.raw
+ myloop=$(sudo losetup -fP --show guest-image.raw)
+ mkdir mnt
+ sudo mount -o loop ${myloop}p1 mnt/
+ sudo rsync -avA mnt/boot .
+ sudo chown -R $(id -u):$(id -g) boot
+ sudo umount mnt
+ sudo losetup -d ${myloop}
+ sudo rm -rf guest-image.raw mnt
+else
+ export LIBGUESTFS_BACKEND=direct
+ virt-copy-out -a $input_image /boot/ ./
+fi
+
chmod u+w boot/
-rm -f $iso_build_dir/isolinux/vmlinuz $iso_build_dir/isolinux/initrd.img
KVER=`ls -lrt boot/vmlinuz-* |grep -v rescue |tail -n1 |awk -F 'boot/vmlinuz-' '{print $2}'`
-cp -fp boot/vmlinuz-${KVER} $iso_build_dir/isolinux/vmlinuz
-cp -fp boot/initrd-provisioning.img $iso_build_dir/isolinux/initrd.img
+if [ "${iso_arch}" = 'x86_64' ]; then
+ rm -f $iso_build_dir/isolinux/vmlinuz $iso_build_dir/isolinux/initrd.img
+ cp -fp boot/vmlinuz-${KVER} $iso_build_dir/isolinux/vmlinuz
+ cp -fp boot/initrd-provisioning.img $iso_build_dir/isolinux/initrd.img
+fi
+rm -f $iso_build_dir/images/pxeboot/vmlinuz $iso_build_dir/images/pxeboot/initrd.img
+cp -fp boot/vmlinuz-${KVER} $iso_build_dir/images/pxeboot/vmlinuz
+cp -fp boot/initrd-provisioning.img $iso_build_dir/images/pxeboot/initrd.img
rm -rf boot/
echo "Generating boot iso"
+if [ "${iso_arch}" = 'x86_64' ]; then
+ bios_specific_args="-b isolinux/isolinux.bin -c isolinux/boot.cat \
+ -no-emul-boot -boot-load-size 4 -boot-info-table"
+fi
genisoimage -U -r -v -T -J -joliet-long \
-V "${release_version}" -A "${release_version}" -P ${iso_image_label} \
- -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 \
- -boot-info-table -eltorito-alt-boot -e images/efiboot.img -no-emul-boot \
+ ${bios_specific_args:-} \
+ -eltorito-alt-boot -e images/efiboot.img -no-emul-boot \
-o boot.iso $iso_build_dir
_publish_image $tmp/boot.iso $output_bootcd_path
echo "Generating product iso"
genisoimage -U -r -v -T -J -joliet-long \
-V "${release_version}" -A "${release_version}" -P ${iso_image_label} \
- -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 \
- -boot-info-table -eltorito-alt-boot -e images/efiboot.img -no-emul-boot \
+ ${bios_specific_args:-} \
+ -eltorito-alt-boot -e images/efiboot.img -no-emul-boot \
-o release.iso $iso_build_dir
-isohybrid $tmp/release.iso
+[ "${iso_arch}" != 'x86_64' ] || isohybrid $tmp/release.iso
_publish_image $tmp/release.iso $output_image_path
echo "Clean up to preserve workspace footprint"