| #!/bin/sh |
| |
| # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # File to store firmware information derived from crossystem. |
| BIOS_INFO_FILE="/var/log/bios_info.txt" |
| |
| # Set up bios information for chrome://system and userfeedback |
| # Need to do this before user can request in chrome |
| # moved here to keep out of critical boot path |
| |
| # Function for showing switch info as reported by crossystem |
| # |
| # $1 - crossystem parameter |
| # $2 - string to return if the value is 0 |
| # $3 - string to return if the value is 1 |
| # |
| # if $(crossystem $1) reports something else - return 'failure' |
| swstate () { |
| case "$(crossystem $1)" in |
| (0) echo $2;; |
| (1) echo $3;; |
| (*) echo 'failure' |
| esac |
| } |
| |
| # Function for showing boot reason as reported by crossystem. |
| bootreason () { |
| local reason=$(crossystem 'recovery_reason') |
| |
| echo -n "($reason): " |
| case "$reason" in |
| (0) echo "$(crossystem 'mainfw_type')";; |
| (1) echo 'Legacy firmware recovery request';; |
| (2) echo 'User pressed recovery button';; |
| (3) echo 'Both RW firmware sections invalid';; |
| (4) echo 'S3 resume failed';; |
| (5) echo 'RO firmware reported TPM error';; |
| (6) echo 'Verified boot shared data initialization error';; |
| (7) echo 'S3Resume() test error';; |
| (8) echo 'LoadFirmwareSetup() test error';; |
| (8) echo 'LoadFirmware() test error';; |
| (63) echo 'Unknown RO firmware error';; |
| (65) echo 'User requested recovery at dev warning screen';; |
| (66) echo 'No valid kernel detected';; |
| (67) echo 'Kernel failed signature check';; |
| (68) echo 'RW firmware reported TPM error';; |
| (69) echo 'Developer RW firmware with the developer switch off';; |
| (70) echo 'RW firmware shared data error';; |
| (71) echo 'LoadKernel() test error';; |
| (127) echo 'Unknown RW firmware error';; |
| (129) echo 'DM verity failure';; |
| (191) echo 'Unknown kernel error';; |
| (193) echo 'Recovery mode test from user-mode';; |
| (255) echo 'Unknown user mode error';; |
| esac |
| } |
| |
| cat <<END >"${BIOS_INFO_FILE}" |
| version | $(crossystem fwid) |
| ro bios version | $(crossystem ro_fwid) |
| Boot switch status: |
| Recovery button: $(swstate 'recoverysw_boot' 'released' 'pressed') |
| Developer mode: $(swstate 'devsw_boot' 'not enabled' 'selected') |
| RO firmware: $(swstate 'wpsw_cur' 'writeable' 'protected') |
| Boot reason $(bootreason) |
| Boot firmware: $(crossystem 'mainfw_act') |
| Active EC code: $(crossystem 'ecfw_act') |
| Raw log: |
| $(crossystem --all) |
| END |
| |