From cddb4fc6dd208520893fac57dac411d39f969618 Mon Sep 17 00:00:00 2001
From: Eric MacDonald <eric.macdonald@windriver.com>
Date: Mon, 21 Mar 2022 11:11:10 +0000
Subject: [PATCH] debian: Add debian packaging for
 installer/pxe-network-installer

This update adds debian packaging to the pxe-network-installer package.
This includes a set of release based bios and uefi grub menus and a
modification to the pxeboot-update.sh script to support creating
debian grub files based on host mac address.

Test Plan:

PASS: Verify package build, image build and pxeboot install
PASS: Verify package install directory structure layout
PASS: Verify packaging of new debian /var/pxeboot/pxelinux.cfg.files
PASS: Verify platform release variable substitution in new grub files
PASS: Verify pxeboot-update.sh script changes produce both bios & efi
      variable substituted mac based grub file for a provisioned host

Regression:

PASS: Verify CentOS build and system install

Story: 2009101
Task: 44677
Signed-off-by: Eric MacDonald <eric.macdonald@windriver.com>
Change-Id: I69f735ef45bf0e0ecd612f5d7a8f1fcf6e51ca88
---
 debian_pkg_dirs                               |  1 +
 .../debian/deb_folder/changelog               |  5 ++
 .../debian/deb_folder/control                 | 16 +++++
 .../debian/deb_folder/copyright               | 43 ++++++++++++
 .../deb_folder/pxe-network-installer.install  |  2 +
 .../debian/deb_folder/rules                   | 48 +++++++++++++
 .../debian/meta_data.yaml                     |  7 ++
 .../debian-pxe-controller-install             | 26 +++++++
 .../debian-pxe-smallsystem-install            | 26 +++++++
 .../debian-pxe-smallsystem_lowlatency-install | 26 +++++++
 .../debian-pxe-storage-install                | 26 +++++++
 .../debian-pxe-worker-install                 | 26 +++++++
 .../debian-pxe-worker_lowlatency-install      | 26 +++++++
 .../efi-debian-pxe-controller-install         |  8 +++
 .../efi-debian-pxe-smallsystem-install        |  8 +++
 ...-debian-pxe-smallsystem_lowlatency-install |  8 +++
 .../efi-debian-pxe-storage-install            |  8 +++
 .../efi-debian-pxe-worker-install             |  8 +++
 .../efi-debian-pxe-worker_lowlatency-install  | 10 +++
 .../pxe-network-installer/pxeboot-update.sh   | 69 ++++++++++++-------
 20 files changed, 373 insertions(+), 24 deletions(-)
 create mode 100644 installer/pxe-network-installer/debian/deb_folder/changelog
 create mode 100644 installer/pxe-network-installer/debian/deb_folder/control
 create mode 100644 installer/pxe-network-installer/debian/deb_folder/copyright
 create mode 100644 installer/pxe-network-installer/debian/deb_folder/pxe-network-installer.install
 create mode 100644 installer/pxe-network-installer/debian/deb_folder/rules
 create mode 100644 installer/pxe-network-installer/debian/meta_data.yaml
 create mode 100644 installer/pxe-network-installer/pxe-network-installer/debian-pxe-controller-install
 create mode 100644 installer/pxe-network-installer/pxe-network-installer/debian-pxe-smallsystem-install
 create mode 100644 installer/pxe-network-installer/pxe-network-installer/debian-pxe-smallsystem_lowlatency-install
 create mode 100644 installer/pxe-network-installer/pxe-network-installer/debian-pxe-storage-install
 create mode 100644 installer/pxe-network-installer/pxe-network-installer/debian-pxe-worker-install
 create mode 100644 installer/pxe-network-installer/pxe-network-installer/debian-pxe-worker_lowlatency-install
 create mode 100644 installer/pxe-network-installer/pxe-network-installer/efi-debian-pxe-controller-install
 create mode 100644 installer/pxe-network-installer/pxe-network-installer/efi-debian-pxe-smallsystem-install
 create mode 100644 installer/pxe-network-installer/pxe-network-installer/efi-debian-pxe-smallsystem_lowlatency-install
 create mode 100644 installer/pxe-network-installer/pxe-network-installer/efi-debian-pxe-storage-install
 create mode 100644 installer/pxe-network-installer/pxe-network-installer/efi-debian-pxe-worker-install
 create mode 100644 installer/pxe-network-installer/pxe-network-installer/efi-debian-pxe-worker_lowlatency-install

diff --git a/debian_pkg_dirs b/debian_pkg_dirs
index ab5f9902..360db24a 100644
--- a/debian_pkg_dirs
+++ b/debian_pkg_dirs
@@ -1,3 +1,4 @@
+installer/pxe-network-installer
 mtce
 mtce-common
 mtce-compute
diff --git a/installer/pxe-network-installer/debian/deb_folder/changelog b/installer/pxe-network-installer/debian/deb_folder/changelog
new file mode 100644
index 00000000..23a892d1
--- /dev/null
+++ b/installer/pxe-network-installer/debian/deb_folder/changelog
@@ -0,0 +1,5 @@
+pxe-network-installer (2.0-1) unstable; urgency=medium
+
+  * Initial release.
+
+ -- Eric MacDonald <eric.macdonald@windriver.com>  Wed, 10 Mar 2022 13:01:55 +0000
diff --git a/installer/pxe-network-installer/debian/deb_folder/control b/installer/pxe-network-installer/debian/deb_folder/control
new file mode 100644
index 00000000..2d8a88e0
--- /dev/null
+++ b/installer/pxe-network-installer/debian/deb_folder/control
@@ -0,0 +1,16 @@
+Source: pxe-network-installer
+Section: admin
+Priority: optional
+Maintainer: StarlingX Developers <starlingx-discuss@lists.starlingx.io>
+Homepage: https://www.starlingx.io
+Standards-Version: 4.5.1
+Build-Depends: debhelper-compat (= 13),
+ build-info-dev,
+ grub2,
+ syslinux-common
+
+Package: pxe-network-installer
+Architecture: all
+Depends: ${misc:Depends}
+Description: System node pxe boot installer
+ System node pxe boot installer templates, utils and objects
diff --git a/installer/pxe-network-installer/debian/deb_folder/copyright b/installer/pxe-network-installer/debian/deb_folder/copyright
new file mode 100644
index 00000000..47df17bc
--- /dev/null
+++ b/installer/pxe-network-installer/debian/deb_folder/copyright
@@ -0,0 +1,43 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Contact: StarlingX Developers <starlingx-discuss@lists.starlingx.io>
+Upstream-Name: pxe-network-installer
+Source: https://opendev.org/starlingx/metal
+
+Files: *
+Copyright: (c) 2013-2022 Wind River Systems, Inc
+           (c) Others (See individual files for more details)
+License: Apache-2
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ .
+    https://www.apache.org/licenses/LICENSE-2.0
+ .
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ .
+ On Debian-based systems the full text of the Apache version 2.0 license
+ can be found in `/usr/share/common-licenses/Apache-2.0'.
+
+# If you want to use GPL v2 or later for the /debian/* files use
+# the following clauses, or change it to suit. Delete these two lines
+Files: debian/*
+Copyright: 2021 Wind River Systems, Inc
+License: Apache-2
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ .
+    https://www.apache.org/licenses/LICENSE-2.0
+ .
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ .
+ On Debian-based systems the full text of the Apache version 2.0 license
+ can be found in `/usr/share/common-licenses/Apache-2.0'.
diff --git a/installer/pxe-network-installer/debian/deb_folder/pxe-network-installer.install b/installer/pxe-network-installer/debian/deb_folder/pxe-network-installer.install
new file mode 100644
index 00000000..384ad94c
--- /dev/null
+++ b/installer/pxe-network-installer/debian/deb_folder/pxe-network-installer.install
@@ -0,0 +1,2 @@
+var/pxeboot
+usr/sbin
diff --git a/installer/pxe-network-installer/debian/deb_folder/rules b/installer/pxe-network-installer/debian/deb_folder/rules
new file mode 100644
index 00000000..33075935
--- /dev/null
+++ b/installer/pxe-network-installer/debian/deb_folder/rules
@@ -0,0 +1,48 @@
+#!/usr/bin/make -f
+
+# export DH_VERBOSE = 1
+export ROOT=$(CURDIR)/debian/tmp
+export platform_release="$(shell grep SW_VERSION /usr/include/build_info.h | cut -d ' ' -f 3)"
+
+%:
+	dh $@
+
+override_dh_auto_configure:
+	sed -i "s/xxxSW_VERSIONxxx/${platform_release}/g" debian-pxe-* efi-debian-pxe-*
+	dh_auto_configure
+
+override_dh_install:
+	install -v -d -m 755 $(ROOT)/usr/bin
+	install -v -d -m 755 $(ROOT)/var/pxeboot/pxelinux.cfg
+	install -v -d -m 755 $(ROOT)/var/pxeboot/pxelinux.cfg.files
+	install -v -d -m 755 $(ROOT)/var/pxeboot/rel-${platform_release}
+	install -v -d -m 755 $(ROOT)/usr/share/licenses/pxe-network-installer-1.0.0
+
+	# Review Note: The actual kernel and initrd files will be added later
+	# Pull in the kernel and initrd and add installer links.
+	ln -sf bzImage $(ROOT)/var/pxeboot/rel-${platform_release}/installer-bzImage
+	ln -sf initrd $(ROOT)/var/pxeboot/rel-${platform_release}/installer-initrd
+
+	# Add grub links
+	install -v -m 644 default              $(ROOT)/var/pxeboot/pxelinux.cfg.files/default
+	install -v -m 644 default.static       $(ROOT)/var/pxeboot/pxelinux.cfg.files/default.static
+	install -v -m 644 pxe-grub.cfg         $(ROOT)/var/pxeboot/pxelinux.cfg.files/grub.cfg
+	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
+
+	# 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}
+	install -p -D -m 700     debian-pxe-storage-install     $(ROOT)/var/pxeboot/pxelinux.cfg.files/pxe-storage-install-${platform_release}
+	install -p -D -m 700     debian-pxe-worker-install      $(ROOT)/var/pxeboot/pxelinux.cfg.files/pxe-worker-install-${platform_release}
+	install -p -D -m 700     debian-pxe-worker_lowlatency-install $(ROOT)/var/pxeboot/pxelinux.cfg.files/pxe-worker_lowlatency-install-${platform_release}
+	install -p -D -m 700     debian-pxe-smallsystem_lowlatency-install $(ROOT)/var/pxeboot/pxelinux.cfg.files/pxe-smallsystem_lowlatency-install-${platform_release}
+
+	# UEFI System Node Install grub menus
+	install -p -D -m 700 efi-debian-pxe-controller-install  $(ROOT)/var/pxeboot/pxelinux.cfg.files/efi-pxe-controller-install-${platform_release}
+	install -p -D -m 700 efi-debian-pxe-smallsystem-install $(ROOT)/var/pxeboot/pxelinux.cfg.files/efi-pxe-smallsystem-install-${platform_release}
+	install -p -D -m 700 efi-debian-pxe-storage-install     $(ROOT)/var/pxeboot/pxelinux.cfg.files/efi-pxe-storage-install-${platform_release}
+	install -p -D -m 700 efi-debian-pxe-worker-install      $(ROOT)/var/pxeboot/pxelinux.cfg.files/efi-pxe-worker-install-${platform_release}
+	install -p -D -m 700 efi-debian-pxe-worker_lowlatency-install $(ROOT)/var/pxeboot/pxelinux.cfg.files/efi-pxe-worker_lowlatency-install-${platform_release}
+	install -p -D -m 700 efi-debian-pxe-smallsystem_lowlatency-install $(ROOT)/var/pxeboot/pxelinux.cfg.files/efi-pxe-smallsystem_lowlatency-install-${platform_release}
+	dh_install
diff --git a/installer/pxe-network-installer/debian/meta_data.yaml b/installer/pxe-network-installer/debian/meta_data.yaml
new file mode 100644
index 00000000..fc83052f
--- /dev/null
+++ b/installer/pxe-network-installer/debian/meta_data.yaml
@@ -0,0 +1,7 @@
+---
+debname: pxe-network-installer
+debver: 2.0-1
+src_path: pxe-network-installer
+revision:
+  dist: $STX_DIST
+  PKG_GITREVCOUNT: true
diff --git a/installer/pxe-network-installer/pxe-network-installer/debian-pxe-controller-install b/installer/pxe-network-installer/pxe-network-installer/debian-pxe-controller-install
new file mode 100644
index 00000000..e4213201
--- /dev/null
+++ b/installer/pxe-network-installer/pxe-network-installer/debian-pxe-controller-install
@@ -0,0 +1,26 @@
+SERIAL 0 115200
+TIMEOUT 50
+DEFAULT menu.c32
+
+# Menu Configuration
+MENU WIDTH 80
+MENU MARGIN 10
+MENU PASSWORDMARGIN 3
+MENU ROWS 12
+MENU TABMSGROW 18
+MENU CMDLINEROW 18
+MENU ENDROW 24
+MENU PASSWORDROW 11
+MENU TIMEOUTROW 20
+
+PROMPT 0
+NOESCAPE 1
+NOCOMPLETE 1
+ALLOWOPTIONS 0
+
+LABEL 1
+  MENU LABEL ^1) Standard Controller
+  MENU DEFAULT
+  KERNEL rel-xxxSW_VERSIONxxx/installer-bzImage
+  APPEND initrd=rel-xxxSW_VERSIONxxx/installer-initrd rdinit=/install traits=controller instname=debian instsh=0 instab=0 instw=10 instbr=starlingx ks=xxxBASE_URLxxx/feed/rel-xxxSW_VERSIONxxx/kickstart.cfg insturl=xxxBASE_URLxxx/feed/rel-xxxSW_VERSIONxxx/ostree_repo console=ttyS0,115200 console=tty1 biosdevname=0 net.ifnames=0 biosplusefi=1 xxxAPPEND_OPTIONSxxx
+  IPAPPEND 2
diff --git a/installer/pxe-network-installer/pxe-network-installer/debian-pxe-smallsystem-install b/installer/pxe-network-installer/pxe-network-installer/debian-pxe-smallsystem-install
new file mode 100644
index 00000000..bd74328f
--- /dev/null
+++ b/installer/pxe-network-installer/pxe-network-installer/debian-pxe-smallsystem-install
@@ -0,0 +1,26 @@
+SERIAL 0 115200
+TIMEOUT 50
+DEFAULT menu.c32
+
+# Menu Configuration
+MENU WIDTH 80
+MENU MARGIN 10
+MENU PASSWORDMARGIN 3
+MENU ROWS 12
+MENU TABMSGROW 18
+MENU CMDLINEROW 18
+MENU ENDROW 24
+MENU PASSWORDROW 11
+MENU TIMEOUTROW 20
+
+PROMPT 0
+NOESCAPE 1
+NOCOMPLETE 1
+ALLOWOPTIONS 0
+
+LABEL 1
+  MENU LABEL ^1) All-in-one
+  MENU DEFAULT
+  KERNEL rel-xxxSW_VERSIONxxx/installer-bzImage
+  APPEND initrd=rel-xxxSW_VERSIONxxx/installer-initrd rdinit=/install traits=controller,worker instname=debian instsh=0 instab=0 instw=10 instbr=starlingx ks=xxxBASE_URLxxx/feed/rel-xxxSW_VERSIONxxx/kickstart.cfg insturl=xxxBASE_URLxxx/feed/rel-xxxSW_VERSIONxxx/ostree_repo console=ttyS0,115200 console=tty1 biosdevname=0 net.ifnames=0 biosplusefi=1 xxxAPPEND_OPTIONSxxx
+  IPAPPEND 2
diff --git a/installer/pxe-network-installer/pxe-network-installer/debian-pxe-smallsystem_lowlatency-install b/installer/pxe-network-installer/pxe-network-installer/debian-pxe-smallsystem_lowlatency-install
new file mode 100644
index 00000000..9e0f1781
--- /dev/null
+++ b/installer/pxe-network-installer/pxe-network-installer/debian-pxe-smallsystem_lowlatency-install
@@ -0,0 +1,26 @@
+SERIAL 0 115200
+TIMEOUT 50
+DEFAULT menu.c32
+
+# Menu Configuration
+MENU WIDTH 80
+MENU MARGIN 10
+MENU PASSWORDMARGIN 3
+MENU ROWS 12
+MENU TABMSGROW 18
+MENU CMDLINEROW 18
+MENU ENDROW 24
+MENU PASSWORDROW 11
+MENU TIMEOUTROW 20
+
+PROMPT 0
+NOESCAPE 1
+NOCOMPLETE 1
+ALLOWOPTIONS 0
+
+LABEL 1
+  MENU LABEL ^1) All-in-one (lowlatency)
+  MENU DEFAULT
+  KERNEL rel-xxxSW_VERSIONxxx/installer-bzImage
+  APPEND initrd=rel-xxxSW_VERSIONxxx/installer-initrd rdinit=/install traits=controller,worker,lowlatency instname=debian instsh=0 instab=0 instw=10 instbr=starlingx ks=xxxBASE_URLxxx/feed/rel-xxxSW_VERSIONxxx/kickstart.cfg insturl=xxxBASE_URLxxx/feed/rel-xxxSW_VERSIONxxx/ostree_repo console=ttyS0,115200 console=tty1 biosdevname=0 net.ifnames=0 biosplusefi=1 xxxAPPEND_OPTIONSxxx
+  IPAPPEND 2
diff --git a/installer/pxe-network-installer/pxe-network-installer/debian-pxe-storage-install b/installer/pxe-network-installer/pxe-network-installer/debian-pxe-storage-install
new file mode 100644
index 00000000..439bc7cc
--- /dev/null
+++ b/installer/pxe-network-installer/pxe-network-installer/debian-pxe-storage-install
@@ -0,0 +1,26 @@
+SERIAL 0 115200
+TIMEOUT 50
+DEFAULT menu.c32
+
+# Menu Configuration
+MENU WIDTH 80
+MENU MARGIN 10
+MENU PASSWORDMARGIN 3
+MENU ROWS 12
+MENU TABMSGROW 18
+MENU CMDLINEROW 18
+MENU ENDROW 24
+MENU PASSWORDROW 11
+MENU TIMEOUTROW 20
+
+PROMPT 0
+NOESCAPE 1
+NOCOMPLETE 1
+ALLOWOPTIONS 0
+
+LABEL 1
+  MENU LABEL ^1) Storage
+  MENU DEFAULT
+  KERNEL rel-xxxSW_VERSIONxxx/installer-bzImage
+  APPEND initrd=rel-xxxSW_VERSIONxxx/installer-initrd rdinit=/install traits=storage instname=debian instsh=0 instab=0 instw=10 instbr=starlingx ks=xxxBASE_URLxxx/feed/rel-xxxSW_VERSIONxxx/kickstart.cfg insturl=xxxBASE_URLxxx/feed/rel-xxxSW_VERSIONxxx/ostree_repo console=ttyS0,115200 console=tty1 biosdevname=0 net.ifnames=0 biosplusefi=1 xxxAPPEND_OPTIONSxxx
+  IPAPPEND 2
diff --git a/installer/pxe-network-installer/pxe-network-installer/debian-pxe-worker-install b/installer/pxe-network-installer/pxe-network-installer/debian-pxe-worker-install
new file mode 100644
index 00000000..88b3faec
--- /dev/null
+++ b/installer/pxe-network-installer/pxe-network-installer/debian-pxe-worker-install
@@ -0,0 +1,26 @@
+SERIAL 0 115200
+TIMEOUT 50
+DEFAULT menu.c32
+
+# Menu Configuration
+MENU WIDTH 80
+MENU MARGIN 10
+MENU PASSWORDMARGIN 3
+MENU ROWS 12
+MENU TABMSGROW 18
+MENU CMDLINEROW 18
+MENU ENDROW 24
+MENU PASSWORDROW 11
+MENU TIMEOUTROW 20
+
+PROMPT 0
+NOESCAPE 1
+NOCOMPLETE 1
+ALLOWOPTIONS 0
+
+LABEL 1
+  MENU LABEL ^1) Worker
+  MENU DEFAULT
+  KERNEL rel-xxxSW_VERSIONxxx/installer-bzImage
+  APPEND initrd=rel-xxxSW_VERSIONxxx/installer-initrd rdinit=/install traits=worker instname=debian instsh=0 instab=0 instw=10 instbr=starlingx ks=xxxBASE_URLxxx/feed/rel-xxxSW_VERSIONxxx/kickstart.cfg insturl=xxxBASE_URLxxx/feed/rel-xxxSW_VERSIONxxx/ostree_repo console=ttyS0,115200 console=tty1 biosdevname=0 net.ifnames=0 biosplusefi=1 xxxAPPEND_OPTIONSxxx
+  IPAPPEND 2
diff --git a/installer/pxe-network-installer/pxe-network-installer/debian-pxe-worker_lowlatency-install b/installer/pxe-network-installer/pxe-network-installer/debian-pxe-worker_lowlatency-install
new file mode 100644
index 00000000..3b9c5bd2
--- /dev/null
+++ b/installer/pxe-network-installer/pxe-network-installer/debian-pxe-worker_lowlatency-install
@@ -0,0 +1,26 @@
+SERIAL 0 115200
+TIMEOUT 50
+DEFAULT menu.c32
+
+# Menu Configuration
+MENU WIDTH 80
+MENU MARGIN 10
+MENU PASSWORDMARGIN 3
+MENU ROWS 12
+MENU TABMSGROW 18
+MENU CMDLINEROW 18
+MENU ENDROW 24
+MENU PASSWORDROW 11
+MENU TIMEOUTROW 20
+
+PROMPT 0
+NOESCAPE 1
+NOCOMPLETE 1
+ALLOWOPTIONS 0
+
+LABEL 1
+  MENU LABEL ^1) Lowlatency Worker
+  MENU DEFAULT
+  KERNEL rel-xxxSW_VERSIONxxx/installer-bzImage
+  APPEND initrd=rel-xxxSW_VERSIONxxx/installer-initrd rdinit=/install traits=worker,lowlatency instname=debian instsh=0 instab=0 instw=10 instbr=starlingx ks=xxxBASE_URLxxx/feed/rel-xxxSW_VERSIONxxx/kickstart.cfg insturl=xxxBASE_URLxxx/feed/rel-xxxSW_VERSIONxxx/ostree_repo console=ttyS0,115200 console=tty1 biosdevname=0 net.ifnames=0 biosplusefi=1 xxxAPPEND_OPTIONSxxx
+  IPAPPEND 2
diff --git a/installer/pxe-network-installer/pxe-network-installer/efi-debian-pxe-controller-install b/installer/pxe-network-installer/pxe-network-installer/efi-debian-pxe-controller-install
new file mode 100644
index 00000000..4b56ace5
--- /dev/null
+++ b/installer/pxe-network-installer/pxe-network-installer/efi-debian-pxe-controller-install
@@ -0,0 +1,8 @@
+default=0
+timeout=10
+GRUB_HIDDEN_TIMEOUT=0
+GRUB_TIMEOUT_STYLE='countdown'
+
+menuentry '1) UEFI Standard Controller' {
+      linuxefi rel-xxxSW_VERSIONxxx/installer-bzImage rdinit=/install traits=controller instname=debian instsh=0 instab=0 instw=10 BOOTIF=$net_default_mac instbr=starlingx ks=xxxBASE_URLxxx/feed/rel-xxxSW_VERSIONxxx/kickstart.cfg insturl=xxxBASE_URLxxx/feed/rel-xxxSW_VERSIONxxx/ostree_repo console=ttyS0,115200 console=tty1 biosdevname=0 net.ifnames=0 biosplusefi=1 xxxAPPEND_OPTIONSxxx
+        initrdefi rel-xxxSW_VERSIONxxx/installer-initrd
diff --git a/installer/pxe-network-installer/pxe-network-installer/efi-debian-pxe-smallsystem-install b/installer/pxe-network-installer/pxe-network-installer/efi-debian-pxe-smallsystem-install
new file mode 100644
index 00000000..6fc29961
--- /dev/null
+++ b/installer/pxe-network-installer/pxe-network-installer/efi-debian-pxe-smallsystem-install
@@ -0,0 +1,8 @@
+default=0
+timeout=10
+GRUB_HIDDEN_TIMEOUT=0
+GRUB_TIMEOUT_STYLE='countdown'
+
+menuentry '1) UEFI All-in-one' {
+      linuxefi rel-xxxSW_VERSIONxxx/installer-bzImage rdinit=/install traits=controller,worker instname=debian instsh=0 instab=0 instw=10 BOOTIF=$net_default_mac instbr=starlingx ks=xxxBASE_URLxxx/feed/rel-xxxSW_VERSIONxxx/kickstart.cfg insturl=xxxBASE_URLxxx/feed/rel-xxxSW_VERSIONxxx/ostree_repo console=ttyS0,115200 console=tty1 biosdevname=0 net.ifnames=0 biosplusefi=1 xxxAPPEND_OPTIONSxxx
+        initrdefi rel-xxxSW_VERSIONxxx/installer-initrd
diff --git a/installer/pxe-network-installer/pxe-network-installer/efi-debian-pxe-smallsystem_lowlatency-install b/installer/pxe-network-installer/pxe-network-installer/efi-debian-pxe-smallsystem_lowlatency-install
new file mode 100644
index 00000000..bd135000
--- /dev/null
+++ b/installer/pxe-network-installer/pxe-network-installer/efi-debian-pxe-smallsystem_lowlatency-install
@@ -0,0 +1,8 @@
+default=0
+timeout=10
+GRUB_HIDDEN_TIMEOUT=0
+GRUB_TIMEOUT_STYLE='countdown'
+
+menuentry '1) UEFI All-in-one (lowlatency)' {
+      linuxefi rel-xxxSW_VERSIONxxx/installer-bzImage rdinit=/install traits=controller,worker,lowlatency instname=debian instsh=0 instab=0 instw=10 BOOTIF=$net_default_mac instbr=starlingx ks=xxxBASE_URLxxx/feed/rel-xxxSW_VERSIONxxx/kickstart.cfg insturl=xxxBASE_URLxxx/feed/rel-xxxSW_VERSIONxxx/ostree_repo console=ttyS0,115200 console=tty1 biosdevname=0 net.ifnames=0 biosplusefi=1 xxxAPPEND_OPTIONSxxx
+        initrdefi rel-xxxSW_VERSIONxxx/installer-initrd
diff --git a/installer/pxe-network-installer/pxe-network-installer/efi-debian-pxe-storage-install b/installer/pxe-network-installer/pxe-network-installer/efi-debian-pxe-storage-install
new file mode 100644
index 00000000..8df043dd
--- /dev/null
+++ b/installer/pxe-network-installer/pxe-network-installer/efi-debian-pxe-storage-install
@@ -0,0 +1,8 @@
+default=0
+timeout=10
+GRUB_HIDDEN_TIMEOUT=0
+GRUB_TIMEOUT_STYLE='countdown'
+
+menuentry '1) UEFI Storage' {
+      linuxefi rel-xxxSW_VERSIONxxx/installer-bzImage rdinit=/install traits=storage instname=debian instsh=0 instab=0 instw=10 BOOTIF=$net_default_mac instbr=starlingx ks=xxxBASE_URLxxx/feed/rel-xxxSW_VERSIONxxx/kickstart.cfg insturl=xxxBASE_URLxxx/feed/rel-xxxSW_VERSIONxxx/ostree_repo console=ttyS0,115200 console=tty1 biosdevname=0 net.ifnames=0 biosplusefi=1 xxxAPPEND_OPTIONSxxx
+        initrdefi rel-xxxSW_VERSIONxxx/installer-initrd
diff --git a/installer/pxe-network-installer/pxe-network-installer/efi-debian-pxe-worker-install b/installer/pxe-network-installer/pxe-network-installer/efi-debian-pxe-worker-install
new file mode 100644
index 00000000..11599a0a
--- /dev/null
+++ b/installer/pxe-network-installer/pxe-network-installer/efi-debian-pxe-worker-install
@@ -0,0 +1,8 @@
+default=0
+timeout=10
+GRUB_HIDDEN_TIMEOUT=0
+GRUB_TIMEOUT_STYLE='countdown'
+
+menuentry '1) UEFI Worker' {
+      linuxefi rel-xxxSW_VERSIONxxx/installer-bzImage rdinit=/install traits=worker instname=debian instsh=0 instab=0 instw=10 BOOTIF=$net_default_mac instbr=starlingx ks=xxxBASE_URLxxx/feed/rel-xxxSW_VERSIONxxx/kickstart.cfg insturl=xxxBASE_URLxxx/feed/rel-xxxSW_VERSIONxxx/ostree_repo console=ttyS0,115200 console=tty1 biosdevname=0 net.ifnames=0 biosplusefi=1 xxxAPPEND_OPTIONSxxx
+        initrdefi rel-xxxSW_VERSIONxxx/installer-initrd
diff --git a/installer/pxe-network-installer/pxe-network-installer/efi-debian-pxe-worker_lowlatency-install b/installer/pxe-network-installer/pxe-network-installer/efi-debian-pxe-worker_lowlatency-install
new file mode 100644
index 00000000..f70e1f32
--- /dev/null
+++ b/installer/pxe-network-installer/pxe-network-installer/efi-debian-pxe-worker_lowlatency-install
@@ -0,0 +1,10 @@
+default=0
+timeout=10
+GRUB_HIDDEN_TIMEOUT=0
+GRUB_TIMEOUT_STYLE='countdown'
+
+menuentry '1) UEFI lowlatency Worker' {
+      linuxefi rel-xxxSW_VERSIONxxx/installer-bzImage rdinit=/install traits=worker,lowlatency instname=debian instsh=0 instab=0 instw=10 BOOTIF=$net_default_mac instbr=starlingx ks=xxxBASE_URLxxx/feed/rel-xxxSW_VERSIONxxx/kickstart.cfg insturl=xxxBASE_URLxxx/feed/rel-xxxSW_VERSIONxxx/ostree_repo console=ttyS0,115200 console=tty1 biosdevname=0 net.ifnames=0 biosplusefi=1 xxxAPPEND_OPTIONSxxx
+        initrdefi rel-xxxSW_VERSIONxxx/installer-initrd
+}
+
diff --git a/installer/pxe-network-installer/pxe-network-installer/pxeboot-update.sh b/installer/pxe-network-installer/pxe-network-installer/pxeboot-update.sh
index 9ea6e50b..d49df7b3 100755
--- a/installer/pxe-network-installer/pxe-network-installer/pxeboot-update.sh
+++ b/installer/pxe-network-installer/pxe-network-installer/pxeboot-update.sh
@@ -31,6 +31,7 @@ Arguments:
     -T <tboot value>    : Specify whether or not to use tboot (optional)
     -k <kernel args>    : Specify any extra kernel boot arguments (optional)
     -l <base url>       : Specify installer base URL
+    -d                  : Update Debian grub menus ; rather than centos menus
 
 EOF
 }
@@ -67,8 +68,9 @@ function generate_config {
 
 parms=$@
 logger -t $0 " $parms"
+debian_menus=false
 
-while getopts "i:o:tgc:b:r:u:s:T:k:l:h" opt
+while getopts "i:o:tgc:b:r:u:s:T:k:l:h:d" opt
 do
     case $opt in
         i)
@@ -91,6 +93,9 @@ do
         c)
             console=$OPTARG
             ;;
+        d)
+            debian_menus=true
+            ;;
         b)
             boot_device=$OPTARG
             ;;
@@ -101,10 +106,10 @@ do
             tisnotify=$OPTARG
             ;;
         s)
-            security_profile=$OPTARG
+            logger "security_profile is no longer supported ; ignoring"
             ;;
         T)
-            tboot=$OPTARG
+            logger "tboot is no longer supported ; ignoring"
             ;;
         k)
             kernal_extra_args=$OPTARG
@@ -123,6 +128,29 @@ do
     esac
 done
 
+# handle debian.
+# Support the validation check below by forcing
+#   boot and rootfs device to be set equal.
+if [ ${debian_menus} = true ] ; then
+    if [ "${boot_device}" != "" ] ; then
+        instdev=${boot_device}
+        rootfs_device=${boot_device}
+    elif [ "${rootfs_device}" != "" ] ; then
+        instdev=${rootfs_device}
+        boot_device=${rootfs_device}
+    else
+        logger --stderr -t $0 "Error: Failed to supply an install device: $@"
+        usage
+        exit 1
+    fi
+fi
+
+if [ "$input_file" == "$output_file" ] ; then
+    logger --stderr -t $0 "Error: Input template and Output file must be different"
+    usage
+    exit 1
+fi
+
 # Validate parameters
 if [ -z "$input_file" \
         -o -z "$input_file_efi" \
@@ -135,30 +163,30 @@ if [ -z "$input_file" \
     exit 1
 fi
 
-APPEND_OPTIONS="boot_device=$boot_device rootfs_device=$rootfs_device"
+if [ "${debian_menus}" = true ] ; then
+    APPEND_OPTIONS="instdev=$instdev"
+else
+    APPEND_OPTIONS="boot_device=$boot_device rootfs_device=$rootfs_device"
 
-if [ -n "$text_install" ]; then
-    APPEND_OPTIONS="$APPEND_OPTIONS $text_install"
+    if [ -n "$text_install" ]; then
+        APPEND_OPTIONS="$APPEND_OPTIONS $text_install"
+    fi
+
+    # We now require GPT partitions for all disks regardless of size
+    APPEND_OPTIONS="$APPEND_OPTIONS inst.gpt"
+
+    if [ -n "$tisnotify" ]; then
+        APPEND_OPTIONS="$APPEND_OPTIONS tisnotify=$tisnotify"
+    fi
 fi
 
 if [ -n "$console" ]; then
     APPEND_OPTIONS="$APPEND_OPTIONS console=$console"
 fi
 
-if [ -n "$tisnotify" ]; then
-    APPEND_OPTIONS="$APPEND_OPTIONS tisnotify=$tisnotify"
-fi
-
-# We now require GPT partitions for all disks regardless of size
-APPEND_OPTIONS="$APPEND_OPTIONS inst.gpt"
-
 # Add k8s support for namespaces
 APPEND_OPTIONS="$APPEND_OPTIONS user_namespace.enable=1"
 
-if [ -n "$security_profile" ]; then
-    APPEND_OPTIONS="$APPEND_OPTIONS security_profile=$security_profile"
-fi
-
 if [ -n "$kernal_extra_args" ]; then
     APPEND_OPTIONS="$APPEND_OPTIONS $kernal_extra_args"
 fi
@@ -166,13 +194,6 @@ fi
 BASE_URL=$base_url
 
 generate_config $input_file $output_file
-
-# for extended security profile UEFI boot only,
-# a tboot option will be passed to target boot option menu
-if [ "$security_profile" == "extended" -a -n "$tboot" ]; then
-    APPEND_OPTIONS="$APPEND_OPTIONS tboot=$tboot"
-fi
-
 generate_config $input_file_efi $output_file_efi
 
 exit 0