You've already forked dts-scripts
mirror of
https://github.com/Dasharo/dts-scripts.git
synced 2026-03-06 15:01:22 -08:00
@@ -5,6 +5,8 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
# shellcheck source=../include/hal/dts-hal.sh
|
||||
source $DTS_HAL
|
||||
|
||||
# Text colors:
|
||||
NORMAL='\033[0m'
|
||||
@@ -50,15 +52,14 @@ VERBOSE_OPT="V"
|
||||
VERBOSE_OPT_LOW="$(echo $VERBOSE_OPT | awk '{print tolower($0)}')"
|
||||
|
||||
# Hardware variables:
|
||||
SYSTEM_VENDOR="${SYSTEM_VENDOR:-$(dmidecode -s system-manufacturer)}"
|
||||
SYSTEM_MODEL="${SYSTEM_MODEL:-$(dmidecode -s system-product-name)}"
|
||||
BOARD_VENDOR="${BOARD_VENDOR:-$(dmidecode -s system-manufacturer)}"
|
||||
BOARD_MODEL="${BOARD_MODEL:-$(dmidecode -s baseboard-product-name)}"
|
||||
CPU_VERSION="$(dmidecode -s processor-version)"
|
||||
SYSTEM_VENDOR="$($DMIDECODE dump_var_mock -s system-manufacturer)"
|
||||
SYSTEM_MODEL="$($DMIDECODE dump_var_mock -s system-product-name)"
|
||||
BOARD_MODEL="$($DMIDECODE dump_var_mock -s baseboard-product-name)"
|
||||
CPU_VERSION="$($DMIDECODE dump_var_mock -s processor-version)"
|
||||
|
||||
# Firmware variables
|
||||
BIOS_VENDOR="${BIOS_VENDOR:-$(dmidecode -s bios-vendor)}"
|
||||
BIOS_VERSION="${BIOS_VERSION:-$(dmidecode -s bios-version)}"
|
||||
BIOS_VENDOR="$($DMIDECODE dump_var_mock -s bios-vendor)"
|
||||
BIOS_VERSION="$($DMIDECODE dump_var_mock -s bios-version)"
|
||||
DASHARO_VERSION="$(echo $BIOS_VERSION | cut -d ' ' -f 3 | tr -d 'v')"
|
||||
DASHARO_FLAVOR="$(echo $BIOS_VERSION | cut -d ' ' -f 1,2)"
|
||||
|
||||
@@ -66,6 +67,7 @@ DASHARO_FLAVOR="$(echo $BIOS_VERSION | cut -d ' ' -f 1,2)"
|
||||
# firmware, are used globally for both: updating via binaries and via UEFI
|
||||
# Capsule Update.
|
||||
BIOS_UPDATE_FILE="/tmp/biosupdate"
|
||||
BIOS_DUMP_FILE="/tmp/bios.bin"
|
||||
EC_UPDATE_FILE="/tmp/ecupdate"
|
||||
BIOS_HASH_FILE="/tmp/bioshash.sha256"
|
||||
EC_HASH_FILE="/tmp/echash.sha256"
|
||||
@@ -91,17 +93,15 @@ FLASH_INFO_FILE="/tmp/flash_info"
|
||||
OS_VERSION_FILE="/etc/os-release"
|
||||
KEYS_DIR="/tmp/devkeys"
|
||||
|
||||
# Paths to system commands
|
||||
CMD_POWEROFF="/sbin/poweroff"
|
||||
CMD_REBOOT="/sbin/reboot"
|
||||
CMD_SHELL="/bin/bash"
|
||||
# Paths to system commands:
|
||||
SHELL="bash"
|
||||
|
||||
# Paths to DTS commands:
|
||||
CMD_DASHARO_HCL_REPORT="/usr/sbin/dasharo-hcl-report"
|
||||
CMD_NCMENU="/usr/sbin/novacustom_menu"
|
||||
CMD_DASHARO_DEPLOY="/usr/sbin/dasharo-deploy"
|
||||
CMD_CLOUD_LIST="/usr/sbin/cloud_list"
|
||||
CMD_EC_TRANSITION="/usr/sbin/ec_transition"
|
||||
DASHARO_ECTOOL="${DASHARO_ECTOOL:-dasharo_ectool}"
|
||||
FLASHROM="${FLASHROM:-flashrom}"
|
||||
|
||||
# Configuration variables declaration and default values (see dts-functions.sh/
|
||||
# board_config function for more inf.):
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
source $DTS_ENV
|
||||
# shellcheck source=../include/dts-subscription.sh
|
||||
source $DTS_SUBS
|
||||
# shellcheck source=../include/hal/dts-hal.sh
|
||||
source $DTS_HAL
|
||||
|
||||
### Color functions:
|
||||
function echo_green() {
|
||||
@@ -53,7 +55,7 @@ check_if_ac() {
|
||||
fi
|
||||
|
||||
while true; do
|
||||
ac_status=$(cat ${_ac_file})
|
||||
ac_status=$($FSREAD_TOOL check_if_ac_mock cat ${_ac_file})
|
||||
|
||||
if [ "$ac_status" -eq 1 ]; then
|
||||
echo "AC adapter is connected. Continuing with firmware update."
|
||||
@@ -121,28 +123,28 @@ it5570_i2ec() {
|
||||
# TODO: Use /dev/port instead of iotools
|
||||
|
||||
# Address high byte
|
||||
iotools io_write8 0x2e 0x2e
|
||||
iotools io_write8 0x2f 0x11
|
||||
iotools io_write8 0x2e 0x2f
|
||||
iotools io_write8 0x2f $(($2>>8 & 0xff))
|
||||
$IOTOOLS io_write8 0x2e 0x2e
|
||||
$IOTOOLS io_write8 0x2f 0x11
|
||||
$IOTOOLS io_write8 0x2e 0x2f
|
||||
$IOTOOLS io_write8 0x2f $(($2>>8 & 0xff))
|
||||
|
||||
# Address low byte
|
||||
iotools io_write8 0x2e 0x2e
|
||||
iotools io_write8 0x2f 0x10
|
||||
iotools io_write8 0x2e 0x2f
|
||||
iotools io_write8 0x2f $(($2 & 0xff))
|
||||
$IOTOOLS io_write8 0x2e 0x2e
|
||||
$IOTOOLS io_write8 0x2f 0x10
|
||||
$IOTOOLS io_write8 0x2e 0x2f
|
||||
$IOTOOLS io_write8 0x2f $(($2 & 0xff))
|
||||
|
||||
# Data
|
||||
iotools io_write8 0x2e 0x2e
|
||||
iotools io_write8 0x2f 0x12
|
||||
iotools io_write8 0x2e 0x2f
|
||||
$IOTOOLS io_write8 0x2e 0x2e
|
||||
$IOTOOLS io_write8 0x2f 0x12
|
||||
$IOTOOLS io_write8 0x2e 0x2f
|
||||
|
||||
case $1 in
|
||||
"r")
|
||||
iotools io_read8 0x2f
|
||||
$IOTOOLS io_read8 0x2f
|
||||
;;
|
||||
"w")
|
||||
iotools io_write8 0x2f "$3"
|
||||
$IOTOOLS io_write8 0x2f "$3"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
@@ -350,11 +352,11 @@ board_config() {
|
||||
"V54x_6x_TU")
|
||||
# Dasharo 0.9.0-rc10 and higher have board model in baseboard-version
|
||||
if check_if_dasharo && compare_versions "$DASHARO_VERSION" 0.9.0-rc10; then
|
||||
BOARD_MODEL="$(dmidecode -s baseboard-version)"
|
||||
elif ! dasharo_ectool info 2>/dev/null; then
|
||||
BOARD_MODEL="$($DMIDECODE dump_var_mock -s baseboard-version)"
|
||||
elif ! $DASHARO_ECTOOL check_for_opensource_firm_mock info 2>/dev/null; then
|
||||
ask_for_model V540TU V560TU
|
||||
else
|
||||
BOARD_MODEL=$(dasharo_ectool info | grep "board:" |
|
||||
BOARD_MODEL=$($DASHARO_ECTOOL novacustom_check_sys_model_mock info | grep "board:" |
|
||||
sed -r 's|.*novacustom/(.*)|\1|' | awk '{print toupper($1)}')
|
||||
fi
|
||||
|
||||
@@ -387,7 +389,7 @@ board_config() {
|
||||
;;
|
||||
"V5xTNC_TND_TNE")
|
||||
if check_if_dasharo; then
|
||||
BOARD_MODEL="$(dmidecode -s baseboard-version)"
|
||||
BOARD_MODEL="$($DMIDECODE dump_var_mock -s baseboard-version)"
|
||||
else
|
||||
ask_for_model V540TNx V560TNx
|
||||
fi
|
||||
@@ -708,7 +710,7 @@ board_config() {
|
||||
}
|
||||
|
||||
check_flash_lock() {
|
||||
$FLASHROM -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} > /tmp/check_flash_lock 2> /tmp/check_flash_lock.err
|
||||
$FLASHROM check_flash_lock_mock -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} > /tmp/check_flash_lock 2> /tmp/check_flash_lock.err
|
||||
# Check in flashrom output if lock is enabled
|
||||
grep -q 'PR0: Warning:.* is read-only\|SMM protection is enabled' /tmp/check_flash_lock.err
|
||||
if [ $? -eq 0 ]; then
|
||||
@@ -721,22 +723,22 @@ check_flash_lock() {
|
||||
|
||||
check_flash_chip() {
|
||||
echo "Gathering flash chip and chipset information..."
|
||||
$FLASHROM -p "$PROGRAMMER_BIOS" --flash-name >> "$FLASH_INFO_FILE" 2>> "$ERR_LOG_FILE"
|
||||
$FLASHROM flash_chip_name_mock -p "$PROGRAMMER_BIOS" --flash-name >> "$FLASH_INFO_FILE" 2>> "$ERR_LOG_FILE"
|
||||
if [ $? -eq 0 ]; then
|
||||
echo -n "Flash information: "
|
||||
tail -n1 "$FLASH_INFO_FILE"
|
||||
FLASH_CHIP_SIZE=$(($($FLASHROM -p "$PROGRAMMER_BIOS" --flash-size 2>> /dev/null | tail -n1) / 1024 / 1024))
|
||||
FLASH_CHIP_SIZE=$(($($FLASHROM flash_chip_size_mock -p "$PROGRAMMER_BIOS" --flash-size 2>> /dev/null | tail -n1) / 1024 / 1024))
|
||||
echo -n "Flash size: "
|
||||
echo ${FLASH_CHIP_SIZE}M
|
||||
else
|
||||
for flash_name in $FLASH_CHIP_LIST
|
||||
do
|
||||
$FLASHROM -p "$PROGRAMMER_BIOS" -c "$flash_name" --flash-name >> "$FLASH_INFO_FILE" 2>> "$ERR_LOG_FILE"
|
||||
$FLASHROM flash_chip_name_mock -p "$PROGRAMMER_BIOS" -c "$flash_name" --flash-name >> "$FLASH_INFO_FILE" 2>> "$ERR_LOG_FILE"
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Chipset found"
|
||||
tail -n1 "$FLASH_INFO_FILE"
|
||||
FLASH_CHIP_SELECT="-c ${flash_name}"
|
||||
FLASH_CHIP_SIZE=$(($($FLASHROM -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} --flash-size 2>> /dev/null | tail -n1) / 1024 / 1024))
|
||||
FLASH_CHIP_SIZE=$(($($FLASHROM flash_chip_size_mock -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} --flash-size 2>> /dev/null | tail -n1) / 1024 / 1024))
|
||||
echo "Chipset size"
|
||||
echo ${FLASH_CHIP_SIZE}M
|
||||
break
|
||||
@@ -918,7 +920,7 @@ verify_artifacts() {
|
||||
|
||||
check_intel_regions() {
|
||||
|
||||
FLASH_REGIONS=$($FLASHROM -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} 2>&1)
|
||||
FLASH_REGIONS=$($FLASHROM check_intel_regions_mock -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} 2>&1)
|
||||
BOARD_HAS_FD_REGION=0
|
||||
BOARD_FD_REGION_RW=0
|
||||
BOARD_HAS_ME_REGION=0
|
||||
@@ -946,7 +948,7 @@ check_blobs_in_binary() {
|
||||
|
||||
# If there is no descriptor, there is no ME as well, so skip the check
|
||||
if [ $BOARD_HAS_FD_REGION -ne 0 ]; then
|
||||
ME_OFFSET=$(ifdtool -d $1 2> /dev/null | grep "Flash Region 2 (Intel ME):" | sed 's/Flash Region 2 (Intel ME)\://' |awk '{print $1;}')
|
||||
ME_OFFSET=$($IFDTOOL check_blobs_in_binary_mock -d $1 2> /dev/null | grep "Flash Region 2 (Intel ME):" | sed 's/Flash Region 2 (Intel ME)\://' | awk '{print $1;}')
|
||||
# Check for IFD signature at offset 0 (old descriptors)
|
||||
if [ "$(tail -c +0 $1|head -c 4|xxd -ps)" == "5aa5f00f" ]; then
|
||||
BINARY_HAS_FD=1
|
||||
@@ -976,11 +978,8 @@ check_if_me_disabled() {
|
||||
return
|
||||
fi
|
||||
|
||||
# Check if HECI present
|
||||
# FIXME: what if HECI is not device 16.0?
|
||||
if [ -d /sys/class/pci_bus/0000:00/device/0000:00:16.0 ]; then
|
||||
# Check ME Current Operation Mode at offset 0x40 bits 19:16
|
||||
ME_OPMODE="$(setpci -s 00:16.0 42.B 2> /dev/null | cut -c2-)"
|
||||
if check_if_heci_present; then
|
||||
ME_OPMODE="$(check_me_op_mode)"
|
||||
if [ $ME_OPMODE == "0" ]; then
|
||||
echo "ME is not disabled" >> $ERR_LOG_FILE
|
||||
return
|
||||
@@ -1015,8 +1014,8 @@ check_if_me_disabled() {
|
||||
fi
|
||||
else
|
||||
# If we are running coreboot, check for status in logs
|
||||
cbmem -1 | grep -q "ME is disabled" && ME_DISABLED=1 && return # HECI (soft) disabled
|
||||
cbmem -1 | grep -q "ME is HAP disabled" && ME_DISABLED=1 && return # HAP disabled
|
||||
$CBMEM check_if_me_disabled_mock -1 | grep -q "ME is disabled" && ME_DISABLED=1 && return # HECI (soft) disabled
|
||||
$CBMEM check_if_me_disabled_mock -1 | grep -q "ME is HAP disabled" && ME_DISABLED=1 && return # HAP disabled
|
||||
# TODO: If proprietary BIOS, then also try to check SMBIOS for ME FWSTS
|
||||
# BTW we could do the same in coreboot, expose FWSTS in SMBIOS before it
|
||||
# gets disabled
|
||||
@@ -1061,10 +1060,10 @@ set_flashrom_update_params() {
|
||||
# We need to read whole binary (or BIOS region), otherwise cbfstool will
|
||||
# return different attributes for CBFS regions
|
||||
echo "Checking flash layout."
|
||||
$FLASHROM -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} ${FLASHROM_ADD_OPT_UPDATE} -r /tmp/bios.bin > /dev/null 2>&1
|
||||
if [ $? -eq 0 ] && [ -f "/tmp/bios.bin" ]; then
|
||||
BOARD_FMAP_LAYOUT=$(cbfstool /tmp/bios.bin layout -w 2> /dev/null)
|
||||
BINARY_FMAP_LAYOUT=$(cbfstool $1 layout -w 2> /dev/null)
|
||||
$FLASHROM read_flash_layout_mock -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} ${FLASHROM_ADD_OPT_UPDATE} -r $BIOS_DUMP_FILE > /dev/null 2>&1
|
||||
if [ $? -eq 0 ] && [ -f "$BIOS_DUMP_FILE" ]; then
|
||||
BOARD_FMAP_LAYOUT=$($CBFSTOOL layout_mock $BIOS_DUMP_FILE layout -w 2> /dev/null)
|
||||
BINARY_FMAP_LAYOUT=$($CBFSTOOL layout_mock $1 layout -w 2> /dev/null)
|
||||
diff <(echo "$BOARD_FMAP_LAYOUT") <(echo "$BINARY_FMAP_LAYOUT") > /dev/null 2>&1
|
||||
# If layout is identical, perform standard update using FMAP only
|
||||
if [ $? -eq 0 ]; then
|
||||
@@ -1269,7 +1268,7 @@ You can find more info about HCL in docs.dasharo.com/glossary\r"
|
||||
show_ram_inf() {
|
||||
# Get the data:
|
||||
local data=""
|
||||
data=$(dmidecode)
|
||||
data=$($DMIDECODE)
|
||||
|
||||
# Initialize an empty array to store the extracted values:
|
||||
local -a memory_devices_array
|
||||
@@ -1325,7 +1324,7 @@ show_hardsoft_inf() {
|
||||
echo -e "${BLUE}**${NORMAL} HARDWARE INFORMATION ${NORMAL}"
|
||||
echo -e "${BLUE}*********************************************************${NORMAL}"
|
||||
echo -e "${BLUE}**${YELLOW} System Inf.: ${NORMAL}${SYSTEM_VENDOR} ${SYSTEM_MODEL}"
|
||||
echo -e "${BLUE}**${YELLOW} Baseboard Inf.: ${NORMAL}${BOARD_VENDOR} ${BOARD_MODEL}"
|
||||
echo -e "${BLUE}**${YELLOW} Baseboard Inf.: ${NORMAL}${SYSTEM_VENDOR} ${BOARD_MODEL}"
|
||||
echo -e "${BLUE}**${YELLOW} CPU Inf.: ${NORMAL}${CPU_VERSION}"
|
||||
show_ram_inf
|
||||
echo -e "${BLUE}*********************************************************${NORMAL}"
|
||||
@@ -1564,11 +1563,11 @@ footer_options(){
|
||||
;;
|
||||
"${POWEROFF_OPT_UP}" | "${POWEROFF_OPT_LOW}")
|
||||
send_dts_logs
|
||||
${CMD_POWEROFF}
|
||||
${POWEROFF}
|
||||
;;
|
||||
"${REBOOT_OPT_UP}" | "${REBOOT_OPT_LOW}")
|
||||
send_dts_logs
|
||||
${CMD_REBOOT}
|
||||
${REBOOT}
|
||||
;;
|
||||
"${SEND_LOGS_OPT}" | "${SEND_LOGS_OPT_LOW}")
|
||||
if [ "${SEND_LOGS_ACTIVE}" == "true" ]; then
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
source $DTS_ENV
|
||||
# shellcheck source=../include/dts-functions.sh
|
||||
source $DTS_FUNCS
|
||||
# shellcheck source=../include/hal/dts-hal.sh
|
||||
source $DTS_HAL
|
||||
|
||||
update_result() {
|
||||
TOOL=$1
|
||||
@@ -68,32 +70,32 @@ if [ $DEPLOY_REPORT = "false" ]; then
|
||||
echo "Getting hardware information. It will take a few minutes..."
|
||||
fi
|
||||
# echo "Dumping PCI configuration space and topology..."
|
||||
lspci -nnvvvxxxx > logs/lspci.log 2> logs/lspci.err.log
|
||||
$LSPCI -nnvvvxxxx > logs/lspci.log 2> logs/lspci.err.log
|
||||
update_result "PCI configuration space and topology" logs/lspci.err.log
|
||||
printf '## |\r'
|
||||
|
||||
# echo "Dumping USB devices and topology..."
|
||||
lsusb -vvv > logs/lsusb.log 2> logs/lsusb.err.log
|
||||
$LSUSB -vvv > logs/lsusb.log 2> logs/lsusb.err.log
|
||||
update_result "USB devices and topology" logs/lsusb.err.log
|
||||
printf '#### |\r'
|
||||
|
||||
# echo "Dumping Super I/O configuration..."
|
||||
superiotool -deV > logs/superiotool.log 2> logs/superiotool.err.log
|
||||
$SUPERIOTOOL -deV > logs/superiotool.log 2> logs/superiotool.err.log
|
||||
update_result "Super I/O configuration" logs/superiotool.err.log
|
||||
printf '###### |\r'
|
||||
|
||||
# echo "Dumping Embedded Controller configuration (this may take a while if EC is not present)..."
|
||||
ectool -ip > logs/ectool.log 2> logs/ectool.err.log
|
||||
$ECTOOL -ip > logs/ectool.log 2> logs/ectool.err.log
|
||||
update_result "EC configuration" logs/ectool.err.log
|
||||
printf '######## |\r'
|
||||
|
||||
# echo "Dumping MSRs..."
|
||||
msrtool > logs/msrtool.log 2> logs/msrtool.err.log
|
||||
$MSRTOOL > logs/msrtool.log 2> logs/msrtool.err.log
|
||||
update_result "MSRs" logs/msrtool.err.log
|
||||
printf '########## |\r'
|
||||
|
||||
# echo "Dumping SMBIOS tables..."
|
||||
dmidecode > logs/dmidecode.log 2> logs/dmidecode.err.log
|
||||
$DMIDECODE > logs/dmidecode.log 2> logs/dmidecode.err.log
|
||||
update_result "SMBIOS tables" logs/dmidecode.err.log
|
||||
printf '############ |\r'
|
||||
|
||||
@@ -121,12 +123,12 @@ update_result "GPIO configuration C header files" logs/intelp2m.err.log
|
||||
printf '#################### |\r'
|
||||
|
||||
# echo "Dumping kernel dmesg..."
|
||||
dmesg > logs/dmesg.log 2> logs/dmesg.err.log
|
||||
$DMESG > logs/dmesg.log 2> logs/dmesg.err.log
|
||||
update_result "kernel dmesg" logs/dmesg.err.log
|
||||
printf '###################### |\r'
|
||||
|
||||
# echo "Dumping ACPI tables..."
|
||||
acpidump > logs/acpidump.log 2> logs/acpidump.err.log
|
||||
$ACPIDUMP > logs/acpidump.log 2> logs/acpidump.err.log
|
||||
update_result "ACPI tables" logs/acpidump.err.log
|
||||
printf '######################## |\r'
|
||||
|
||||
@@ -190,9 +192,9 @@ if [ $BOARD_HAS_FD_REGION -eq 1 ]; then
|
||||
# GBE region is present and not locked, read it as well
|
||||
FLASHROM_ADD_OPT_READ+=" -i gbe"
|
||||
fi
|
||||
else
|
||||
# No descriptor, probably safe to read everything
|
||||
FLASHROM_ADD_OPT_READ=""
|
||||
else
|
||||
# No descriptor, probably safe to read everything
|
||||
FLASHROM_ADD_OPT_READ=""
|
||||
fi
|
||||
|
||||
$FLASHROM -V -p internal:laptop=force_I_want_a_brick ${FLASH_CHIP_SELECT} -r logs/rom.bin ${FLASHROM_ADD_OPT_READ} > logs/flashrom_read.log 2> logs/flashrom_read.err.log
|
||||
@@ -233,12 +235,12 @@ update_result "DIMMs information" logs/decode-dimms.err.log
|
||||
printf '########################################## |\r'
|
||||
|
||||
# echo "Getting CBMEM table..."
|
||||
cbmem > logs/cbmem.log 2> logs/cbmem.err.log
|
||||
$CBMEM > logs/cbmem.log 2> logs/cbmem.err.log
|
||||
update_result "CBMEM table information" logs/cbmem.err.log
|
||||
printf '############################################ |\r'
|
||||
|
||||
# echo "Getting CBMEM console..."
|
||||
cbmem -1 > logs/cbmem_console.log 2> logs/cbmem_console.err.log
|
||||
$CBMEM -1 > logs/cbmem_console.log 2> logs/cbmem_console.err.log
|
||||
update_result "CBMEM console" logs/cbmem_console.err.log
|
||||
printf '############################################## |\r'
|
||||
|
||||
@@ -248,12 +250,12 @@ update_result "TPM information" logs/tpm_version.err.log
|
||||
printf '################################################ |\r'
|
||||
|
||||
# echo "Checking AMT..."
|
||||
mei-amt-check > logs/amt-check.log 2> logs/amt-check.err.log
|
||||
$MEI_AMT_CHECK > logs/amt-check.log 2> logs/amt-check.err.log
|
||||
update_result "AMT information" logs/amt-check.err.log
|
||||
printf '################################################## |\r'
|
||||
|
||||
# echo "Checking ME..."
|
||||
intelmetool -m > logs/intelmetool.log 2> logs/intelmetool.err.log
|
||||
$INTELMETOOL -m > logs/intelmetool.log 2> logs/intelmetool.err.log
|
||||
update_result "ME information" logs/intelmetool.err.log
|
||||
printf '##################################################### |\r'
|
||||
|
||||
@@ -287,9 +289,9 @@ if [ $DEPLOY_REPORT = "false" ]; then
|
||||
fi
|
||||
|
||||
# Create name for generated report
|
||||
filename="$(dmidecode -s system-manufacturer)"
|
||||
filename+=" $(dmidecode -s system-product-name)"
|
||||
filename+=" $(dmidecode -s bios-version)"
|
||||
filename="$($DMIDECODE dump_var_mock -s system-manufacturer)"
|
||||
filename+=" $($DMIDECODE dump_var_mock -s system-product-name)"
|
||||
filename+=" $($DMIDECODE dump_var_mock -s bios-version)"
|
||||
|
||||
# MAC address of device that is used to connect the internet
|
||||
# it could return none only when there is no internet connection but
|
||||
@@ -299,8 +301,8 @@ filename+=" $(dmidecode -s bios-version)"
|
||||
# shellcheck disable=SC2046
|
||||
uuid_string="$(cat /sys/class/net/$(ip route show default | head -1 | awk '/default/ {print $5}')/address)"
|
||||
# next two values are hardware related so they will be always the same
|
||||
uuid_string+="_$(dmidecode -s system-product-name)"
|
||||
uuid_string+="_$(dmidecode -s system-manufacturer)"
|
||||
uuid_string+="_$($DMIDECODE dump_var_mock -s system-product-name)"
|
||||
uuid_string+="_$($DMIDECODE dump_var_mock -s system-manufacturer)"
|
||||
|
||||
# using values from above should generate the same uuid all the time if only
|
||||
# the MAC address will not change.
|
||||
@@ -371,7 +373,7 @@ order to participate)\r
|
||||
read -p "[N/y] "
|
||||
case ${REPLY} in
|
||||
yes|y|Y|Yes|YES)
|
||||
/usr/bin/hw-probe -all -upload
|
||||
$HW_PROBE -all -upload
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Thank you for contributing to the \"Hardware for Linux\" project!"
|
||||
else
|
||||
|
||||
@@ -7,14 +7,17 @@
|
||||
# A script to get information on the touchpad devices. Currently supports only
|
||||
# Clevo devices.
|
||||
|
||||
if ! dmesg | grep hid-multitouch | grep "I2C HID" > /dev/null; then
|
||||
# shellcheck source=../include/hal/dts-hal.sh
|
||||
source $DTS_HAL
|
||||
|
||||
if ! $DMESG i2c_hid_detect_mock | grep hid-multitouch | grep "I2C HID" > /dev/null; then
|
||||
echo "No I2C touchpads detected. Exiting"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
devname=$(dmesg | grep hid-multitouch | awk 'NF>1{print $NF}')
|
||||
hid=$(cat "/sys/bus/i2c/devices/$devname/firmware_node/hid")
|
||||
path=$(cat "/sys/bus/i2c/devices/$devname/firmware_node/path")
|
||||
devname=$($DMESG i2c_hid_detect_mock | grep hid-multitouch | awk 'NF>1{print $NF}')
|
||||
hid=$($FSREAD_TOOL cat "/sys/bus/i2c/devices/$devname/firmware_node/hid")
|
||||
path=$($FSREAD_TOOL cat "/sys/bus/i2c/devices/$devname/firmware_node/path")
|
||||
|
||||
ACPI_CALL_PATH="/proc/acpi/call"
|
||||
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
source $DTS_ENV
|
||||
# shellcheck source=../include/dts-functions.sh
|
||||
source $DTS_FUNCS
|
||||
# shellcheck source=../include/hal/dts-hal.sh
|
||||
source $DTS_HAL
|
||||
|
||||
[ -z "$SYSTEM_VENDOR" ] && error_exit "SYSTEM_VENDOR not given"
|
||||
[ -z "$SYSTEM_MODEL" ] && error_exit "SYSTEM_MODEL not given"
|
||||
@@ -447,17 +449,15 @@ backup() {
|
||||
# No descriptor, probably safe to read everything
|
||||
FLASHROM_ADD_OPT_READ=""
|
||||
fi
|
||||
$FLASHROM -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} -r "${FW_BACKUP_DIR}"/rom.bin ${FLASHROM_ADD_OPT_READ} >> $FLASHROM_LOG_FILE 2>> $ERR_LOG_FILE
|
||||
$FLASHROM read_firm_mock -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} -r "${FW_BACKUP_DIR}"/rom.bin ${FLASHROM_ADD_OPT_READ} >> $FLASHROM_LOG_FILE 2>> $ERR_LOG_FILE
|
||||
error_check "Failed to read BIOS firmware backup"
|
||||
|
||||
if [ "$HAVE_EC" == "true" ]; then
|
||||
echo "Checking for Open Source Embedded Controller firmware"
|
||||
$DASHARO_ECTOOL info >> $ERR_LOG_FILE 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
if check_for_opensource_firmware; then
|
||||
echo "Device has already Open Source Embedded Controller firmware, do not backup EC..."
|
||||
else
|
||||
echo "Backing up EC firmware..."
|
||||
$FLASHROM -p "$PROGRAMMER_EC" ${FLASH_CHIP_SELECT} -r "${FW_BACKUP_DIR}"/ec.bin >> $FLASHROM_LOG_FILE 2>> $ERR_LOG_FILE
|
||||
$FLASHROM read_firm_mock -p "$PROGRAMMER_EC" ${FLASH_CHIP_SELECT} -r "${FW_BACKUP_DIR}"/ec.bin >> $FLASHROM_LOG_FILE 2>> $ERR_LOG_FILE
|
||||
error_check "Failed to read EC firmware backup"
|
||||
fi
|
||||
fi
|
||||
@@ -471,14 +471,14 @@ backup() {
|
||||
}
|
||||
|
||||
romhole_migration() {
|
||||
cbfstool $BIOS_UPDATE_FILE layout -w | grep -q "ROMHOLE" || return
|
||||
$CBFSTOOL layout_mock $BIOS_UPDATE_FILE layout -w | grep -q "ROMHOLE" || return
|
||||
|
||||
$FLASHROM -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} -r /tmp/rom.bin --ifd -i bios >> $FLASHROM_LOG_FILE 2>> $ERR_LOG_FILE
|
||||
$FLASHROM read_firm_mock -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} -r /tmp/rom.bin --ifd -i bios >> $FLASHROM_LOG_FILE 2>> $ERR_LOG_FILE
|
||||
error_check "Failed to read current firmware to migrate MSI ROMHOLE"
|
||||
if check_if_dasharo; then
|
||||
cbfstool /tmp/rom.bin layout -w | grep -q "ROMHOLE" || return
|
||||
$CBFSTOOL layout_mock /tmp/rom.bin layout -w | grep -q "ROMHOLE" || return
|
||||
# This one is rather unlikely to fail, but just in case print a warning
|
||||
cbfstool /tmp/rom.bin read -r ROMHOLE -f /tmp/romhole.bin 2> /dev/null
|
||||
$CBFSTOOL read_romhole_mock /tmp/rom.bin read -r ROMHOLE -f /tmp/romhole.bin 2> /dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
print_warning "Failed to migrate MSI ROMHOLE, your platform's unique SMBIOS/DMI data may be lost"
|
||||
return
|
||||
@@ -487,59 +487,59 @@ romhole_migration() {
|
||||
dd if=/tmp/rom.bin of=/tmp/romhole.bin skip=$((0x17C0000)) bs=128K count=1 iflag=skip_bytes > /dev/null 2>&1
|
||||
fi
|
||||
|
||||
cbfstool "$BIOS_UPDATE_FILE" write -r ROMHOLE -f /tmp/romhole.bin -u 2> /dev/null
|
||||
$CBFSTOOL "$BIOS_UPDATE_FILE" write -r ROMHOLE -f /tmp/romhole.bin -u 2> /dev/null
|
||||
}
|
||||
|
||||
smbios_migration() {
|
||||
echo -n "$(dmidecode -s system-uuid)" > $SYSTEM_UUID_FILE
|
||||
echo -n "$(dmidecode -s baseboard-serial-number)" > $SERIAL_NUMBER_FILE
|
||||
echo -n "$($DMIDECODE dump_var_mock -s system-uuid)" > $SYSTEM_UUID_FILE
|
||||
echo -n "$($DMIDECODE dump_var_mock -s baseboard-serial-number)" > $SERIAL_NUMBER_FILE
|
||||
|
||||
COREBOOT_SEC=$(cbfstool $BIOS_UPDATE_FILE layout -w | grep "COREBOOT")
|
||||
FW_MAIN_A_SEC=$(cbfstool $BIOS_UPDATE_FILE layout -w | grep "FW_MAIN_A")
|
||||
FW_MAIN_B_SEC=$(cbfstool $BIOS_UPDATE_FILE layout -w | grep "FW_MAIN_B")
|
||||
COREBOOT_SEC=$($CBFSTOOL layout_mock $BIOS_UPDATE_FILE layout -w | grep "COREBOOT")
|
||||
FW_MAIN_A_SEC=$($CBFSTOOL layout_mock $BIOS_UPDATE_FILE layout -w | grep "FW_MAIN_A")
|
||||
FW_MAIN_B_SEC=$($CBFSTOOL layout_mock $BIOS_UPDATE_FILE layout -w | grep "FW_MAIN_B")
|
||||
|
||||
if [ -n "$COREBOOT_SEC" ]; then
|
||||
# if the migration can be done there for sure will be COREBOOT section
|
||||
echo "Beginning SMBIOS migration process..."
|
||||
echo "Migrate to COREBOOT section."
|
||||
cbfstool $BIOS_UPDATE_FILE add -f $SERIAL_NUMBER_FILE -n serial_number -t raw -r COREBOOT
|
||||
cbfstool $BIOS_UPDATE_FILE add -f $SYSTEM_UUID_FILE -n system_uuid -t raw -r COREBOOT
|
||||
$CBFSTOOL $BIOS_UPDATE_FILE add -f $SERIAL_NUMBER_FILE -n serial_number -t raw -r COREBOOT
|
||||
$CBFSTOOL $BIOS_UPDATE_FILE add -f $SYSTEM_UUID_FILE -n system_uuid -t raw -r COREBOOT
|
||||
fi
|
||||
|
||||
if [ -n "$FW_MAIN_A_SEC" ]; then
|
||||
echo "Migrate to FW_MAIN_A section."
|
||||
cbfstool $BIOS_UPDATE_FILE expand -r FW_MAIN_A
|
||||
cbfstool $BIOS_UPDATE_FILE add -f $SERIAL_NUMBER_FILE -n serial_number -t raw -r FW_MAIN_A
|
||||
cbfstool $BIOS_UPDATE_FILE add -f $SYSTEM_UUID_FILE -n system_uuid -t raw -r FW_MAIN_A
|
||||
cbfstool $BIOS_UPDATE_FILE truncate -r FW_MAIN_A
|
||||
$CBFSTOOL $BIOS_UPDATE_FILE expand -r FW_MAIN_A
|
||||
$CBFSTOOL $BIOS_UPDATE_FILE add -f $SERIAL_NUMBER_FILE -n serial_number -t raw -r FW_MAIN_A
|
||||
$CBFSTOOL $BIOS_UPDATE_FILE add -f $SYSTEM_UUID_FILE -n system_uuid -t raw -r FW_MAIN_A
|
||||
$CBFSTOOL $BIOS_UPDATE_FILE truncate -r FW_MAIN_A
|
||||
fi
|
||||
|
||||
if [ -n "$FW_MAIN_B_SEC" ]; then
|
||||
echo "Migrate to FW_MAIN_B section."
|
||||
cbfstool $BIOS_UPDATE_FILE expand -r FW_MAIN_B
|
||||
cbfstool $BIOS_UPDATE_FILE add -f $SERIAL_NUMBER_FILE -n serial_number -t raw -r FW_MAIN_B
|
||||
cbfstool $BIOS_UPDATE_FILE add -f $SYSTEM_UUID_FILE -n system_uuid -t raw -r FW_MAIN_B
|
||||
cbfstool $BIOS_UPDATE_FILE truncate -r FW_MAIN_B
|
||||
$CBFSTOOL $BIOS_UPDATE_FILE expand -r FW_MAIN_B
|
||||
$CBFSTOOL $BIOS_UPDATE_FILE add -f $SERIAL_NUMBER_FILE -n serial_number -t raw -r FW_MAIN_B
|
||||
$CBFSTOOL $BIOS_UPDATE_FILE add -f $SYSTEM_UUID_FILE -n system_uuid -t raw -r FW_MAIN_B
|
||||
$CBFSTOOL $BIOS_UPDATE_FILE truncate -r FW_MAIN_B
|
||||
fi
|
||||
}
|
||||
|
||||
smmstore_migration() {
|
||||
echo -n "Backing up firmware configuration... "
|
||||
$FLASHROM -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} -r /tmp/dasharo_dump.rom ${FLASHROM_ADD_OPT_READ} --fmap -i FMAP -i SMMSTORE >> $FLASHROM_LOG_FILE 2>> $ERR_LOG_FILE
|
||||
cbfstool /tmp/dasharo_dump.rom read -r SMMSTORE -f /tmp/smmstore.bin >> $ERR_LOG_FILE 2>&1 || \
|
||||
$FLASHROM read_firm_mock -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} -r /tmp/dasharo_dump.rom ${FLASHROM_ADD_OPT_READ} --fmap -i FMAP -i SMMSTORE >> $FLASHROM_LOG_FILE 2>> $ERR_LOG_FILE
|
||||
$CBFSTOOL read_smmstore_mock /tmp/dasharo_dump.rom read -r SMMSTORE -f /tmp/smmstore.bin >> $ERR_LOG_FILE 2>&1 || \
|
||||
print_warning "Failed! Default settings will be used."
|
||||
cbfstool "$BIOS_UPDATE_FILE" write -r SMMSTORE -f /tmp/smmstore.bin -u >> $ERR_LOG_FILE 2>&1 || \
|
||||
$CBFSTOOL "$BIOS_UPDATE_FILE" write -r SMMSTORE -f /tmp/smmstore.bin -u >> $ERR_LOG_FILE 2>&1 || \
|
||||
print_warning "Failed! Default settings will be used."
|
||||
print_ok Done.
|
||||
}
|
||||
|
||||
bootsplash_migration() {
|
||||
$FLASHROM -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} -r /tmp/dasharo_dump.rom ${FLASHROM_ADD_OPT_READ} --fmap -i FMAP -i BOOTSPLASH >> $FLASHROM_LOG_FILE 2>> $ERR_LOG_FILE
|
||||
$FLASHROM read_firm_mock -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} -r /tmp/dasharo_dump.rom ${FLASHROM_ADD_OPT_READ} --fmap -i FMAP -i BOOTSPLASH >> $FLASHROM_LOG_FILE 2>> $ERR_LOG_FILE
|
||||
# If no custom logo, return from bootsplash_migration early and don't show
|
||||
# unnecessary messages
|
||||
cbfstool /tmp/dasharo_dump.rom extract -r BOOTSPLASH -n logo.bmp -f /tmp/logo.bmp >> $ERR_LOG_FILE 2>&1 || return 1
|
||||
$CBFSTOOL /tmp/dasharo_dump.rom extract -r BOOTSPLASH -n logo.bmp -f /tmp/logo.bmp >> $ERR_LOG_FILE 2>&1 || return 1
|
||||
echo -n "Backing up custom boot logo... "
|
||||
dcu logo $BIOS_UPDATE_FILE -l /tmp/logo.bmp >> $ERR_LOG_FILE 2>&1 || \
|
||||
$DCU logo $BIOS_UPDATE_FILE -l /tmp/logo.bmp >> $ERR_LOG_FILE 2>&1 || \
|
||||
print_warning "Failed! Default boot splash will be used." || return 1
|
||||
print_ok Done.
|
||||
}
|
||||
@@ -560,7 +560,7 @@ check_vboot_keys() {
|
||||
# No FMAP flashing? Also skip
|
||||
grep -q "\--fmap" <<< "$FLASHROM_ADD_OPT_UPDATE" || return
|
||||
|
||||
BINARY_KEYS=$(CBFSTOOL=$(which cbfstool) futility show $BIOS_UPDATE_FILE| grep -i 'key sha1sum')
|
||||
BINARY_KEYS=$(CBFSTOOL=$(which cbfstool) $FUTILITY dump_vboot_keys show $BIOS_UPDATE_FILE| grep -i 'key sha1sum')
|
||||
|
||||
if [ $BOARD_HAS_FD_REGION -eq 0 ]; then
|
||||
FLASHROM_ADD_OPT_READ=""
|
||||
@@ -568,9 +568,9 @@ check_vboot_keys() {
|
||||
FLASHROM_ADD_OPT_READ="--ifd -i bios"
|
||||
fi
|
||||
echo "Checking vboot keys."
|
||||
$FLASHROM -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} ${FLASHROM_ADD_OPT_READ} -r /tmp/bios.bin > /dev/null 2>/dev/null
|
||||
if [ $? -eq 0 ] && [ -f "/tmp/bios.bin" ]; then
|
||||
FLASH_KEYS=$(CBFSTOOL=$(which cbfstool) futility show /tmp/bios.bin | grep -i 'key sha1sum')
|
||||
$FLASHROM read_firm_mock -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} ${FLASHROM_ADD_OPT_READ} -r $BIOS_DUMP_FILE > /dev/null 2>/dev/null
|
||||
if [ $? -eq 0 ] && [ -f $BIOS_DUMP_FILE ]; then
|
||||
FLASH_KEYS=$(CBFSTOOL=$(which cbfstool) $FUTILITY dump_vboot_keys show $BIOS_DUMP_FILE | grep -i 'key sha1sum')
|
||||
diff <(echo "$BINARY_KEYS") <(echo "$FLASH_KEYS") > /dev/null 2>&1
|
||||
# If keys are different we must additionally flash at least GBB region as well
|
||||
if [ $? -ne 0 ]; then
|
||||
@@ -611,21 +611,21 @@ blob_transmission() {
|
||||
if [ -n "$SCH5545_FW" ]; then
|
||||
error_file_check "$SCH5545_FW" "Failed to find SCH5545 EC firmware binary."
|
||||
echo -n "Adding SCH5545 EC firmware..."
|
||||
cbfstool "$BIOS_UPDATE_FILE" add -f "$SCH5545_FW" -n sch5545_ecfw.bin -t raw
|
||||
$CBFSTOOL "$BIOS_UPDATE_FILE" add -f "$SCH5545_FW" -n sch5545_ecfw.bin -t raw
|
||||
print_ok "Done"
|
||||
fi
|
||||
|
||||
if [ -n "$ACM_BIN" ]; then
|
||||
error_file_check "$ACM_BIN" "Failed to find BIOS ACM binary."
|
||||
echo -n "Adding BIOS ACM..."
|
||||
cbfstool "$BIOS_UPDATE_FILE" add -f "$ACM_BIN" -n txt_bios_acm.bin -t raw
|
||||
$CBFSTOOL "$BIOS_UPDATE_FILE" add -f "$ACM_BIN" -n txt_bios_acm.bin -t raw
|
||||
print_ok "Done"
|
||||
fi
|
||||
|
||||
if [ -n "$SINIT_ACM" ]; then
|
||||
error_file_check "$SINIT_ACM" "Failed to find Intel SINIT ACM binary."
|
||||
echo -n "Adding SINIT ACM..."
|
||||
cbfstool "$BIOS_UPDATE_FILE" add -f "$SINIT_ACM" -n txt_sinit_acm.bin -t raw
|
||||
$CBFSTOOL "$BIOS_UPDATE_FILE" add -f "$SINIT_ACM" -n txt_sinit_acm.bin -t raw
|
||||
print_ok "Done"
|
||||
fi
|
||||
}
|
||||
@@ -650,7 +650,7 @@ deploy_ec_firmware() {
|
||||
if [ "$FIRMWARE_VERSION" == "community_cap" ] || [ "$FIRMWARE_VERSION" == "dpp_cap" ]; then
|
||||
# Linux Kernel driver is responsible for handling UEFI Capsule Updates, so
|
||||
# the capsule should be fed to a specific device:
|
||||
cat "$EC_UPDATE_FILE" > "$CAP_UPD_DEVICE"
|
||||
$CAP_UPD_TOOL "$EC_UPDATE_FILE"
|
||||
# Return after updating. The below code is for flashrom updates (using
|
||||
# binaries) only
|
||||
return 0
|
||||
@@ -662,13 +662,11 @@ deploy_ec_firmware() {
|
||||
|
||||
return 0
|
||||
elif [ "$_mode" == "install" ]; then
|
||||
echo "Checking for Open Source Embedded Controller firmware"
|
||||
$DASHARO_ECTOOL info >> $ERR_LOG_FILE 2>&1
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
if check_for_opensource_firmware; then
|
||||
echo "Device has already Open Source Embedded Controller firmware, do not flash EC..."
|
||||
else
|
||||
_ec_fw_version=$($FLASHROM -p "$PROGRAMMER_EC" ${FLASH_CHIP_SELECT} | grep "Mainboard EC Version" | tr -d ' ' | cut -d ':' -f 2)
|
||||
_ec_fw_version=$($FLASHROM get_ec_firm_version_mock check -p "$PROGRAMMER_EC" ${FLASH_CHIP_SELECT} | grep "Mainboard EC Version" | tr -d ' ' | cut -d ':' -f 2)
|
||||
|
||||
if [ "$_ec_fw_version" != "$COMPATIBLE_EC_FW_VERSION" ]; then
|
||||
echo "Installing EC..."
|
||||
@@ -692,7 +690,7 @@ firmware_pre_updating_routine(){
|
||||
check_flash_lock
|
||||
|
||||
if [ "$HAVE_EC" == "true" ]; then
|
||||
$DASHARO_ECTOOL info >> $ERR_LOG_FILE 2>&1
|
||||
check_for_opensource_firmware
|
||||
error_check "Device does not have Dasharo EC firmware - cannot continue update!"
|
||||
fi
|
||||
|
||||
@@ -704,7 +702,7 @@ firmware_pre_updating_routine(){
|
||||
bootsplash_migration
|
||||
fi
|
||||
|
||||
cbfstool "$BIOS_UPDATE_FILE" extract -r COREBOOT -n config -f "$BIOS_UPDATE_CONFIG_FILE"
|
||||
$CBFSTOOL read_bios_conffile_mock "$BIOS_UPDATE_FILE" extract -r COREBOOT -n config -f "$BIOS_UPDATE_CONFIG_FILE"
|
||||
grep -q "CONFIG_VBOOT=y" "$BIOS_UPDATE_CONFIG_FILE"
|
||||
HAVE_VBOOT="$?"
|
||||
|
||||
@@ -728,7 +726,7 @@ firmware_pre_installation_routine(){
|
||||
check_if_me_disabled
|
||||
set_intel_regions_update_params "-N --ifd -i bios"
|
||||
|
||||
cbfstool "$BIOS_UPDATE_FILE" extract -r COREBOOT -n config -f "$BIOS_UPDATE_CONFIG_FILE"
|
||||
$CBFSTOOL read_bios_conffile_mock "$BIOS_UPDATE_FILE" extract -r COREBOOT -n config -f "$BIOS_UPDATE_CONFIG_FILE"
|
||||
grep "CONFIG_VBOOT=y" "$BIOS_UPDATE_CONFIG_FILE"
|
||||
HAVE_VBOOT="$?"
|
||||
|
||||
@@ -774,7 +772,7 @@ deploy_firmware(){
|
||||
if [ "$FIRMWARE_VERSION" == "community_cap" ] || [ "$FIRMWARE_VERSION" == "dpp_cap" ]; then
|
||||
# Linux Kernel driver is responsible for handling UEFI Capsule Updates, so
|
||||
# the capsule should be fed to a specific device:
|
||||
cat "$BIOS_UPDATE_FILE" > "$CAP_UPD_DEVICE"
|
||||
$CAP_UPD_TOOL "$BIOS_UPDATE_FILE"
|
||||
# Return after updating. The below code is for flashrom updates (using
|
||||
# binaries) only.
|
||||
return 0
|
||||
@@ -924,7 +922,7 @@ install_workflow() {
|
||||
it5570_shutdown
|
||||
else
|
||||
send_dts_logs
|
||||
${CMD_REBOOT}
|
||||
${REBOOT}
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -961,7 +959,7 @@ update_workflow() {
|
||||
"$BOARD_MODEL" == "PRO Z690-A (MS-7D25)" || \
|
||||
"$BOARD_MODEL" == "PRO Z690-A WIFI (MS-7D25)" ) ]]; then
|
||||
|
||||
cpu_gen_check=$(lscpu | grep -F "Model name" | grep -E "\-(13|14)[0-9]{3}" | wc -l)
|
||||
cpu_gen_check=$($LSCPU | grep -F "Model name" | grep -E "\-(13|14)[0-9]{3}" | wc -l)
|
||||
|
||||
if [ $cpu_gen_check -ne 0 ]; then
|
||||
echo "You have a 13th gen or above CPU and are trying to flash Dasharo v1.1.1 on a MSI PRO Z690-A DDR4 or DDR5 board"
|
||||
@@ -1025,7 +1023,7 @@ update_workflow() {
|
||||
echo "Rebooting"
|
||||
sleep 1
|
||||
send_dts_logs
|
||||
${CMD_REBOOT}
|
||||
${REBOOT}
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -1060,8 +1058,8 @@ restore() {
|
||||
if [ ! $? -eq 0 ]; then
|
||||
uuid_string=""
|
||||
fi
|
||||
uuid_string="${mac_addr}_$(dmidecode -s system-product-name)"
|
||||
uuid_string+="_$(dmidecode -s system-manufacturer)"
|
||||
uuid_string="${mac_addr}_$($DMIDECODE dump_var_mock -s system-product-name)"
|
||||
uuid_string+="_$($DMIDECODE dump_var_mock -s system-manufacturer)"
|
||||
uuid="$(uuidgen -n @x500 -N $uuid_string -s)"
|
||||
|
||||
case ${OPTION} in
|
||||
@@ -1127,7 +1125,7 @@ restore() {
|
||||
check_blobs_in_binary /tmp/logs/rom.bin
|
||||
check_if_me_disabled
|
||||
set_intel_regions_update_params "-N --ifd -i bios"
|
||||
flashrom -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} ${FLASHROM_ADD_OPT_REGIONS} -w "/tmp/logs/rom.bin" >> $FLASHROM_LOG_FILE 2>> $ERR_LOG_FILE
|
||||
$FLASHROM -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} ${FLASHROM_ADD_OPT_REGIONS} -w "/tmp/logs/rom.bin" >> $FLASHROM_LOG_FILE 2>> $ERR_LOG_FILE
|
||||
error_check "Failed to restore BIOS firmware! You can try one more time."
|
||||
print_ok "Successfully restored firmware"
|
||||
else
|
||||
@@ -1165,6 +1163,7 @@ fi
|
||||
|
||||
board_config
|
||||
check_flash_chip
|
||||
|
||||
if [ -n "$PLATFORM_SIGN_KEY" ]; then
|
||||
get_signing_keys
|
||||
fi
|
||||
|
||||
@@ -11,8 +11,13 @@ FUM_EFIVAR="/sys/firmware/efi/efivars/FirmwareUpdateMode-d15b327e-ff2d-4fc1-abf6
|
||||
export DTS_FUNCS="$SBIN_DIR/dts-functions.sh"
|
||||
export DTS_ENV="$SBIN_DIR/dts-environment.sh"
|
||||
export DTS_SUBS="$SBIN_DIR/dts-subscription.sh"
|
||||
export DTS_HAL="$SBIN_DIR/dts-hal.sh"
|
||||
export DTS_MOCK_COMMON="$SBIN_DIR/common-mock-func.sh"
|
||||
export DTS_LOG_FILE="/tmp/dts.log"
|
||||
|
||||
# shellcheck source=../include/hal/dts-hal.sh
|
||||
source $DTS_HAL
|
||||
|
||||
if [ -f $FUM_EFIVAR ]; then
|
||||
$SBIN_DIR/dasharo-deploy update fum
|
||||
else
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
source $DTS_ENV
|
||||
# shellcheck source=../include/dts-functions.sh
|
||||
source $DTS_FUNCS
|
||||
# shellcheck source=../include/hal/dts-hal.sh
|
||||
source $DTS_HAL
|
||||
|
||||
board_config() {
|
||||
case "$SYSTEM_VENDOR" in
|
||||
@@ -46,15 +48,6 @@ board_config() {
|
||||
esac
|
||||
}
|
||||
|
||||
check_for_opensource_firmware()
|
||||
{
|
||||
echo "Checking for opensource firmware"
|
||||
$DASHARO_ECTOOL info >> /dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
error_exit "Device has already Open Source Embedded Controller firmware, aborting..."
|
||||
fi
|
||||
}
|
||||
|
||||
download_files()
|
||||
{
|
||||
wait_for_network_connection
|
||||
@@ -81,7 +74,7 @@ install() {
|
||||
error_check "Failed to verify Dasharo firmware"
|
||||
|
||||
if [ "$HAVE_EC" == "true" ]; then
|
||||
_ec_fw_version=$($FLASHROM -p ${PROGRAMMER_EC} | grep "Mainboard EC Version" | tr -d ' ' | cut -d ':' -f 2)
|
||||
_ec_fw_version=$($FLASHROM get_ec_firm_version_mock -p ${PROGRAMMER_EC} | grep "Mainboard EC Version" | tr -d ' ' | cut -d ':' -f 2)
|
||||
|
||||
if [ "$_ec_fw_version" != "$COMPATIBLE_EC_FW_VERSION" ]; then
|
||||
echo "EC version: $_ec_fw_version is not supported, update required"
|
||||
@@ -100,7 +93,7 @@ install() {
|
||||
if [ "$NEED_EC_RESET" = "true" ]; then
|
||||
it5570_shutdown
|
||||
else
|
||||
${CMD_POWEROFF}
|
||||
${POWEROFF}
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -115,7 +108,9 @@ ROOT_DIR="/"
|
||||
[ -z "$SYSTEM_VENDOR" ] && error_exit "SYSTEM_VENDOR not given"
|
||||
[ -z "$SYSTEM_MODEL" ] && error_exit "SYSTEM_MODEL not given"
|
||||
|
||||
check_for_opensource_firmware
|
||||
if check_for_opensource_firmware; then
|
||||
error_exit "Device has already Open Source Embedded Controller firmware, aborting..."
|
||||
fi
|
||||
board_config
|
||||
download_files
|
||||
install
|
||||
|
||||
Reference in New Issue
Block a user