Details: Since this is the first Debian to Debian upgrade,
we need to refactor some existing code that is used for
centOS upgrade.
This commit is
1. clean up CentOS related code
2. copy to-load pxeboot-update.sh to /etc/ during the import
instead of /usr/sbin/
3. install to-load pxeboot-update.sh in /etc/ instead of
/usr/sbin/ during iso installation
4. update kickstart Upgrade Support accordingly to set up
from-load feed
Test Plan:
PASS: built the iso for upgrade
PASS: upgraded from 22.12 to 23.09 in DX
PASS: downgrade from 23.09 to 22.12 in DX
Depends-on: https://review.opendev.org/c/starlingx/tools/+/881882
Task: 47805
Story: 2010651
Signed-off-by: Junfeng (Shawn) Li <junfeng.li@windriver.com>
Change-Id: Ia67f5f3e66f5b33c3d7fb8d93a15547d59eaa71e
Update debian package versions to use git commits for:
- pxe-network-installer
Old version was: 8
New version is: 23
The Debian packaging has been changed to reflect all the
git commits under the directory, and not just the commits
to the metadata folder.
This ensures that any new code submissions under those
directories will increment the versions.
Test Plan:
PASS: build-pkgs -p pxe-network-installer
Story: 2010550
Task: 47399
Signed-off-by: Al Bailey <al.bailey@windriver.com>
Change-Id: I80f65e991872697c048d5833943f9e63d3572a05
This update introduces a new script that can be called
by patching to refresh the kernel, initrd and other
system node install feed staged files in support of
kernel patching.
This update also introduces and enables new service file
that triggers the creation of the pxeboot feeds or refreshes
the pxeboot feeds if what they contain does not match the
content in /boot.
Both new script and service files are added to the
pxe-network-installer package so they get installed
into the filesystem properly.
Lastly, there are 2 kickstart changes implemented.
1. The kickstart code that copied the kickstart files from
/var/www/pages/feed/rel-xx.xx/
to
/var/www/pages/feed/rel-xx.xx/kickstart
is removed in favor of the pxe-network-installer package
doing that automatically.
2. The kickstart is modified to remove the previous pxeboot
feed fetch and creation function.
One exception to this is the efi.img file, its fetch remains.
Note the efi image is currenly not included in the /boot dir.
Test Plan:
PASS: Verify Debian build and AIO DX install (cd and pxe installs)
PASS: Verify Debian Standard 2+1 DX system install
PASS: In above cases verify end-to-end handling of the following
test case staging.
PASS: Verify pxeboot feed staging on subcloud controller-0 install
PASS: Verify pxeboot feed file positioning in
- /var/pxeboot/rel-xx.xx (kernel and initrd images)
- /var/www/pages/feed/rel-xx.xx/pxeboot (kernel/initrd images)
- /var/www/pages/feed/rel-xx.xx/pxeboot/EFI/BOOT (other files)
- /var/pxeboot and /var/www/pages/feed/rel-xx.xx (efi.img)
PASS: Verify rsync bypass for the above cases when the files match
- complete and partial cases
PASS: Verify staging when the stage dirs are missing
- complete and partial cases
PASS: Verify staging when stage files mismatch
- complete and partial cases
PASS: Verify service enable on controllers for AIO and STD configs
PASS: Verify kickstart file position change
PASS: Verify shellcheck static analysis
PASS: Verify pxeboot_feed.sh script error handling
PASS: Verify pxeboot_feed.sh script logging
Story: 2009968
Task: 46789
Signed-off-by: Eric MacDonald <eric.macdonald@windriver.com>
Change-Id: Ic98b2686c417103749cb777adb28ac73ac1d397c
Initial delivery of UEFI system node installs did not
use the signed boot loader. As a result Secure Boot
of system nodes was not supported. This update changes
that by swapping in the signed bootx64.efi boot loader
in a puppet update ; see depends on.
This update modifies to the pxe-network-installer
and kickstart to support a robust UEFI system node
install that supports Secure Boot.
The first change creates and uses an stx template
file from LAT grub file. This is done to avoid ongoing
and difficult to implement LAT grub file hack changes
from the kickstart.
This new grub.cg.stx file is packaged in the
pxe-network-installer.
The kickstarts are modified to replace the LAT grub.cfg
file with the new stx template file grub.cfg.stx. As far
as this update goes, this template file is a null change
from the LAT grub file and represents what the LAT grub
file looked like at the time the template was created.
Moving forward, further changes to the system node
install grub file will be made to this new grub.cfg.stx
template file.
The second change is to modify existing stx unprovisioned
default pxe-grub.cfg files to look for the new mac based
config file with the '.cfg' extention.
The system node install mac-based grub files are dynamically
created with no signature file. To work around that, this
update exports the LAT environment variable 'skip_check_cfg'
which instructs LAT to 'skip' the grub menu signature 'check'
for these dynamically created grub files.
An additional change is made to handle timer reload on menu
refresh if the new node remains unprovisioned after timeout.
Test Plan:
PASS: Verify the default LAT file is renamed and the new
template file positioned in its place.
PASS: Verify Debian pxe-network-installer package update
PASS: Verify Debian AIO DX UEFI Install
PASS: Verify CentOS kickstarts do not require the kickstart change
PASS: Verify build and UEFI install
- Debian
- CentOS
PASS: Verify unprovisioned grub menu reload handling with
re-occuring timeout until node is provisioned.
Regression:
PASS: Verify host-delete and host-update install and unlock
PASS: Verify host-reinstall and host-unlock
PASS: Verify lock/unlock controller-1 and controller-0
PASS: Verify lock/delete/reinstall/unlock controller-1
PASS: Verify swact to controller-1
PASS: Verify lock/delete/reinstall/unlock controller-0
Depends-On: https://review.opendev.org/c/starlingx/stx-puppet/+/863776
Story: 2009968
Task: 46701
Signed-off-by: Eric MacDonald <eric.macdonald@windriver.com>
Change-Id: Id073842ac1b29acf54c999022a9e37d4c2366031
This update packages the pxeboot utilities into the
pxe-network-installer and modifies the kickstart to
no longer fetch them.
Once packaged they no longer need to be staged in feed.
Once packaged then they can be patched.
Test Plan:
PASS: Build and install AIO DX
PASS: Compare /var/pxeboot dir before and after update
PASS: Verify system host-reinstall controller-0 from controller-1
PASS: Verify unlock of reinstalled controller-0
PASS: Verify kickstart logs now exclude pxeboot utility staging
Story: 2009968
Task: 46619
Signed-off-by: Eric MacDonald <eric.macdonald@windriver.com>
Change-Id: I75bcfe06724cbfc7203b187cb7c131694de69920
Add upgrades meta files to /upgrades directory in Debian ISO.
Files include:
version
Version file to indicate the ISO release version
metadata.xml
Supportted upgrade path, and required patch
import.sh
Shell script to import the ISO load into StarlingX system
pxeboot-update-<rel-ver>.sh
Shell script to update pxeboot config file for new release
Test cases:
Build Debian ISO and visually inspect the existance of files
list above in /upgrades directory of Debian ISO.
Build Centos ISO with no changes.
Story: 2009303
Task: 45830
Change-Id: I1f0b42c6c37943b19bdf5dd7baaf81da5d1eef7a
Signed-off-by: Bin Qian <bin.qian@windriver.com>
This update only affects system node installation.
This update makes the following changes to the system node
install grub menus in support of AIO DX:
- add std and rt kernel specification for the specified install type
- add the defaultkernel=<vmlinux> option for the specified install type
- add console=tty1 to include graphical output during install process
- remove obsolete persistent iface naming net.ifnames=0 kernel option
- remove unnecessary 'installer-' kernel and initrd prefix
- drive option order consistenty throughout the debian menus
- add kickstart directory to line up with the ISO layout
Test Plan:
PASS: Verify Debian build
PASS: Verify graphical and serial output during install
PASS: Verify AIO Controller-1 Install (standard and lowlatency)
Depends-On: https://review.opendev.org/c/starlingx/metal/+/840997
Story: 2009968
Task: 45684
Signed-off-by: Eric MacDonald <eric.macdonald@windriver.com>
Change-Id: Ic3697f4762c2985e599a0955c9785df6c9973db7
This update adds a new pxeboot_setup.sh script that can be used
to tailor the controller-0 BIOS and UEFI install grub menus for
for a specific lab's controller-0 target server installation.
Some controller-0 installation UEFI and BIOS grub menus' variable
replacement labels have been added to and others slightly modified
to better serve the new setup utility.
Features:
- Updating both BIOS and EFI grub files
- Preserves the command used to create tailored grub files
- Preserves replaced grub files as .<name>
- Supported variable replacements are
xxxFEEDxxx - path between http server base and mounted iso
xxxSYSTEMxxx - menu entry selection index ; default 2 (AIO)
xxxINSTDEVxxx - install device name ; default /dev/sda
xxxPXEBOOTxxx - /pxeboot offset path to bzImage/initrd
xxxBASE_URLxxx - pxeboot server URL
Tool Usage:
The caller specifies an --input <path> argument to the debian
controller-0 installer grub file templates which contain the
above variable replacement labels.
The --output <path> argument is used to specify where to create
the variable replaced system specific grub files.
A --system <index> argument specififying the default menu entry
index to use.
The remaining arguments are used to specify various paths and
optionally the install device. Refer to the pxeboot_setup.sh
script header, code comment or full --help for more details.
Utility Arguments:
--input <path>
--output <path>
--feed <path>
--pxeboot <path>
--url <url>
--device </dev/sdx>
--system <0..3>
Example Usage:
pxeboot_setup.sh --input /path/to/grub/template/dir
--output /path/to/target/iso/mount
--pxeboot pxeboot/offset/to/bzImage_initrd
--feed pxeboot/offset/to/target_feed
--url http://###.###.###.###
--instdev /dev/sde
--system 3
Test Plan: for both BIOS and UEFI servers
PASS: Verify End-To-End user experience using the script and menus
from a mounted iso or feed to setup the grub install menus.
Script:
PASS: Verify grub menu selection by number and by string (default)
PASS: Verify system type install selection of all menu paths
PASS: Verify argument and option success path handling
PASS: Verify argument and option failure path handling
PASS: Verify shellcheck script static analysis
PASS: Verify saving of replaced menus as '.' files
PASS: Verify creation of command file in menus target dir
PASS: Verify default device and override handling
PASS: Verify exit 0 on success and exit 1 on failure.
PASS: Verify script usage help screen
PASS: Verify ttyS0 override to ttySx where x=0..3
Install:
PASS: Verify system install of all menu entries
PASS: Verify menu selection handling without numbered prefixes
PASS: Verify graphical and console submenu of each main menu
PASS: Verify graphical logging vs console logging
Story: 2009301
Task: 45547
Signed-off-by: Eric MacDonald <eric.macdonald@windriver.com>
Change-Id: I1faf3ea305557d990ed7b03418c45804b71878b7
Ansible bootstrap will fail if this directory exists
Test Plan:
PASS: Build package and ISO
PASS: Install ISO for AIO-SX
PASS: ansible bootstrap works and creates the symlink
Story: 2009301
Task: 44854
Signed-off-by: Eric MacDonald <eric.macdonald@windriver.com>
Change-Id: If449648b08c3a4b6afec56db7984f16094ba0b7e
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