root/build-tools
Li Zhou cd58ab18c1 debian: secure boot: add scripts for remote signing
Add scripts for supporting building image for board with
secure boot enabled.

The signing process in script sign-secure-boot_debian:
(1) The kernel/grub efi images are obtained from extracted kernel/grub
packages, and they are sent to signing server and signed there and
copied back. Then the kernel/grub packages are repacked with the
signed efi images.
(2) The file sign_rootfs-post-scripts is inserted to where the
hook script "rootfs-post-scripts" is defined in the lat config file
base-bullseye.yaml. This will sign kernel images and LockDown.efi
on signing sever in the lat build process.
(3) The file sign_initramfs-sign-script is inserted to where the hook
script "initramfs-sign-script" is defined in the lat config file
base-bullseye.yaml. This will sign initramfs and mini initrd in
the lat build process.
(4) EFI_SECURE_BOOT is changed from disabled to enabled.

Build process for signed image is as below:
(1) Prepare keys on dockers and signing server to setup access
to signing server without password:
Use "ssh-keygen -t rsa" to create a ssh key pair, e.g.
    id_rsa.pub and id_rsa.

Prepare on lat docker:
    mkdir ~/.ssh
    copy id_rsa to ~/.ssh directory
Prepare on builder docker:
    mkdir ~/.ssh
    copy id_rsa to ~/.ssh directory
    sudo mkdir /root/.ssh
    sudo copy id_rsa to /root/.ssh directory
(https://review.opendev.org/c/starlingx/tools/+/872742
 simplifies those steps on dockers as:
 stx control keys-add --key-type=signing-server --key=[key file].)

Prepare on signing server:
    append id_rsa.pub to the file on signing server:
    /home/${signing_user}/.ssh/authorized_keys

(2) Run on builder docker:
export SIGNING_SERVER="signing_user@signing_server_ip"
<PATH>/sign-secure-boot_debian
build-image

The <PATH> is:
/localdisk/designer/${USER}/stx/cgcs-root/build-tools

Test plan:
 The tests are done with all the changes which involve tools/integ/root
 repo and lat-sdk.sh and signing tools on signing server.
 - PASS: Follow below build process to build unsigned image
         and build successfully:
         build-pkgs
         build-image
 - PASS: Follow below build process to build signed image
         and build successfully:
         build-pkgs
         export SIGNING_SERVER="user@signing_server_ip"
         <PATH>/sign-secure-boot_debian
         build-image
 - PASS: Do AIO-DX installation successfully for both
         unsigned image on secure boot disabled lab and
         signed image on secure boot enabled lab.
 - PASS: Failure path tests include:
         [NG]unsigned image on secure boot enabled
         [NG]image signed with wrong key on secure boot enabled
         [OK]signed image on secure boot disabled
         NG: fail to boot; OK: succeed to boot.

Depends-On: https://review.opendev.org/c/starlingx/tools/+/868918

Story: 2009221
Task: 47097

Signed-off-by: Li Zhou <li.zhou@windriver.com>
Change-Id: Iea0d03c39f6d3d1fa84577e870675ab103937fbd
2023-02-23 08:10:30 +00:00
..
branching Add access-token option to branching tools 2022-11-22 16:15:21 -05:00
build_guest build-guest: update RPM lists + misc fixes 2021-08-09 13:25:28 -04:00
build_iso minimal_rpm_list.txt: ebtables->iptables-ebtables 2021-10-29 16:21:19 -04:00
build_minimal_iso Add support CentOS-8/dnf/mock-2.6 based builds 2020-12-08 14:13:28 -05:00
build-docker-images Add tag stx.8.0-v1.0.3 to vRAN docker images 2022-12-08 19:47:58 +00:00
build-wheels Add zerorpc wheel package 2022-12-08 15:44:53 +00:00
certificates StarlingX open source release updates 2018-06-01 07:45:23 -07:00
deb-utils debian: port helm chart script to debian 2022-05-10 17:13:13 -04:00
mk Uprev grub2 and shim 2018-06-27 13:04:02 -04:00
repo_files centos7: delete yum.pid after yum-builddep 2021-03-25 18:25:23 -04:00
requirements Temporary downgrade SQLAlchemy version in mock environments 2021-08-17 14:26:54 +03:00
signing StarlingX open source release updates 2018-06-01 07:45:23 -07:00
stx Reuse fix to not rebuild if no source changes 2022-12-16 13:12:03 -08:00
unit-tests debian: port helm chart script to debian 2022-05-10 17:13:13 -04:00
audit-pkgs Build script readiness for renaming cgcs-centos-repo to centos-repo 2020-09-24 11:59:55 -04:00
build-avoidance-utils.sh build-avoidance: ensure we can write to a copied build environment. 2022-01-17 11:24:33 -05:00
build-guest build-guest: accept extra RPMs on command line 2021-08-16 09:29:05 -04:00
build-helm-charts.sh Update fluxcd manifests build python interpreter 2022-10-20 16:29:07 -03:00
build-img Update build image to look for update-iso-centos.sh script 2022-12-07 21:04:22 +00:00
build-iso build-iso: Create package_checksums file within iso 2022-05-03 12:41:05 -04:00
build-pkg-srpm StarlingX open source release updates 2018-06-01 07:45:23 -07:00
build-pkgs Add support CentOS-8/dnf/mock-2.6 based builds 2020-12-08 14:13:28 -05:00
build-pkgs-parallel Remove references to cgcs-3rd-party-repo 2020-10-27 14:26:03 -04:00
build-pkgs-serial Remove references to cgcs-3rd-party-repo 2020-10-27 14:26:03 -04:00
build-remote-cli.sh Support custom docker registries for remote cli 2020-03-18 16:29:49 +02:00
build-rpms Build Avoidance 2018-09-17 16:41:31 -04:00
build-rpms-parallel build-rpms: fix typo in temp files removal 2022-09-27 16:10:50 -04:00
build-rpms-serial build-rpms: fix typo in temp files removal 2022-09-27 16:10:50 -04:00
build-srpms Build Avoidance 2018-09-17 16:41:31 -04:00
build-srpms-common.sh Eliminate intermediate .tox files during build 2020-08-27 11:01:45 -05:00
build-srpms-parallel Exclude .tox folder when checking file ages 2020-12-21 15:25:27 -05:00
build-srpms-serial Exclude .tox folder when checking file ages 2020-12-21 15:25:27 -05:00
Cached_Data.txt StarlingX open source release updates 2018-06-01 07:45:23 -07:00
classify Build: Improved logging, error handling, and other small fixes 2018-08-29 16:31:09 -04:00
create_dependancy_cache.py Build script readiness for renaming cgcs-tis-repo to local-repo 2020-09-24 12:03:00 -04:00
create-yum-conf centos7: delete yum.pid after yum-builddep 2021-03-25 18:25:23 -04:00
deb-utils.sh debian: port helm chart script to debian 2022-05-10 17:13:13 -04:00
default_build_srpm Add support CentOS-8/dnf/mock-2.6 based builds 2020-12-08 14:13:28 -05:00
find_klm StarlingX open source release updates 2018-06-01 07:45:23 -07:00
find_patched_srpms_needing_upgrade StarlingX open source release updates 2018-06-01 07:45:23 -07:00
git-repo-utils.sh branching: Add retries to git push/review commands 2021-12-16 15:16:30 -05:00
git-utils.sh Add access-token option to branching tools 2022-11-22 16:15:21 -05:00
helm_chart_modify.py Merge "FluxCD: Add image versions from image record files" 2022-06-08 17:10:45 +00:00
image-utils.sh Update to build tools to support Build layering. 2020-02-07 16:36:40 -05:00
ip_report.py Remove references to cgcs-3rd-party-repo 2020-10-27 14:26:03 -04:00
make-installer-images.sh update-pxe-network-installer: add updated firmwares 2022-05-23 14:18:43 +00:00
mock_cfg_to_yum_conf.py Python 3 compatibility: use print as a function. 2018-10-12 13:42:44 +00:00
mockchain-parallel Add support CentOS-8/dnf/mock-2.6 based builds 2020-12-08 14:13:28 -05:00
mockchain-parallel-1.3.4 Update to build tools to support Build layering. 2020-02-07 16:36:40 -05:00
mockchain-parallel-1.4.16 Update to build tools to support Build layering. 2020-02-07 16:36:40 -05:00
mockchain-parallel-2.6 Add support CentOS-8/dnf/mock-2.6 based builds 2020-12-08 14:13:28 -05:00
mockchain-parallel-2.7 Support mock >= 2.7 2021-02-19 12:33:58 -05:00
modify-build-cfg centos7: delete yum.pid after yum-builddep 2021-03-25 18:25:23 -04:00
patch_rebase_1 Build script readiness for renaming cgcs-centos-repo to centos-repo 2020-09-24 11:59:55 -04:00
patch_rebase_2 Build script readiness for renaming cgcs-centos-repo to centos-repo 2020-09-24 11:59:55 -04:00
patch_rebase_3 Build script readiness for renaming cgcs-centos-repo to centos-repo 2020-09-24 11:59:55 -04:00
patch_rebase_4 Build script readiness for renaming cgcs-centos-repo to centos-repo 2020-09-24 11:59:55 -04:00
patch-iso patch-iso: Fix up paths 2022-04-11 09:25:08 -04:00
patch-iso-debian Add ISO_LABEL to patched iso 2022-12-14 15:28:42 -08:00
pkg-manager-utils.sh Add support CentOS-8/dnf/mock-2.6 based builds 2020-12-08 14:13:28 -05:00
repo-utils.sh manifest_get_default_revision must deal with / in branch names 2022-02-01 11:03:43 -05:00
sign_initramfs-sign-script debian: secure boot: add scripts for remote signing 2023-02-23 08:10:30 +00:00
sign_iso_formal.sh cleanup signing scripts 2018-09-07 14:44:37 -04:00
sign_patch_formal.sh cleanup signing scripts 2018-09-07 14:44:37 -04:00
sign_rootfs-post-scripts debian: secure boot: add scripts for remote signing 2023-02-23 08:10:30 +00:00
sign-rpms Prepare the build tools for code restucturing 2019-09-05 15:18:10 -04:00
sign-secure-boot Add -v flag to warn secure boot signing of the /var prefix 2021-12-30 16:35:52 -05:00
sign-secure-boot_debian debian: secure boot: add scripts for remote signing 2023-02-23 08:10:30 +00:00
source_lookup.txt Remove 'django_openstack_auth' reference from source_lookup.txt 2021-07-13 23:16:25 +05:30
spec-utils enable pbr version 2020-06-08 16:54:14 +08:00
srpm-utils srpm-utils: Recognize /usr/bin/mkdir as well 2021-10-27 13:35:09 -04:00
stxRpmUtils.py Correct build failure after mock updrade 2019-06-06 13:39:34 -04:00
sync_jenkins.sh Remove references to cgcs-3rd-party-repo 2020-10-27 14:26:03 -04:00
sync-jenkins Remove references to cgcs-3rd-party-repo 2020-10-27 14:26:03 -04:00
tis.macros StarlingX open source release updates 2018-06-01 07:45:23 -07:00
update-efiboot-image Merge "Fix update-efiboot-image loop device leak" 2020-10-28 13:46:04 +00:00
update-pxe-network-installer build-tools: discover firmware files for installer 2022-06-03 10:55:56 -04:00
url_utils.sh branching: better control over reviews & manifests 2021-06-22 12:58:34 -04:00
utils.sh debian: code cleanup 2022-05-10 17:09:08 -04:00
wheel-utils.sh Enable build of docker images, charts and wheels from a layered build 2020-04-08 13:58:41 -04:00
wrs_orig.txt StarlingX open source release updates 2018-06-01 07:45:23 -07:00
yum-builddep-wrapper centos7: delete yum.pid after yum-builddep 2021-03-25 18:25:23 -04:00