diff --git a/installer/pxe-network-installer/debian/deb_folder/rules b/installer/pxe-network-installer/debian/deb_folder/rules
index db905f3e..77217da8 100644
--- a/installer/pxe-network-installer/debian/deb_folder/rules
+++ b/installer/pxe-network-installer/debian/deb_folder/rules
@@ -29,6 +29,11 @@ override_dh_install:
install -v -m 644 pxe-grub.cfg.static $(ROOT)/var/pxeboot/pxelinux.cfg.files/grub.cfg.static
install -p -D -m 700 pxeboot-update.sh $(ROOT)/usr/sbin/pxeboot-update-${platform_release}.sh
+ # Add controller-0 pxeboot install grub menus and setup utility
+ install -p -D -m 644 pxeboot.cfg.debian $(ROOT)/var/pxeboot/pxelinux.cfg.files/pxeboot.cfg.debian
+ install -p -D -m 644 efi-pxeboot.cfg.debian $(ROOT)/var/pxeboot/pxelinux.cfg.files/efi-pxeboot.cfg.debian
+ install -p -D -m 755 pxeboot_setup.sh $(ROOT)/usr/sbin/pxeboot_setup.sh
+
# Legacy BIOS System Node Install grub menus
install -p -D -m 700 debian-pxe-controller-install $(ROOT)/var/pxeboot/pxelinux.cfg.files/pxe-controller-install-${platform_release}
install -p -D -m 700 debian-pxe-smallsystem-install $(ROOT)/var/pxeboot/pxelinux.cfg.files/pxe-smallsystem-install-${platform_release}
diff --git a/installer/pxe-network-installer/pxe-network-installer/efi-pxeboot.cfg.debian b/installer/pxe-network-installer/pxe-network-installer/efi-pxeboot.cfg.debian
index 44e90d64..49d5d764 100644
--- a/installer/pxe-network-installer/pxe-network-installer/efi-pxeboot.cfg.debian
+++ b/installer/pxe-network-installer/pxe-network-installer/efi-pxeboot.cfg.debian
@@ -1,31 +1,53 @@
+# default 20 second timeout
timeout=20
-default=2
+default='xxxSYSTEMxxx'
GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT_STYLE='countdown'
menuentry 'StarlingX Debian LAT / Kickstart Boot Menu' {
-
echo " "
-
}
-menuentry '1) UEFI Boot from hard drive' {
+
+# Create a space in the menu
+menuentry ' ' {
+ echo " "
+}
+
+menuentry 'UEFI Boot from hard drive' --id=disk {
search --set=root --label otaefi
configfile /EFI/BOOT/grub.cfg
}
-menuentry '2) UEFI Debian Controller Install' {
- linuxefi xxxLAB_PXExxx/bzImage-std rdinit=/install defaultkernel=vmlinuz-*[!t]-amd64 instname=debian instbr=starlingx instab=0 traits=controller BOOTIF=$net_default_mac instdev=/dev/sda ks=xxxBASE_URLxxx/xxxLAB_FEEDxxx/kickstart/kickstart.cfg insturl=xxxBASE_URLxxx/xxxLAB_FEEDxxx/ostree_repo console=ttyS0,115200 console=tty1 biosdevname=0 biosplusefi=1
- initrdefi xxxLAB_PXExxx/initrd
+submenu 'UEFI Debian Controller Install' --id=standard {
+ menuentry 'Serial Console' --id=serial {
+ linuxefi xxxPXEBOOTxxx/bzImage-std rdinit=/install defaultkernel=vmlinuz-*[!t]-amd64 instname=debian instbr=starlingx instab=0 traits=controller BOOTIF=$net_default_mac instdev=xxxINSTDEVxxx ks=xxxBASE_URLxxx/xxxFEEDxxx/kickstart/kickstart.cfg insturl=xxxBASE_URLxxx/xxxFEEDxxx/ostree_repo console=ttyS0,115200 biosdevname=0 biosplusefi=1
+ initrdefi xxxPXEBOOTxxx/initrd
+ }
+ menuentry 'Graphical Console' --id=graphical {
+ linuxefi xxxPXEBOOTxxx/bzImage-std rdinit=/install defaultkernel=vmlinuz-*[!t]-amd64 instname=debian instbr=starlingx instab=0 traits=controller BOOTIF=$net_default_mac instdev=xxxINSTDEVxxx ks=xxxBASE_URLxxx/xxxFEEDxxx/kickstart/kickstart.cfg insturl=xxxBASE_URLxxx/xxxFEEDxxx/ostree_repo console=tty1 biosdevname=0 biosplusefi=1
+ initrdefi xxxPXEBOOTxxx/initrd
+ }
}
-menuentry '3) UEFI Debian All-in-one Install' {
- linuxefi xxxLAB_PXExxx/bzImage-std rdinit=/install defaultkernel=vmlinuz-*[!t]-amd64 instname=debian instbr=starlingx instab=0 traits=controller,worker BOOTIF=$net_default_mac instdev=/dev/sda ks=xxxBASE_URLxxx/xxxLAB_FEEDxxx/kickstart/kickstart.cfg insturl=xxxBASE_URLxxx/xxxLAB_FEEDxxx/ostree_repo console=ttyS0,115200 console=tty1 biosdevname=0 biosplusefi=1
- initrdefi xxxLAB_PXExxx/initrd
+submenu 'UEFI Debian All-in-one Install' --id=aio {
+ menuentry 'Serial Console' --id=serial {
+ linuxefi xxxPXEBOOTxxx/bzImage-std rdinit=/install defaultkernel=vmlinuz-*[!t]-amd64 instname=debian instbr=starlingx instab=0 traits=controller,worker BOOTIF=$net_default_mac instdev=xxxINSTDEVxxx ks=xxxBASE_URLxxx/xxxFEEDxxx/kickstart/kickstart.cfg insturl=xxxBASE_URLxxx/xxxFEEDxxx/ostree_repo console=ttyS0,115200 biosdevname=0 biosplusefi=1
+ initrdefi xxxPXEBOOTxxx/initrd
+ }
+ menuentry 'Graphical Console' --id=graphical {
+ linuxefi xxxPXEBOOTxxx/bzImage-std rdinit=/install defaultkernel=vmlinuz-*[!t]-amd64 instname=debian instbr=starlingx instab=0 traits=controller,worker BOOTIF=$net_default_mac instdev=xxxINSTDEVxxx ks=xxxBASE_URLxxx/xxxFEEDxxx/kickstart/kickstart.cfg insturl=xxxBASE_URLxxx/xxxFEEDxxx/ostree_repo console=tty1 biosdevname=0 biosplusefi=1
+ initrdefi xxxPXEBOOTxxx/initrd
+ }
}
-menuentry '4) UEFI Debian All-in-one (lowlatency) Install' {
- linuxefi xxxLAB_PXExxx/bzImage-rt rdinit=/install defaultkernel=vmlinuz-*-rt-amd64 instname=debian instbr=starlingx instab=0 traits=controller,worker,lowlatency efi=runtime BOOTIF=$net_default_mac instdev=/dev/sda ks=xxxBASE_URLxxx/xxxLAB_FEEDxxx/kickstart/kickstart.cfg insturl=xxxBASE_URLxxx/xxxLAB_FEEDxxx/ostree_repo console=ttyS0,115200 console=tty1 biosdevname=0 biosplusefi=1
- initrdefi xxxLAB_PXExxx/initrd
+submenu 'UEFI Debian All-in-one (lowlatency) Install' --id=aio-lowlat {
+ menuentry 'Serial Console' --id=serial {
+ linuxefi xxxPXEBOOTxxx/bzImage-rt rdinit=/install defaultkernel=vmlinuz-*-rt-amd64 instname=debian instbr=starlingx instab=0 traits=controller,worker,lowlatency efi=runtime BOOTIF=$net_default_mac instdev=xxxINSTDEVxxx ks=xxxBASE_URLxxx/xxxFEEDxxx/kickstart/kickstart.cfg insturl=xxxBASE_URLxxx/xxxFEEDxxx/ostree_repo console=ttyS0,115200 biosdevname=0 biosplusefi=1
+ initrdefi xxxPXEBOOTxxx/initrd
+ }
+ menuentry 'Graphical Console' --id=graphical {
+ linuxefi xxxPXEBOOTxxx/bzImage-rt rdinit=/install defaultkernel=vmlinuz-*-rt-amd64 instname=debian instbr=starlingx instab=0 traits=controller,worker,lowlatency efi=runtime BOOTIF=$net_default_mac instdev=xxxINSTDEVxxx ks=xxxBASE_URLxxx/xxxFEEDxxx/kickstart/kickstart.cfg insturl=xxxBASE_URLxxx/xxxFEEDxxx/ostree_repo console=tty1 biosdevname=0 biosplusefi=1
+ initrdefi xxxPXEBOOTxxx/initrd
+ }
}
-
diff --git a/installer/pxe-network-installer/pxe-network-installer/pxeboot.cfg.debian b/installer/pxe-network-installer/pxe-network-installer/pxeboot.cfg.debian
index 816d0c52..f5794834 100644
--- a/installer/pxe-network-installer/pxe-network-installer/pxeboot.cfg.debian
+++ b/installer/pxe-network-installer/pxe-network-installer/pxeboot.cfg.debian
@@ -1,6 +1,7 @@
+# default 20 second timout
+timeout 200
serial 0 115200
-timeout 50
-default 4
+default xxxSYSTEMxxx
# Menu Configuration
MENU WIDTH 80
@@ -15,26 +16,48 @@ MENU TIMEOUTROW 20
MENU TITLE StarlingX Debian LAT / Kickstart Boot Menu
label 0
- menu label ^0) Boot from hard drive
- menu default
+ menu label Boot from hard drive
COM32 chain.c32
APPEND hd0
-label 1
- menu label ^1) Debian Controller Install
- kernel xxxLAB_PXExxx/bzImage-std
- append initrd=xxxLAB_PXExxx/initrd rdinit=/install defaultkernel=vmlinuz-*[!t]-amd64 instname=debian instbr=starlingx instab=0 traits=controller instdev=/dev/sda ks=xxxBASE_URLxxx/xxxLAB_FEEDxxx/kickstart/kickstart.cfg insturl=xxxBASE_URLxxx/xxxLAB_FEEDxxx/ostree_repo console=ttyS0,115200 console=tty1 biosdevname=0 biosplusefi=1
- ipappend 2
+menu begin
+ menu title Debian Controller Install
+ label 1
+ menu label Serial Console
+ kernel xxxPXEBOOTxxx/bzImage-std
+ append initrd=xxxPXEBOOTxxx/initrd rdinit=/install defaultkernel=vmlinuz-*[!t]-amd64 instname=debian instbr=starlingx instab=0 traits=controller instdev=xxxINSTDEVxxx ks=xxxBASE_URLxxx/xxxFEEDxxx/kickstart/kickstart.cfg insturl=xxxBASE_URLxxx/xxxFEEDxxx/ostree_repo console=ttyS0,115200 biosdevname=0 biosplusefi=1
+ ipappend 2
+ label 2
+ menu label Graphical Console
+ kernel xxxPXEBOOTxxx/bzImage-std
+ append initrd=xxxPXEBOOTxxx/initrd rdinit=/install defaultkernel=vmlinuz-*[!t]-amd64 instname=debian instbr=starlingx instab=0 traits=controller instdev=xxxINSTDEVxxx ks=xxxBASE_URLxxx/xxxFEEDxxx/kickstart/kickstart.cfg insturl=xxxBASE_URLxxx/xxxFEEDxxx/ostree_repo console=tty1 biosdevname=0 biosplusefi=1
+ ipappend 2
+menu end
-label 2
- menu label ^2) Debian All-in-one Install
- kernel xxxLAB_PXExxx/bzImage-std
- append initrd=xxxLAB_PXExxx/initrd rdinit=/install defaultkernel=vmlinuz-*[!t]-amd64 instname=debian instbr=starlingx instab=0 traits=controller,worker instdev=/dev/sda ks=xxxBASE_URLxxx/xxxLAB_FEEDxxx/kickstart/kickstart.cfg insturl=xxxBASE_URLxxx/xxxLAB_FEEDxxx/ostree_repo console=ttyS0,115200 console=tty1 biosdevname=0 biosplusefi=1
- ipappend 2
-
-label 3
- menu label ^2) Debian All-in-one (lowlatency) Install
- kernel xxxLAB_PXExxx/bzImage-rt
- append initrd=xxxLAB_PXExxx/initrd rdinit=/install defaultkernel=vmlinuz-*-rt-amd64 instname=debian instbr=starlingx instab=0 traits=controller,worker,lowlatency instdev=/dev/sda ks=xxxBASE_URLxxx/xxxLAB_FEEDxxx/kickstart/kickstart.cfg insturl=xxxBASE_URLxxx/xxxLAB_FEEDxxx/ostree_repo console=ttyS0,115200 console=tty1 biosdevname=0 biosplusefi=1
- ipappend 2
+menu begin
+ menu title Debian All-in-one Install
+ label 3
+ menu label Serial Console
+ kernel xxxPXEBOOTxxx/bzImage-std
+ append initrd=xxxPXEBOOTxxx/initrd rdinit=/install defaultkernel=vmlinuz-*[!t]-amd64 instname=debian instbr=starlingx instab=0 traits=controller,worker instdev=xxxINSTDEVxxx ks=xxxBASE_URLxxx/xxxFEEDxxx/kickstart/kickstart.cfg insturl=xxxBASE_URLxxx/xxxFEEDxxx/ostree_repo console=ttyS0,115200 biosdevname=0 biosplusefi=1
+ ipappend 2
+ label 4
+ menu label Graphical Console
+ kernel xxxPXEBOOTxxx/bzImage-std
+ append initrd=xxxPXEBOOTxxx/initrd rdinit=/install defaultkernel=vmlinuz-*[!t]-amd64 instname=debian instbr=starlingx instab=0 traits=controller,worker instdev=xxxINSTDEVxxx ks=xxxBASE_URLxxx/xxxFEEDxxx/kickstart/kickstart.cfg insturl=xxxBASE_URLxxx/xxxFEEDxxx/ostree_repo console=tty1 biosdevname=0 biosplusefi=1
+ ipappend 2
+menu end
+menu begin
+ menu title Debian All-in-one (lowlatency) Install
+ label 5
+ menu label Serial Console
+ kernel xxxPXEBOOTxxx/bzImage-rt
+ append initrd=xxxPXEBOOTxxx/initrd rdinit=/install defaultkernel=vmlinuz-*-rt-amd64 instname=debian instbr=starlingx instab=0 traits=controller,worker,lowlatency instdev=xxxINSTDEVxxx ks=xxxBASE_URLxxx/xxxFEEDxxx/kickstart/kickstart.cfg insturl=xxxBASE_URLxxx/xxxFEEDxxx/ostree_repo console=ttyS0,115200 biosdevname=0 biosplusefi=1
+ ipappend 2
+ label 6
+ menu label Graphical Console
+ kernel xxxPXEBOOTxxx/bzImage-rt
+ append initrd=xxxPXEBOOTxxx/initrd rdinit=/install defaultkernel=vmlinuz-*-rt-amd64 instname=debian instbr=starlingx instab=0 traits=controller,worker,lowlatency instdev=xxxINSTDEVxxx ks=xxxBASE_URLxxx/xxxFEEDxxx/kickstart/kickstart.cfg insturl=xxxBASE_URLxxx/xxxFEEDxxx/ostree_repo console=tty1 biosdevname=0 biosplusefi=1
+ ipappend 2
+menu end
diff --git a/installer/pxe-network-installer/pxe-network-installer/pxeboot_setup.sh b/installer/pxe-network-installer/pxe-network-installer/pxeboot_setup.sh
new file mode 100755
index 00000000..173df46a
--- /dev/null
+++ b/installer/pxe-network-installer/pxe-network-installer/pxeboot_setup.sh
@@ -0,0 +1,313 @@
+#!/bin/bash
+#
+# Copyright (c) 2016-2022 Wind River Systems, Inc.
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+############################################################################
+#
+# This script is used to create lab specific controller-0 install grub menus.
+# from template files through the following variable replacements.
+#
+# xxxPXEBOOTxxx : Replaces this string with the filesystem path between
+# /pxeboot and where the kernel/initrd files are stored.
+#
+# example : --pxeboot vlm-boards/some_system_name/feed
+#
+# Will then replace all instances in template files of ...
+#
+# 'xxxPXEBOOTxxx' with 'vlm-boards/some_system_name/feed'
+#
+# xxxFEEDxxx : replace with pxeboot path to server's install feed
+#
+# example : --feed umalab/some_server_name_feed
+#
+# Will then replace all instances in template files of ...
+#
+# 'xxxFEEDxxx' with 'umalab/some_server_name_feed'
+#
+# xxxBASE_URLxxx : replace with url path to server's install feed
+#
+# example : --url http://###.###.###.###
+#
+# Will then replace all instances in template files of ...
+#
+# xxxBASE_URLxxx with http://###.###.###.###
+#
+# Optional Settings
+#
+# xxxINSTDEVxxx : set the install device ; defaults to /dev/sda if missing
+# example : --device /dev/sde
+#
+# xxxSYSTEMxxx : specify the install system type ; default is AIO '2'
+# example : --system 2
+#
+# system type values
+#
+# 0 - disk boot
+# 1 - controller
+# 2 - All-in-one (standard)
+# 3 - All-in-one (lowlatency)
+#
+# Refer to usage function for option details.
+#
+############################################################################
+
+trap ctrl_c INT
+function ctrl_c {
+ echo "Exiting ..."
+ exit 1
+}
+
+# Debian Legacy BIOS and UEFI controller-0 install grub file names constants
+BIOS_PXEBOOT_GRUB_FILE='pxeboot.cfg.debian'
+UEFI_PXEBOOT_GRUB_FILE='efi-pxeboot.cfg.debian'
+
+# User specified path to the menu templates directory ; default empty
+MENUS_PATH=""
+
+# server specific values
+BASE_URL="" # the port based URL
+FEED_PATH="" # path to the feed directory ; the mounted iso
+PXE_PATH="" # offset path between /pxeboot and feed
+GRUB_PATH="" # where to put the created grub files
+
+# Optional Settings with default
+INSTDEV="/dev/sda" # default install device to sda
+
+TTY=0 # default of ttyS0
+
+SYSTEM="" # default to menu
+BIOS_SYSTEM=menu.c32 # Display the install menu by default
+UEFI_SYSTEM=menu.c32 # Display the install menu by default
+
+# The index of this array maps to the system install types specified
+# by the --system option. See below.
+UEFI_SYSTEM_TYPES_str=('disk' \
+ 'standard>serial' \
+ 'standard>graphical' \
+ 'aio>serial' \
+ 'aio>graphical' \
+ 'aio-lowlat>serial' \
+ 'aio-lowlat>graphical')
+
+BACKUP=false
+
+echo ""
+
+function usage {
+ RC=0
+ [ ! -z "${1}" ] && RC="${1}"
+ echo ""
+ echo "Usage: $0 [Arguments Options]"
+ echo ""
+ echo "Arguments:"
+ echo ""
+ echo " -i | --input : Path to ${BIOS_PXEBOOT_GRUB_FILE} and ${UEFI_PXEBOOT_GRUB_FILE} grub template files"
+ echo " -o | --output