Skip to content

Commit e757053

Browse files
authored
Merge pull request #26 from Dasharo/add-qemu-support
Add Qemu adn UEFI Capsule Update support
2 parents 6abd59d + fd823a9 commit e757053

21 files changed

Lines changed: 2051 additions & 1450 deletions

Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ install:
1111
install -m 0755 include/dts-environment.sh $(DESTDIR)$(SBINDIR)
1212
install -m 0755 include/dts-functions.sh $(DESTDIR)$(SBINDIR)
1313
install -m 0755 include/dts-subscription.sh $(DESTDIR)$(SBINDIR)
14+
install -m 0755 include/hal/dts-hal.sh $(DESTDIR)$(SBINDIR)
15+
install -m 0755 include/hal/common-mock-func.sh $(DESTDIR)$(SBINDIR)
1416

1517
install -m 0755 scripts/cloud_list $(DESTDIR)$(SBINDIR)
1618
install -m 0755 scripts/dasharo-deploy $(DESTDIR)$(SBINDIR)

include/dts-environment.sh

Lines changed: 108 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@
55
# SPDX-License-Identifier: Apache-2.0
66

77
# shellcheck disable=SC2034
8+
# shellcheck source=../include/hal/dts-hal.sh
9+
source $DTS_HAL
10+
# shellcheck source=../include/dts-functions.sh
11+
source $DTS_FUNCS
812

913
# Text colors:
1014
NORMAL='\033[0m'
@@ -13,15 +17,22 @@ YELLOW='\033[0;33m'
1317
GREEN='\033[0;32m'
1418
BLUE='\033[0;36m'
1519

16-
# DPP options:
20+
# DPP variables:
1721
DPP_SERVER_ADDRESS="https://dl.dasharo.com"
1822
DPP_SERVER_USER_ALIAS="premium"
1923
DPP_PACKAGE_MANAGER_DIR="/var/dasharo-package-manager"
2024
DPP_AVAIL_PACKAGES_LIST="$DPP_PACKAGE_MANAGER_DIR/packages-list.json"
2125
DPP_PACKAGES_SCRIPTS_PATH="$DPP_PACKAGE_MANAGER_DIR/packages-scripts"
2226
DPP_SUBMENU_JSON="$DPP_PACKAGES_SCRIPTS_PATH/submenu.json"
27+
DPP_CREDENTIAL_FILE="/etc/cloud-pass"
28+
FW_STORE_URL="${FW_STORE_URL_DEV:-https://dl.3mdeb.com/open-source-firmware/Dasharo}"
29+
FW_STORE_URL_DPP="https://cloud.3mdeb.com/public.php/webdav"
30+
CLOUD_REQUEST="X-Requested-With: XMLHttpRequest"
31+
BASE_CLOUDSEND_LOGS_URL="39d4biH4SkXD8Zm"
32+
BASE_CLOUDSEND_PASSWORD="1{\[\k6G"
33+
DEPLOY_REPORT="false"
2334

24-
# DTS options:
35+
# DTS menu options:
2536
HCL_REPORT_OPT="1"
2637
DASHARO_FIRM_OPT="2"
2738
REST_FIRM_OPT="3"
@@ -42,20 +53,24 @@ SEND_LOGS_OPT_LOW="$(echo $SEND_LOGS_OPT | awk '{print tolower($0)}')"
4253
VERBOSE_OPT="V"
4354
VERBOSE_OPT_LOW="$(echo $VERBOSE_OPT | awk '{print tolower($0)}')"
4455

45-
SYSTEM_VENDOR="${SYSTEM_VENDOR:-$(dmidecode -s system-manufacturer)}"
46-
SYSTEM_MODEL="${SYSTEM_MODEL:-$(dmidecode -s system-product-name)}"
47-
BOARD_VENDOR="${BOARD_VENDOR:-$(dmidecode -s system-manufacturer)}"
48-
BOARD_MODEL="${BOARD_MODEL:-$(dmidecode -s baseboard-product-name)}"
56+
# Hardware variables:
57+
SYSTEM_VENDOR="$($DMIDECODE dump_var_mock -s system-manufacturer)"
58+
SYSTEM_MODEL="$($DMIDECODE dump_var_mock -s system-product-name)"
59+
BOARD_MODEL="$($DMIDECODE dump_var_mock -s baseboard-product-name)"
60+
CPU_VERSION="$($DMIDECODE dump_var_mock -s processor-version)"
4961

50-
CPU_VERSION="$(dmidecode -s processor-version)"
51-
BIOS_VENDOR="${BIOS_VENDOR:-$(dmidecode -s bios-vendor)}"
52-
BIOS_VERSION="${BIOS_VERSION:-$(dmidecode -s bios-version)}"
62+
# Firmware variables
63+
BIOS_VENDOR="$($DMIDECODE dump_var_mock -s bios-vendor)"
64+
BIOS_VERSION="$($DMIDECODE dump_var_mock -s bios-version)"
5365
DASHARO_VERSION="$(echo $BIOS_VERSION | cut -d ' ' -f 3 | tr -d 'v')"
5466
DASHARO_FLAVOR="$(echo $BIOS_VERSION | cut -d ' ' -f 1,2)"
5567

56-
# path to temporary files, created while deploying or updating Dasharo firmware
57-
BIOS_UPDATE_FILE="/tmp/biosupdate.rom"
58-
EC_UPDATE_FILE="/tmp/ecupdate.rom"
68+
# Paths to temporary files, created while deploying or updating Dasharo
69+
# firmware, are used globally for both: updating via binaries and via UEFI
70+
# Capsule Update.
71+
BIOS_UPDATE_FILE="/tmp/biosupdate"
72+
BIOS_DUMP_FILE="/tmp/bios.bin"
73+
EC_UPDATE_FILE="/tmp/ecupdate"
5974
BIOS_HASH_FILE="/tmp/bioshash.sha256"
6075
EC_HASH_FILE="/tmp/echash.sha256"
6176
BIOS_SIGN_FILE="/tmp/biossignature.sig"
@@ -65,10 +80,6 @@ RESIGNED_BIOS_UPDATE_FILE="/tmp/biosupdate_resigned.rom"
6580
SYSTEM_UUID_FILE="/tmp/system_uuid.txt"
6681
SERIAL_NUMBER_FILE="/tmp/serial_number.txt"
6782

68-
# default value for flash chip related information
69-
FLASH_CHIP_SELECT=""
70-
FLASH_CHIP_SIZE=""
71-
7283
# dasharo-deploy backup cmd related variables, do we still use and need this as
7384
# backup is placed in HCL?
7485
ROOT_DIR="/"
@@ -77,50 +88,104 @@ FW_BACKUP_DIR="${ROOT_DIR}${FW_BACKUP_NAME}"
7788
FW_BACKUP_TAR="${FW_BACKUP_DIR}.tar.gz"
7889
FW_BACKUP_TAR="$(echo "$FW_BACKUP_TAR" | sed 's/\ /_/g')"
7990

80-
# path to system files
91+
# Paths to system files
8192
ERR_LOG_FILE="/var/local/dts-err.log"
8293
FLASHROM_LOG_FILE="/var/local/flashrom.log"
8394
FLASH_INFO_FILE="/tmp/flash_info"
8495
OS_VERSION_FILE="/etc/os-release"
8596
KEYS_DIR="/tmp/devkeys"
8697

87-
# path to system commands
88-
CMD_POWEROFF="/sbin/poweroff"
89-
CMD_REBOOT="/sbin/reboot"
90-
CMD_SHELL="/bin/bash"
98+
# Paths to system commands:
99+
CMD_SHELL="bash"
100+
101+
# Paths to DTS commands:
91102
CMD_DASHARO_HCL_REPORT="/usr/sbin/dasharo-hcl-report"
92103
CMD_NCMENU="/usr/sbin/novacustom_menu"
93104
CMD_DASHARO_DEPLOY="/usr/sbin/dasharo-deploy"
94105
CMD_CLOUD_LIST="/usr/sbin/cloud_list"
95106
CMD_EC_TRANSITION="/usr/sbin/ec_transition"
96107

97-
# default values for flashrom programmer
98-
FLASHROM="${FLASHROM:-flashrom}"
108+
# Configuration variables declaration and default values (see dts-functions.sh/
109+
# board_config function for more inf.):
110+
# Versions and names:
111+
declare DASHARO_REL_NAME
112+
declare DASHARO_REL_VER
113+
declare DASHARO_REL_VER_DPP
114+
declare DASHARO_REL_VER_DPP_CAP
115+
declare HEADS_REL_VER_DPP
116+
declare DASHARO_REL_VER_DPP_SEABIOS
117+
declare COMPATIBLE_EC_FW_VERSION
118+
# and for capsules:
119+
declare DASHARO_REL_VER_CAP
120+
declare DASHARO_REL_VER_DPP_CAP
121+
# To use capsule update a platform should already run a firmware with capsule
122+
# update support. Therefore DTS should check, from which Dasharo firmware
123+
# version capsule update is supported for the platform and compare with the
124+
# version of the currently installed firmware. This variable holds the version
125+
# from which Dasharo firmware supports capsule update for current patform. It is
126+
# set in board_config:
127+
declare DASHARO_SUPPORT_CAP_FROM
128+
# Links to files:
129+
declare BIOS_LINK_COMM
130+
declare BIOS_HASH_LINK_COMM
131+
declare BIOS_SIGN_LINK_COMM
132+
declare BIOS_LINK_DPP
133+
declare BIOS_HASH_LINK_DPP
134+
declare BIOS_SIGN_LINK_DPP
135+
declare BIOS_LINK_DPP_SEABIOS
136+
declare BIOS_HASH_LINK_DPP_SEABIOS
137+
declare BIOS_SIGN_LINK_DPP_SEABIOS
138+
declare EC_LINK_COMM
139+
declare EC_HASH_LINK_COMM
140+
declare EC_SIGN_LINK_COMM
141+
declare EC_LINK_DPP
142+
declare EC_HASH_LINK_DPP
143+
declare EC_SIGN_LINK_DPP
144+
declare HEADS_LINK_DPP
145+
declare HEADS_HASH_LINK_DPP
146+
declare HEADS_SIGN_LINK_DPP
147+
# and for capsules:
148+
declare BIOS_LINK_COMM_CAP
149+
declare BIOS_HASH_LINK_COMM_CAP
150+
declare BIOS_SIGN_LINK_COMM_CAP
151+
declare BIOS_LINK_DPP_CAP
152+
declare BIOS_HASH_LINK_DPP_CAP
153+
declare BIOS_SIGN_LINK_DPP_CAP
154+
declare EC_LINK_COMM_CAP
155+
declare EC_HASH_LINK_COMM_CAP
156+
declare EC_SIGN_LINK_COMM_CAP
157+
# Configs, are used in dasharo-deploy script:
158+
CAN_INSTALL_BIOS="false"
159+
HAVE_HEADS_FW="false"
160+
HAVE_EC="false"
161+
NEED_EC_RESET="false"
162+
NEED_SMBIOS_MIGRATION="false"
163+
NEED_SMMSTORE_MIGRATION="false"
164+
NEED_BOOTSPLASH_MIGRATION="false"
165+
NEED_BLOB_TRANSMISSION="false"
166+
NEED_ROMHOLE_MIGRATION="false"
167+
# Default flashrom parameters, may differ depending on a platform:
99168
PROGRAMMER_BIOS="internal"
100-
PROGRAMMER_EC="ite_ec"
101-
102-
DASHARO_ECTOOL="${DASHARO_ECTOOL:-dasharo_ectool}"
103-
104-
# variables defining Dasharo specific entries in DMI tables, used to check if
105-
# Dasharo FW is already installed
169+
PROGRAMMER_EC="ite_ec:boardmismatch=force,romsize=128K,autoload=disable"
170+
declare FLASHROM_ADD_OPT_UPDATE_OVERRIDE
171+
declare HEADS_SWITCH_FLASHROM_OPT_OVERRIDE
172+
# Platform-specific:
173+
declare PLATFORM_SIGN_KEY
174+
175+
# Other variables:
176+
# Default values for flash chip related information:
177+
declare FLASH_CHIP_SELECT
178+
declare FLASH_CHIP_SIZE
179+
# Default UEFI Capsule Update device:
180+
CAP_UPD_DEVICE="/dev/efi_capsule_loader"
181+
# Variables defining Dasharo specific entries in DMI tables, used to check if
182+
# Dasharo FW is already installed:
106183
DASHARO_VENDOR="3mdeb"
107184
DASHARO_NAME="Dasharo"
108-
109-
# most the time one flash chipset will be detected, for other cases (like for
110-
# ASUS KGPE-D16) we will test the following list in check_flash_chip function
185+
# Most the time one flash chipset will be detected, for other cases (like for
186+
# ASUS KGPE-D16) we will test the following list in check_flash_chip function:
111187
FLASH_CHIP_LIST="W25Q64BV/W25Q64CV/W25Q64FV W25Q64JV-.Q W25Q128.V..M"
112188

113-
# Dasharo Supporters Entrance variables
114-
DPP_credential_file="/etc/cloud-pass"
115-
FW_STORE_URL="${FW_STORE_URL_DEV:-https://dl.3mdeb.com/open-source-firmware/Dasharo}"
116-
FW_STORE_URL_DPP="https://cloud.3mdeb.com/public.php/webdav"
117-
CLOUD_REQUEST="X-Requested-With: XMLHttpRequest"
118-
119-
## base values
120-
BASE_CLOUDSEND_LOGS_URL="39d4biH4SkXD8Zm"
121-
BASE_CLOUDSEND_PASSWORD="1{\[\k6G"
122-
DEPLOY_REPORT="false"
123-
124189
BASE_DTS_LOGS_URL="xjBCYbzFdyq3WLt"
125190
DTS_LOGS_PASSWORD="/w\J&<y1"
126191

0 commit comments

Comments
 (0)