From 6b179246575f55fc6eb95439f869e4ce708bc304 Mon Sep 17 00:00:00 2001
From: Deb McLemore <debmc@linux.vnet.ibm.com>
Date: Thu, 23 Feb 2017 17:42:32 -0600
Subject: [PATCH 2/2] live-build installer enablement for ppc64el

This patch enables the building of installer images for live and normal images.

Signed-off-by: Deb McLemore <debmc@linux.vnet.ibm.com>
---
 scripts/build/binary_disk                |  21 ++++-
 scripts/build/binary_grub-efi            |   2 +
 scripts/build/binary_hdd                 |   4 +-
 scripts/build/binary_linux-image         |  30 ++++++++
 scripts/build/binary_loopback_cfg        |  61 +++++++++++----
 scripts/build/binary_netboot             |  11 ++-
 scripts/build/binary_syslinux            |   6 ++
 scripts/build/chroot_hacks               |  56 +++++++++-----
 scripts/build/config                     |  13 ++++
 scripts/build/installer_debian-installer | 128 ++++++++++++++++++++++++-------
 10 files changed, 266 insertions(+), 66 deletions(-)

diff --git a/scripts/build/binary_disk b/scripts/build/binary_disk
index 7175a54..d525be5 100755
--- a/scripts/build/binary_disk
+++ b/scripts/build/binary_disk
@@ -97,6 +97,23 @@ then
 	esac
 fi
 
+case "${LB_MODE}" in
+	ubuntu)
+		_DEBIAN_PARENT="stretch"
+		;;
+	*)
+		_DEBIAN_PARENT=${LB_PARENT_DISTRIBUTION}
+		;;
+esac
+case "${LB_ARCHITECTURES}" in
+	ppc*)
+		_LB_ARCH="powerpc"
+		;;
+	*)
+		_LB_ARCH=${LB_ARCHITECTURES}
+		;;
+esac
+
 case "${LB_DEBIAN_INSTALLER}" in
 	cdrom)
 		echo "main" > binary/.disk/base_components
@@ -111,7 +128,7 @@ case "${LB_DEBIAN_INSTALLER}" in
 		do
 			if [ -e "${LOCATION}" ]
 			then
-				cp "${LOCATION}/${LB_PARENT_DISTRIBUTION}/${LB_ARCHITECTURES}_udeb_include" binary/.disk/udeb_include
+				cp "${LOCATION}/${_DEBIAN_PARENT}/${_LB_ARCH}_udeb_include" binary/.disk/udeb_include
 
 				continue
 			fi
@@ -136,7 +153,7 @@ case "${LB_DEBIAN_INSTALLER}" in
 		do
 			if [ -e "${LOCATION}" ]
 			then
-				cp "${LOCATION}/${LB_PARENT_DISTRIBUTION}/${LB_ARCHITECTURES}_netinst_udeb_include" binary/.disk/udeb_include
+				cp "${LOCATION}/${_DEBIAN_PARENT}/${_LB_ARCH}_netinst_udeb_include" binary/.disk/udeb_include
 
 				continue
 			fi
diff --git a/scripts/build/binary_grub-efi b/scripts/build/binary_grub-efi
index 7301a48..bb4ee7e 100755
--- a/scripts/build/binary_grub-efi
+++ b/scripts/build/binary_grub-efi
@@ -105,6 +105,7 @@ case "${LIVE_IMAGE_TYPE}" in
                 case "${LB_INITRAMFS}" in
                         live-boot)
                                 DESTDIR_LIVE="binary/live"
+				# Debs not sure this is used anywhere
                                 ;;
 
                         *) # this case as placeholder to work on non-live-boot path
@@ -113,6 +114,7 @@ case "${LIVE_IMAGE_TYPE}" in
                 esac
 
                 DESTDIR_INSTALL="binary/install"
+		# Debs not sure this is used anywhere
                 ;;
 
 	hdd*|netboot)
diff --git a/scripts/build/binary_hdd b/scripts/build/binary_hdd
index bb7f307..08084f6 100755
--- a/scripts/build/binary_hdd
+++ b/scripts/build/binary_hdd
@@ -122,9 +122,9 @@ Restore_cache cache/packages.binary
 Install_package
 
 # Remove old binary
-if [ -f ${LIVE_iMAGE_NAME}.img ]
+if [ -f ${LIVE_IMAGE_NAME}.img ]
 then
-	rm -f ${LIVE_iMAGE_NAME}.img
+	rm -f ${LIVE_IMAGE_NAME}.img
 fi
 
 case "${LB_BINARY_FILESYSTEM}" in
diff --git a/scripts/build/binary_linux-image b/scripts/build/binary_linux-image
index f13cc52..f630210 100755
--- a/scripts/build/binary_linux-image
+++ b/scripts/build/binary_linux-image
@@ -53,6 +53,7 @@ case "${LB_INITRAMFS}" in
 		DESTDIR="binary/boot"
 		;;
 esac
+DESTDIR_INSTALL="binary/install"
 
 case "${LB_ARCHITECTURES}" in
 	powerpc|ppc64el)
@@ -69,10 +70,39 @@ Check_multiarchitectures
 # Creating directory
 mkdir -p "${DESTDIR}"
 
+if [ -n "${LB_CHROOT_PAYLOAD_PATH}" ]
+then
+	case "${LB_CHROOT_FILESYSTEM}" in
+		none)
+			# do nothing
+			;;
+		*)
+			# DESTDIR holds the rootfs we want to include in the INITRD
+
+			rm -rf chroot${LB_CHROOT_PAYLOAD_PATH}
+			mkdir -p chroot${LB_CHROOT_PAYLOAD_PATH}
+
+			cp "${DESTDIR}/filesystem"* chroot${LB_CHROOT_PAYLOAD_PATH}
+			chmod 0644 chroot${LB_CHROOT_PAYLOAD_PATH}/*
+			Chroot chroot "update-initramfs -k all -t -u"
+			;;
+	esac
+fi
+
 # Installing linux-image
 cp chroot/boot/"${LINUX}"-* "${DESTDIR}"
 cp chroot/boot/initrd.img-* "${DESTDIR}"
 
+case "${LB_DEBIAN_INSTALLER}" in
+	true)
+		mkdir -p "${DESTDIR_INSTALL}"
+		for KERNEL in chroot/boot/${LINUX}-*; do
+			cp "${KERNEL}" "${DESTDIR_INSTALL}/${LINUX}"
+		done
+		;;
+esac
+
+
 case "${LB_INITRAMFS}" in
 	live-boot)
 		if [ -e chroot/usr/share/doc/live-boot/parameters.txt ]
diff --git a/scripts/build/binary_loopback_cfg b/scripts/build/binary_loopback_cfg
index 07bf122..26f98f9 100755
--- a/scripts/build/binary_loopback_cfg
+++ b/scripts/build/binary_loopback_cfg
@@ -211,8 +211,30 @@ then
 fi
 
 # Default entries
-DEFAULT_FLAVOUR="$(echo ${LB_LINUX_FLAVOURS} | awk '{ print $1 }')"
-DEFAULT_KERNEL="$(basename chroot/boot/${LINUX}-*${DEFAULT_FLAVOUR})"
+
+if [ -z "${LB_MENU_FLAVOURS}" ]
+then
+	DEFAULT_FLAVOUR="$(echo ${LB_LINUX_FLAVOURS} | awk '{ print $1 }')"
+	LB_MENU_FLAVOURS=${LB_LINUX_FLAVOURS}
+else
+	DEFAULT_FLAVOUR="$(echo ${LB_MENU_FLAVOURS} | awk '{ print $1 }')"
+fi
+
+DEFAULT_KERNEL=$(find chroot/boot -name ${LINUX}-*${DEFAULT_FLAVOUR} -type f | sort -V | tail -n 1)
+DEFAULT_KERNEL=$(basename "${DEFAULT_KERNEL}")
+
+if [ "${DEFAULT_KERNEL}" = "" ]
+then
+	DEFAULT_KERNEL=$(find chroot/boot -name ${LINUX}-*${LB_LINUX_FLAVOURS} -type f | sort -V | tail -n 1)
+	DEFAULT_KERNEL=$(basename "${DEFAULT_KERNEL}")
+	Echo_message "WARNING: binary_loopback_cfg There was no default kernel found, so going to use DEFAULT_FLAVOR of LB_LINUX_FLAVOURS \"${LB_LINUX_FLAVOURS}\""
+	if [ "${DEFAULT_KERNEL}" = "" ]
+	then
+		Echo_message "ERROR: binary_loopback_cfg There was No default kernel found, so check LB_LINUX_FLAVOURS and LB_MENU_FLAVOURS and maybe reorder the list to pick up the first flavour to find."
+		exit 1
+	fi
+fi
+
 DEFAULT_INITRD="initrd.img-$(echo ${DEFAULT_KERNEL} | sed -e "s|${LINUX}-||")"
 
 KERNEL_LIVE="/${INITFS}/${DEFAULT_KERNEL}"
@@ -253,18 +275,27 @@ fi
 
 _COUNT=0
 for KERNEL in chroot/boot/${LINUX}-*; do
-	_COUNT=$(( $COUNT + 1 ))
+	_COUNT=$(( $_COUNT + 1 ))
 done
 
-if [ $_COUNT -gt 1 ]; then
+if [ "$_COUNT" -gt "1" ]; then
 	for KERNEL in chroot/boot/${LINUX}-*
 	do
 		VERSION="$(basename ${KERNEL} | sed -e "s|${LINUX}-||")"
 
-		Grub_live_entry "Live system, kernel ${VERSION}" "/${INITFS}/$(basename ${KERNEL})" "/${INITFS}/initrd.img-${VERSION}" "${APPEND_LIVE}"
-
-		if [ "${LB_BOOTAPPEND_LIVE_FAILSAFE}" != "none" ]; then
-			Grub_live_entry "Live system, kernel ${VERSION} (fail-safe mode)" "/${INITFS}/$(basename ${KERNEL})" "/${INITFS}/initrd.img-${VERSION}" "${LB_BOOTAPPEND_LIVE_FAILSAFE}"
+		if [ "${KERNEL}" != "${DEFAULT_KERNEL}" ]
+		then
+			for _SPECIAL in ${LB_MENU_FLAVOURS}
+			do
+				if echo "${KERNEL}" | grep -qs "${_SPECIAL}"
+				then
+					Grub_live_entry "Live system, kernel ${VERSION}" "/${INITFS}/$(basename ${KERNEL})" "/${INITFS}/initrd.img-${VERSION}" "${APPEND_LIVE}"
+
+					if [ "${LB_BOOTAPPEND_LIVE_FAILSAFE}" != "none" ]; then
+						Grub_live_entry "Live system, kernel ${VERSION} (fail-safe mode)" "/${INITFS}/$(basename ${KERNEL})" "/${INITFS}/initrd.img-${VERSION}" "${LB_BOOTAPPEND_LIVE_FAILSAFE}"
+					fi
+				fi
+			done
 		fi
 	done
 fi
@@ -280,15 +311,19 @@ then
 	INITRD_GI="/install/gtk/initrd.gz"
 	APPEND_GI="video=vesa:ywrap,mtrr vga=788 quiet ${LB_BOOTAPPEND_INSTALL}"
 
-	Grub_install_entry "Start installer" "installgui" "${KERNEL_GI}" "${INITRD_GI}" "${APPEND_GI}"
 
-	Grub_install_entry "Install in graphical mode" "installgui" "${KERNEL_GI}" "${INITRD_GI}" "${APPEND_GI}"
+	if [ "${LB_DEBIAN_INSTALLER_GUI}" != "false" ]
+	then
+		Grub_install_entry "Start installer" "installgui" "${KERNEL_GI}" "${INITRD_GI}" "${APPEND_GI}"
+		Grub_install_entry "Expert install in graphical mode" "expertgui" "${KERNEL_GI}" "${INITRD_GI}" "priority=low ${APPEND_GI}"
+		Grub_install_entry "Install in graphical mode" "installgui" "${KERNEL_GI}" "${INITRD_GI}" "${APPEND_GI}"
+		Grub_install_entry "Automatic install in graphical mode" "autogui" "${KERNEL_GI}" "${INITRD_GI}" "auto=true priority=critical ${APPEND_GI}"
+		Grub_install_entry "Rescue system in graphical mode" "rescuegui" "${KERNEL_GI}" "${INITRD_GI}" "rescue/enable=true ${APPEND_GI}"
+	fi
+
 	Grub_install_entry "Install in text mode" "install" "${KERNEL_DI}" "${INITRD_DI}" "${APPEND_DI}"
-	Grub_install_entry "Expert install in graphical mode" "expertgui" "${KERNEL_GI}" "${INITRD_GI}" "priority=low ${APPEND_GI}"
 	Grub_install_entry "Expert install in text mode" "expert" "${KERNEL_DI}" "${INITRD_DI}" "priority=low ${APPEND_DI}"
-	Grub_install_entry "Automatic install in graphical mode" "autogui" "${KERNEL_GI}" "${INITRD_GI}" "auto=true priority=critical ${APPEND_GI}"
 	Grub_install_entry "Automatic install in text mode" "auto" "${KERNEL_DI}" "${INITRD_DI}" "auto=true priority=critical ${APPEND_DI}"
-	Grub_install_entry "Rescue system in graphical mode" "rescuegui" "${KERNEL_GI}" "${INITRD_GI}" "rescue/enable=true ${APPEND_GI}"
 	Grub_install_entry "Rescue system in text mode" "rescue" "${KERNEL_DI}" "${INITRD_DI}" "rescue/enable=true ${APPEND_DI}"
 fi
 
diff --git a/scripts/build/binary_netboot b/scripts/build/binary_netboot
index e244e22..014cf48 100755
--- a/scripts/build/binary_netboot
+++ b/scripts/build/binary_netboot
@@ -50,7 +50,7 @@ Check_lockfile .lock
 Create_lockfile .lock
 
 # Check architectures
-Check_architectures amd64 i386
+Check_architectures amd64 i386 ppc64el
 Check_crossarchitectures
 
 # Remove old binary
@@ -59,6 +59,11 @@ rm -f ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.netboot.tar ${LIVE_IMAGE_NAME}-${LB
 # Creating image file
 ROOT_DIR=$(basename ${LB_NET_ROOT_PATH})
 
+if [ ! -d tftpboot ]
+then
+	mkdir tftpboot
+fi
+
 if [ "${ROOT_DIR}" = "chroot" ]
 then
 	mv chroot chroot.tmp
@@ -73,9 +78,9 @@ mkdir binary.tmp
 mv ${ROOT_DIR} tftpboot binary.tmp
 cd binary.tmp
 
-# Moving kernel and initrd image arround
+# Moving kernel and initrd image around
 mkdir tftpboot/live
-mv */live/vmlinuz* */live/initrd* tftpboot/live
+mv */live/vmlinu* */live/initrd* tftpboot/live
 
 tar cf ../${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.netboot.tar *
 
diff --git a/scripts/build/binary_syslinux b/scripts/build/binary_syslinux
index 1c50dae..24b691c 100755
--- a/scripts/build/binary_syslinux
+++ b/scripts/build/binary_syslinux
@@ -113,6 +113,12 @@ esac
 
 Check_package host /usr/lib/ISOLINUX/isolinux.bin  isolinux
 
+case "${_BOOTLOADER}" in
+	pxelinux)
+		Check_package host /usr/lib/PXELINUX/pxelinux.0    pxelinux
+		;;
+esac
+
 # Internal system copy
 if [ -e "config/bootloaders/${_BOOTLOADER}" ]
 then
diff --git a/scripts/build/chroot_hacks b/scripts/build/chroot_hacks
index 888fdbe..4c80fbc 100755
--- a/scripts/build/chroot_hacks
+++ b/scripts/build/chroot_hacks
@@ -40,26 +40,42 @@ Create_lockfile .lock
 
 case "${LIVE_IMAGE_TYPE}" in
 	netboot)
-		if [ ! -f chroot/sbin/mount.cifs ]
-		then
-			Apt chroot install cifs-utils
-		fi
-
-		if [ ! -d chroot/etc/initramfs-tools ]
-		then
-			mkdir chroot/etc/initramfs-tools
-		fi
-
-		# Configuring initramfs for NFS
-		if ! grep -qs "BOOT=nfs" chroot/etc/initramfs-tools/initramfs.conf
-		then
-			echo "BOOT=nfs" >> chroot/etc/initramfs-tools/initramfs.conf
-		fi
-
-		if ! grep -qs "NFSROOT=auto" chroot/etc/initramfs-tools/initramfs.conf
-		then
-			echo "NFSROOT=auto" >> chroot/etc/initramfs-tools/initramfs.conf
-		fi
+		case "${LB_ARCHITECTURES}" in
+			ppc*)
+				# Future case for enabling nfs for ppc
+				if ! grep -qs "MODULES=netboot" chroot/etc/initramfs-tools/initramfs.conf
+				then
+					echo "MODULES=netboot" >> chroot/etc/initramfs-tools/initramfs.conf
+				fi
+				;;
+			*)
+				if [ ! -f chroot/sbin/mount.cifs ]
+				then
+					Apt chroot install cifs-utils
+				fi
+
+				if [ ! -d chroot/etc/initramfs-tools ]
+				then
+					mkdir chroot/etc/initramfs-tools
+				fi
+
+				# Configuring initramfs for NFS
+				if ! grep -qs "BOOT=nfs" chroot/etc/initramfs-tools/initramfs.conf
+				then
+					echo "BOOT=nfs" >> chroot/etc/initramfs-tools/initramfs.conf
+				fi
+
+				if ! grep -qs "NFSROOT=auto" chroot/etc/initramfs-tools/initramfs.conf
+				then
+					echo "NFSROOT=auto" >> chroot/etc/initramfs-tools/initramfs.conf
+				fi
+
+				if ! grep -qs "MODULES=netboot" chroot/etc/initramfs-tools/initramfs.conf
+				then
+					echo "MODULES=netboot" >> chroot/etc/initramfs-tools/initramfs.conf
+				fi
+				;;
+		esac
 		;;
 esac
 
diff --git a/scripts/build/config b/scripts/build/config
index 83b9e9c..d3f7bd3 100755
--- a/scripts/build/config
+++ b/scripts/build/config
@@ -459,6 +459,11 @@ Local_arguments ()
 				shift 2
 				;;
 
+			--linux-menu-flavours)
+				LB_MENU_FLAVOURS="${2}"
+				shift 2
+				;;
+
 			--linux-packages)
 				LB_LINUX_PACKAGES="${2}"
 				shift 2
@@ -1147,6 +1152,14 @@ LB_KEYRING_PACKAGES="${LB_KEYRING_PACKAGES}"
 # (Default: autodetected)
 LB_LINUX_FLAVOURS="${LB_LINUX_FLAVOURS}"
 
+# \$LB_MENU_FLAVOURS: set menu flavour to use
+# this will build grub menu with only tags for desired
+# kernels, i.e. 4.12.0-1-custom, so put "custom"
+# if you only want auto-generated menu items with "custom"
+# otherwise it will pick up LB_LINUX_FLAVOURS
+# (Default: autodetected)
+LB_MENU_FLAVOURS="${LB_MENU_FLAVOURS}"
+
 # \$LB_LINUX_PACKAGES: set kernel packages to use
 # (Default: autodetected)
 LB_LINUX_PACKAGES="${LB_LINUX_PACKAGES}"
diff --git a/scripts/build/installer_debian-installer b/scripts/build/installer_debian-installer
index 2c1927b..12e8f6e 100755
--- a/scripts/build/installer_debian-installer
+++ b/scripts/build/installer_debian-installer
@@ -2,7 +2,6 @@
 
 ## live-build(7) - System Build Scripts
 ## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
-## Copyright (C) 2017 Deb McLemore <debmc@linux.vnet.ibm.com>
 ##
 ## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
 ## This is free software, and you are welcome to redistribute it
@@ -74,10 +73,23 @@ Restore_cache cache/packages.binary
 # Installing depends
 Install_package
 
+# _TFTPBOOT_DIR can be any string
+# _DERIVATIVE_INSTALLER needs to match the download URL of the distribution
+case "${LB_MODE}" in
+	ubuntu)
+		_TFTPBOOT_DIR="ubuntu-installer"
+		_DERIVATIVE_INSTALLER="ubuntu-installer"
+		;;
+	*)
+		_TFTPBOOT_DIR="debian-install"
+		_DERIVATIVE_INSTALLER="debian-installer"
+		;;
+esac
+
 # Setting destination directory
 case "${LIVE_IMAGE_TYPE}" in
 	netboot)
-		DESTDIR="tftpboot/debian-install/${LB_ARCHITECTURES}"
+		DESTDIR="tftpboot/${_TFTPBOOT_DIR}/${LB_ARCHITECTURES}"
 		;;
 
 	hdd*|tar)
@@ -108,6 +120,16 @@ case "${LB_DEBIAN_INSTALLER}" in
 esac
 
 # Set architecture-specific variables
+
+case "${LB_ARCHITECTURES}" in
+	powerpc|ppc64el)
+		VMLINUX="vmlinux"
+		;;
+	*)
+		VMLINUX="vmlinuz"
+		;;
+esac
+
 case "${LB_ARCHITECTURES}" in
 	armel)
 		DEFAULT_FLAVOUR="$(echo ${LB_LINUX_FLAVOURS} | awk '{ print $1 }')"
@@ -121,37 +143,77 @@ case "${LB_ARCHITECTURES}" in
 				;;
 		esac
 
-		DI_REMOTE_KERNEL="vmlinuz"
+		DI_REMOTE_KERNEL="${VMLINUX}"
 		DI_REMOTE_BASE_GTK="${DI_REMOTE_BASE}/gtk"
 		;;
 
-	powerpc|ppc64el)
+	powerpc)
 		case "${DI_IMAGE_TYPE}" in
 			cdrom)
 				DI_REMOTE_BASE="${LB_ARCHITECTURES}/cdrom"
+				# GTK currently not supported, so just use text version
+				DI_REMOTE_BASE_GTK="${DI_REMOTE_BASE}"
 			;;
 
 			netboot)
 				DI_REMOTE_BASE="${LB_ARCHITECTURES}/netboot"
+				# GTK currently not supported, so just use text version
+				DI_REMOTE_BASE_GTK="${DI_REMOTE_BASE}"
 				;;
 		esac
 
-		DI_REMOTE_KERNEL="vmlinux"
-		DI_REMOTE_BASE_GTK="${DI_REMOTE_BASE}/gtk"
+		DI_REMOTE_KERNEL="${VMLINUX}"
+
+		;;
+
+	ppc64el)
+		case "${DI_IMAGE_TYPE}" in
+			cdrom)
+				DI_REMOTE_BASE="cdrom"
+				# GTK currently not supported, so just use text version
+				DI_REMOTE_BASE_GTK="${DI_REMOTE_BASE}"
+			;;
+
+			netboot)
+				DI_REMOTE_BASE="netboot/${_DERIVATIVE_INSTALLER}/${LB_ARCHITECTURES}"
+				# GTK currently not supported, so just use text version
+				DI_REMOTE_BASE_GTK="${DI_REMOTE_BASE}"
+				;;
+		esac
+
+		DI_REMOTE_KERNEL="${VMLINUX}"
+
 		;;
 
 	*)
 		case "${DI_IMAGE_TYPE}" in
 			netboot)
-				DI_REMOTE_BASE="netboot/debian-installer/${LB_ARCHITECTURES}"
-				DI_REMOTE_BASE_GTK="netboot/gtk/debian-installer/${LB_ARCHITECTURES}"
+				DI_REMOTE_BASE="netboot/${_DERIVATIVE_INSTALLER}/${LB_ARCHITECTURES}"
 				DI_REMOTE_KERNEL="linux"
+				case "${LB_MODE}" in
+					ubuntu)
+						# GTK currently not supported, so just use text version
+						DI_REMOTE_BASE_GTK="${DI_REMOTE_BASE}"
+						;;
+					*)
+						DI_REMOTE_BASE_GTK="netboot/gtk/${_DERIVATIVE_INSTALLER}/${LB_ARCHITECTURES}"
+						;;
+				esac
+
 				;;
 
 			cdrom)
 				DI_REMOTE_BASE="cdrom"
-				DI_REMOTE_BASE_GTK="cdrom/gtk"
-				DI_REMOTE_KERNEL="vmlinuz"
+				DI_REMOTE_KERNEL="${VMLINUX}"
+				case "${LB_MODE}" in
+					ubuntu)
+						# GTK currently not supported, so just use text version
+						DI_REMOTE_BASE_GTK="${DI_REMOTE_BASE}"
+						;;
+					*)
+						DI_REMOTE_BASE_GTK="${DI_REMOTE_BASE}/gtk"
+						;;
+				esac
 				;;
 		esac
 		;;
@@ -213,6 +275,7 @@ Download_file () {
 
 	_LB_CACHE_FILE="${_LB_CACHE_DIR}/$(echo "${_LB_URL}" | sed 's|/|_|g')"
 
+
 	if [ ! -f "${_LB_CACHE_FILE}" ]
 	then
 		mkdir -p ${_LB_CACHE_DIR}
@@ -233,12 +296,11 @@ Download_file () {
 	cp -f ${CP_OPTIONS} -- "${_LB_CACHE_FILE}" "${_LB_TARGET}"
 }
 
-VMLINUZ_DI="vmlinuz"
+LINUX_DI="${VMLINUX}"
+LINUX_GI="gtk/${VMLINUX}"
 INITRD_DI="initrd.gz"
-DESTDIR_DI="${DESTDIR}"
-
-VMLINUZ_GI="gtk/vmlinuz"
 INITRD_GI="gtk/initrd.gz"
+DESTDIR_DI="${DESTDIR}"
 DESTDIR_GI="${DESTDIR}/gtk"
 
 case "${LB_DERIVATIVE}" in
@@ -278,8 +340,9 @@ esac
 mkdir -p "${DESTDIR_DI}"
 
 # Downloading debian-installer
-Download_file "${DESTDIR}"/"${VMLINUZ_DI}" ${URL}/${DI_REMOTE_BASE}/${DI_REMOTE_KERNEL}
-Download_file "${DESTDIR}"/"${INITRD_DI}" ${URL}/${DI_REMOTE_BASE}/initrd.gz
+Download_file "${DESTDIR}"/"${LINUX_DI}" ${URL}${DI_REMOTE_BASE}/${DI_REMOTE_KERNEL}
+
+Download_file "${DESTDIR}"/"${INITRD_DI}" ${URL}${DI_REMOTE_BASE}/initrd.gz
 
 # Downloading graphical-installer
 DOWNLOAD_GTK_INSTALLER=0
@@ -287,22 +350,30 @@ if [ "${LB_DEBIAN_INSTALLER_GUI}" = "true" ]
 then
 		case "${LB_ARCHITECTURES}" in
 		amd64|i386)
-			DOWNLOAD_GTK_INSTALLER=1
+			case "${LB_MODE}" in
+				ubuntu)
+					Echo_warning "LB_DEBIAN_INSTALLER_GUI is NOT supported for LB_ARCHITECTURES of ${LB_ARCHITECTURES} and LB_MODE of ${LB_MODE}, proceeding without GUI."
+					;;
+				*)
+					DOWNLOAD_GTK_INSTALLER=1
+					;;
+			esac
 			;;
 
-		powerpc|ppc64el)
-			if [ "${LB_DEBIAN_INSTALLER}" = "netboot" ]
-			then
-				DOWNLOAD_GTK_INSTALLER=1
-			fi
+		powerpc)
+			Echo_warning "LB_DEBIAN_INSTALLER_GUI is NOT supported for LB_ARCHITECTURES of ${LB_ARCHITECTURES} and LB_MODE of ${LB_MODE}, proceeding without GUI."
 			;;
-	esac
+
+		ppc64el)
+			Echo_warning "LB_DEBIAN_INSTALLER_GUI is NOT supported for LB_ARCHITECTURES of ${LB_ARCHITECTURES} and LB_MODE of ${LB_MODE}, proceeding without GUI."
+			;;
+		esac
 fi
 
 if [ ${DOWNLOAD_GTK_INSTALLER} -eq 1 ]
 then
 	mkdir -p "${DESTDIR_GI}"
-	Download_file "${DESTDIR}"/"${VMLINUZ_GI}" ${URL}/${DI_REMOTE_BASE_GTK}/${DI_REMOTE_KERNEL}
+	Download_file "${DESTDIR}"/"${LINUX_GI}" ${URL}/${DI_REMOTE_BASE_GTK}/${DI_REMOTE_KERNEL}
 	Download_file "${DESTDIR}"/"${INITRD_GI}" ${URL}/${DI_REMOTE_BASE_GTK}/initrd.gz
 fi
 
@@ -318,12 +389,12 @@ then
 	case "${LB_ARCHITECTURES}" in
 		amd64)
 			DI_REQ_PACKAGES="lilo grub-pc"
-			DI_PACKAGES="${DI_REQ_PACKAGES} linux-image-amd64"
+			DI_PACKAGES="${DI_REQ_PACKAGES} linux-image-$(uname -r)"
 			;;
 
 		i386)
 			DI_REQ_PACKAGES="lilo grub-pc"
-			DI_PACKAGES="${DI_REQ_PACKAGES} linux-image-686-pae"
+			DI_PACKAGES="${DI_REQ_PACKAGES} linux-image-$(uname -r)"
 			;;
 
 		powerpc)
@@ -331,6 +402,11 @@ then
 			DI_PACKAGES="${DI_REQ_PACKAGES} linux-image-powerpc linux-image-powerpc64 linux-image-powerpc-smp"
 			;;
 
+		ppc64el)
+			DI_REQ_PACKAGES="grub2"
+			DI_PACKAGES="${DI_REQ_PACKAGES} linux-image-generic"
+			;;
+
 	esac
 
 	DI_PACKAGES="${DI_PACKAGES} busybox cryptsetup mdadm lvm2 xfsprogs jfsutils"
-- 
2.7.4

