Difference between revisions of "MFU: Mass Firmware Update"

From Define Wiki
Jump to navigation Jump to search
 
(19 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
MFU is designed to all a user to update, edit and save the BIOS and IPMI firmware accross multiple nodes through a single command.
 
MFU is designed to all a user to update, edit and save the BIOS and IPMI firmware accross multiple nodes through a single command.
  
==Installation==
+
== Download ==
 +
We've only had access to the software via supermicro FTP. For the latest versions, please contact: James Chiang: JamesChiang@supermicro.com.tw
  
Scmsh must be installed on the host from which you will run the commands.
+
== OS Prereq ==
 +
Ensure 'Development tools' is installed
 +
<syntaxhighlight>
 +
  yum groupinstall 'Development tools'
 +
</syntaxhighlight>
  
Each node to be controlled must have the scmsh agent daemon installed on the system.
+
Turn off firewall or open up port 4422
  
 +
== Installation ==
  
 +
* Scmsh must be installed on the host from which you will run the commands.
 +
* Each node to be controlled must have the scmsh agent daemon installed on the system (scmnode).
  
==Adding nodes to the scmsh==
+
Example installation of scmnode:
 +
<syntaxhighlight>
 +
[root@head ~]$ unzip SCMSH\ V1.05_build.154_20121019.zip
 +
Archive:  SCMSH V1.05_build.154_20121019.zip
 +
replace SCMSH V1.05_build.154_20121019/install_scmnode_v1.05_build.154_20121019-180231.tar.gz? [y]es, [n]o, [A]ll, [N]one, [r]ename: A
 +
  inflating: SCMSH V1.05_build.154_20121019/install_scmnode_v1.05_build.154_20121019-180231.tar.gz 
 +
  inflating: SCMSH V1.05_build.154_20121019/install_scmsh_v1.05_build.154_20121019-180231.tar.gz 
 +
  inflating: SCMSH V1.05_build.154_20121019/quickstart.txt 
 +
  inflating: SCMSH V1.05_build.154_20121019/ReleaseNote.txt 
 +
  inflating: SCMSH V1.05_build.154_20121019/SCMSH v1.04 User Guide_20120608.pdf 
 +
[root@head ~]$ cd SCMSH\ V1.05_build.154_20121019
 +
[root@head SCMSH V1.05_build.154_20121019]$ tar zxvf install_scmsh_v1.05_build.154_20121019-180231.tar.gz
 +
install_scmsh/
 +
install_scmsh/uninstall.sh
 +
install_scmsh/scmsh.desktop
 +
install_scmsh/install.sh
 +
install_scmsh/scmsh.tar.gz
 +
install_scmsh/README
 +
[root@head SCMSH V1.05_build.154_20121019]$ cd install_scmsh
 +
[root@head install_scmsh]$ ./install.sh
 +
</syntaxhighlight>
  
For each node to be monitored by scmsh a line must be added to the nodes.cfg file on the master node.
+
== Adding nodes to the scmsh ==
 +
 
 +
For each node to be monitored by scmsh a line must be added to the <tt>/opt/scmsh/node.cfg</tt> file on the master node.
  
 
The line must contain four bits on information:
 
The line must contain four bits on information:
Line 24: Line 54:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
+
== Running in Interactive Mode ==
==Running in Interactive Mode==
 
  
 
To start MFU in interactive mode, navigate to the install directory and run the command:
 
To start MFU in interactive mode, navigate to the install directory and run the command:
Line 32: Line 61:
 
./run_scmsh
 
./run_scmsh
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
 +
You will see a command prompt appear. There are a small number of commands used in MFU
 +
 +
* cd
 +
Navigate around the different folders in MFU
 +
 +
* list
 +
lists the commands available in the current folder - similar to ls in linux.
 +
 +
* help
 +
List every command and option possible to be run - not really that clear but may be helpful in some cases
 +
 +
* MFU commands
 +
To run a command from MFU, navigate to the correct folder and simply type the command. It will come up with help on waht options are needed for each command
  
 
== Running in Scripted Mode ==
 
== Running in Scripted Mode ==
Line 51: Line 95:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
==MFU Commands==
+
== MFU flags ==
  
 +
* -n <nodename>
 +
The list of nodes you want to run the command on
  
You will see a command prompt appear. There are a small number of commands used in MFU
+
* -f (only needed for some commands)
 +
The file name either to read or write
 +
 
 +
* -m (only needed for some commands)
 +
The mode in which the command runs (eg raw or script).
 +
 
 +
== BIOS Commands ==
 +
 
 +
=== Get BIOS Information ===
 +
<syntaxhighlight>
 +
$ ./scmsh biosfw/check bios info -n blade1
 +
[blade1] (29ms)
 +
Vendor: American Megatrends Inc.
 +
Version: 1.0a
 +
Release Date: 08/17/2012
 +
ROM Size: 8192 kB
 +
BIOS Revision: 1.0
 +
</syntaxhighlight>
 +
 
 +
 
 +
===Save BIOS FW===
 +
 
 +
  ./scmsh x9biosfw/save bios fw -n <node_name> -f <file_name>
 +
 
 +
 
 +
  [root@head scmsh]# ./scmsh x9biosfw/save bios fw -f blade1_bios_save -n blade1
 +
  Please wait for saving BIOS firmware....
 +
  Don't power off the system or remove AC power!
 +
  [blade1] (6399ms)
 +
  File "blade1_bios_save" is received from slave node successfully.
 +
 
 +
===Flash BIOS FW===
 +
The file <tt>b9dr72.c31</tt> was obtained via the supermicro site. Download the latest BIOS revision and unpack:
 +
<syntaxhighlight>
 +
[root@head scmsh]# unzip b9dr72_c31.zip
 +
Archive:  b9dr72_c31.zip
 +
  inflating: AFUDOSU.SMC           
 +
  inflating: Readme for AMI BIOS.txt 
 +
  inflating: b9dr72.c31              # <-- This is the file we will use with scmsh
 +
  inflating: ami.bat           
 +
</syntaxhighlight>
 +
 
 +
Then to update, use the following command:
 +
<syntaxhighlight>
 +
  # ./scmsh x9biosfw/save bios fw -n <node_name> -f <file_name>
 +
 
 +
  ./scmsh x9biosfw/flash bios fw -n blade1 -f b9dr72.c31
 +
</syntaxhighlight>
 +
 
 +
Here is the log file from <tt>/var/tmp/</tt>
 +
<syntaxhighlight>
 +
[root@localhost tmp]# cat x9_flash_bios_log.log
 +
Linux BIOS Flash Utility (for UEFI BIOS) V1.07
 +
Copyright (C) 2012 Super Micro Computer, Inc. All rights reserved.
 +
 
 +
Finding BIOS ID...
 +
ID found in BIOS: 0070D
 +
ID found in file: 0070D
 +
ID Match!
 +
 
 +
Writing BIOS flash...
 +
Writing Block 4/128
 +
Writing Block 6/128
 +
Writing Block 94/128
 +
Writing Block 96/128
 +
Writing Block 128/128
 +
 
 +
Writing finished
 +
</syntaxhighlight>
 +
 
 +
Verify the BIOS version before and after the update:
 +
<syntaxhighlight>
 +
# Before
 +
[root@localhost ~]$ dmidecode | grep Version | head -n 1
 +
Version: 1.0a
 +
 
 +
# After
 +
[root@localhost ~]$ dmidecode | grep Version | head -n 1
 +
Version: 1.0b
 +
</syntaxhighlight>
  
* cd
+
===Back up BIOS Config===
Navigate around the different folders in MFU
 
  
* list
+
  ./scmsh x9biosfw/backup bios config -n <node_name> -f <file_name> -m <mode>
lists the commands available in the current folder - similar to ls in linux.
 
  
* help
+
===Restore BIOS Config===
List every command and option possible to be run - not really that clear but may be helpful in some cases
 
  
* MFU commands
+
  ./scmsh x9biosfw/restore bios config -n <node_name> -f <file_name> -m <mode>
To run a command from MFU, naviagte to the correct folder and simply type the command. It will come up with help on waht options are needed for each command
 
  
 +
== Debugging ==
 +
If you encounter problems, log files are generated for each command in <tt>/var/tmp</tt> for each node (so the node the agent/client daemon is running)
 +
<syntaxhighlight>
 +
[root@localhost scmnode]# cat /var/tmp/*
 +
ERROR:1 Unable to load Driver
  
==MFU flags==
+
----------------------------------------------------------------------------
 +
| Copyright (c)2011 American Megatrends, Inc.   |
 +
| AMISCE Utility. Ver 2.01.1029   |
 +
----------------------------------------------------------------------------
 +
built date: 08/17/2012
 +
Bios ID: 0070D
 +
ERROR: Too many options '7D1AD92A7 F4FB50265243CA0 -y -B /opt/scmnode/4422/blade1_bios_save'.
  
* -n <nodename>
+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
The list of nodes you want to run the command on
+
  WARNING:                               
 +
  This can overwrite your current BIOS and CMOS! 
 +
  Make sure you know what you're doing!   
 +
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  
* -f (only needed for some commands)
+
1705FEDA6D60AA5  Version:1.8.20100325
The file name either to read or write
+
Syntax: 1705FEDA6D60AA5 [-h] [-v] [-y]
 +
                        [-B file] [-b file] [[-x] [-r] -F file] [-f file] [-C]
 +
Options:
 +
  -h      Show this help page.
 +
  -v      Enable verbose mode.
 +
  -y      Assume that the answer to any question which would be asked is yes.
 +
  -B file  Backup (save) current BIOS ROM chip contents to file.
 +
  -b file Backup (save) current CMOS memory contents to file.
 +
  -x      Disable Supermicro BIOS ID checking while flashing.
 +
  -r      Reserve the BIOS supported NVRAM while flashing.
 +
  -F file  Flash (write) the file contents into the BIOS ROM chip.
 +
  -f file  Flash (write) the file contents into the CMOS memory.
 +
  -C      Clear the CMOS checksums.
  
* -m (only needed for some commands)
+
Linux BIOS Flash Utility 1.0
The mode in which the command runs (eg raw or script).
+
Super Micro Copyright Reserved 2012.
 +
cant open device
 +
</syntaxhighlight>

Latest revision as of 18:32, 7 March 2013

MFU is designed to all a user to update, edit and save the BIOS and IPMI firmware accross multiple nodes through a single command.

Download

We've only had access to the software via supermicro FTP. For the latest versions, please contact: James Chiang: JamesChiang@supermicro.com.tw

OS Prereq

Ensure 'Development tools' is installed

  yum groupinstall 'Development tools'

Turn off firewall or open up port 4422

Installation

  • Scmsh must be installed on the host from which you will run the commands.
  • Each node to be controlled must have the scmsh agent daemon installed on the system (scmnode).

Example installation of scmnode:

[root@head ~]$ unzip SCMSH\ V1.05_build.154_20121019.zip 
Archive:  SCMSH V1.05_build.154_20121019.zip
replace SCMSH V1.05_build.154_20121019/install_scmnode_v1.05_build.154_20121019-180231.tar.gz? [y]es, [n]o, [A]ll, [N]one, [r]ename: A
  inflating: SCMSH V1.05_build.154_20121019/install_scmnode_v1.05_build.154_20121019-180231.tar.gz  
  inflating: SCMSH V1.05_build.154_20121019/install_scmsh_v1.05_build.154_20121019-180231.tar.gz  
  inflating: SCMSH V1.05_build.154_20121019/quickstart.txt  
  inflating: SCMSH V1.05_build.154_20121019/ReleaseNote.txt  
  inflating: SCMSH V1.05_build.154_20121019/SCMSH v1.04 User Guide_20120608.pdf  
[root@head ~]$ cd SCMSH\ V1.05_build.154_20121019
[root@head SCMSH V1.05_build.154_20121019]$ tar zxvf install_scmsh_v1.05_build.154_20121019-180231.tar.gz 
install_scmsh/
install_scmsh/uninstall.sh
install_scmsh/scmsh.desktop
install_scmsh/install.sh
install_scmsh/scmsh.tar.gz
install_scmsh/README
[root@head SCMSH V1.05_build.154_20121019]$ cd install_scmsh
[root@head install_scmsh]$ ./install.sh

Adding nodes to the scmsh

For each node to be monitored by scmsh a line must be added to the /opt/scmsh/node.cfg file on the master node.

The line must contain four bits on information:

  1. Node Name
  2. Node Mac address
  3. Node Ipaddress / Hostname
  4. Port it will use to communicate (default 4422)
compute020=00:25:90:6C:DC:DE,compute020:4422

Running in Interactive Mode

To start MFU in interactive mode, navigate to the install directory and run the command:

./run_scmsh


You will see a command prompt appear. There are a small number of commands used in MFU

  • cd

Navigate around the different folders in MFU

  • list

lists the commands available in the current folder - similar to ls in linux.

  • help

List every command and option possible to be run - not really that clear but may be helpful in some cases

  • MFU commands

To run a command from MFU, navigate to the correct folder and simply type the command. It will come up with help on waht options are needed for each command

Running in Scripted Mode

MFU can also be scripted to automate fw updates across a cluster

# Assumes the following are set
export LANG=C
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH:/opt/scmsh/lib
export SCMSH_PATH=/opt/scmsh/
export SCMNODE_PATH=/opt/scmnode/

# then run with scmsh <cmd>, for eg
./scmsh  list node
[local] (0ms)
blade1 (MAC: 00:25:90:95:30:90, IP: 172.28.1.22, Port: 4422)
compute020 (MAC: 00:25:90:6C:DC:DE, IP: compute020, Port: 4422)
icr (MAC: 00:25:90:6A:E9:B9, IP: 10.9.2.1, Port: 4422)
Total: 3

MFU flags

  • -n <nodename>

The list of nodes you want to run the command on

  • -f (only needed for some commands)

The file name either to read or write

  • -m (only needed for some commands)

The mode in which the command runs (eg raw or script).

BIOS Commands

Get BIOS Information

$ ./scmsh biosfw/check bios info -n blade1
[blade1] (29ms)
	Vendor: American Megatrends Inc.
	Version: 1.0a
	Release Date: 08/17/2012
	ROM Size: 8192 kB
	BIOS Revision: 1.0


Save BIOS FW

 ./scmsh x9biosfw/save bios fw -n <node_name> -f <file_name>


 [root@head scmsh]# ./scmsh x9biosfw/save bios fw -f blade1_bios_save -n blade1
 Please wait for saving BIOS firmware....
 Don't power off the system or remove AC power!
 [blade1] (6399ms)
 File "blade1_bios_save" is received from slave node successfully.

Flash BIOS FW

The file b9dr72.c31 was obtained via the supermicro site. Download the latest BIOS revision and unpack:

[root@head scmsh]# unzip b9dr72_c31.zip 
Archive:  b9dr72_c31.zip
  inflating: AFUDOSU.SMC             
  inflating: Readme for AMI BIOS.txt  
  inflating: b9dr72.c31              # <-- This is the file we will use with scmsh
  inflating: ami.bat

Then to update, use the following command:

  # ./scmsh x9biosfw/save bios fw -n <node_name> -f <file_name>

  ./scmsh x9biosfw/flash bios fw -n blade1 -f b9dr72.c31

Here is the log file from /var/tmp/

[root@localhost tmp]# cat x9_flash_bios_log.log
Linux BIOS Flash Utility (for UEFI BIOS) V1.07
Copyright (C) 2012 Super Micro Computer, Inc. All rights reserved.

Finding BIOS ID...
ID found in BIOS: 0070D
ID found in file: 0070D
ID Match!

Writing BIOS flash...
Writing Block 4/128
Writing Block 6/128
Writing Block 94/128
Writing Block 96/128
Writing Block 128/128

Writing finished

Verify the BIOS version before and after the update:

# Before
[root@localhost ~]$ dmidecode | grep Version | head -n 1
	Version: 1.0a

# After
[root@localhost ~]$ dmidecode | grep Version | head -n 1
	Version: 1.0b

Back up BIOS Config

 ./scmsh x9biosfw/backup bios config -n <node_name> -f <file_name> -m <mode>

Restore BIOS Config

 ./scmsh x9biosfw/restore bios config -n <node_name> -f <file_name> -m <mode>

Debugging

If you encounter problems, log files are generated for each command in /var/tmp for each node (so the node the agent/client daemon is running)

[root@localhost scmnode]# cat /var/tmp/*
ERROR:1 Unable to load Driver

----------------------------------------------------------------------------
|	Copyright (c)2011 American Megatrends, Inc.			   |
|	AMISCE Utility. Ver 2.01.1029					   |
----------------------------------------------------------------------------
built date: 08/17/2012
Bios ID: 0070D
ERROR: Too many options '7D1AD92A7 F4FB50265243CA0 -y -B /opt/scmnode/4422/blade1_bios_save'.

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   WARNING:                                 
   This can overwrite your current BIOS and CMOS!   
   Make sure you know what you're doing!    
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

1705FEDA6D60AA5   Version:1.8.20100325
Syntax: 1705FEDA6D60AA5 [-h] [-v] [-y]
                        [-B file] [-b file] [[-x] [-r] -F file] [-f file] [-C]
Options:
   -h       Show this help page.
   -v       Enable verbose mode.
   -y       Assume that the answer to any question which would be asked is yes.
   -B file  Backup (save) current BIOS ROM chip contents to file.
   -b file  Backup (save) current CMOS memory contents to file.
   -x       Disable Supermicro BIOS ID checking while flashing.
   -r       Reserve the BIOS supported NVRAM while flashing.
   -F file  Flash (write) the file contents into the BIOS ROM chip.
   -f file  Flash (write) the file contents into the CMOS memory.
   -C       Clear the CMOS checksums.

Linux BIOS Flash Utility 1.0
Super Micro Copyright Reserved 2012.
cant open device