# How to update bare metal ppc64el firmware

This is an excerpt from IBM PowerKVM on IBM POWER8.

Open Power Abstraction Layer (OPAL) is the system firmware in the stack of POWER processor-based server.

There may be instances when the user might have to upgrade the Power Systems firmware to a more recent level to acquire new features or additional support for devices.

Make sure that the following requirements are met:

- an OS to be running on the system;

- the .img file of the OPAL level that the user needs to update to;

- the machine isn't under HMC control.

Power Systems has two sides of flash to boot firmware from, namely permanent and temporary. This provides a way to test firmware updates on the temporary side of the flash before committing the tested changes to the permanent side, thereby committing the new updates.

Perform the following steps for the update:

1. Save the level of the existing firmware before really updating. In ASM, in the system menu, click `Service Aids -> Service Processor Command Line`, and run the following command:

            cupdcmd -f

2. Download the .img file of the level of firmware to be updated to a location in the host filesystem. Refer to IBM Fix Central for downloading the image file.

   Verify the image downloaded by running the following command and save the output.

           $update_flash -v -f <file_name.img>

3. Update the firmware by running the following command.

           $update_flash -f <file_name.img>

   - The command reboots the system and therefore, sessions if any, would be lost.

   - Do not reboot or switch off the system until it is back.

4. Verify the updated firmware level of the temporary side of the flash as in step 1.

5. In case the update has to be reverted, the user can do so by running this command:

           $update_flash -r

   Rejection would reject only the temporary side of the flash. Therefore, the new level should be committed to the permanent side only after thorough testing of the new firmware.

   The new updated level can be committed to the permanent side of the flash by running the following command.

           $update_flash -c

## Updating KVM guest firmware (SLOF)

Slimline Open Firmware (SLOF) is an implementation of the IEEE 1275 standard. It can be used as partition firmware for pSeries machines running on QEMU or KVM.

The package qemu-slof is, in fact, a dependency of package qemu-system-ppc (which also provides the virtual package qemu-system-ppc64), and can be installed or updated via `apt` tool on Debian-based distros. Like so:

    # apt install qemu-slof

SLOF can also be installed into rpm-based distribution systems, given the proper repository or rpm package. Additionally, the upstream source code is available at .

Thus, one can use a different SLOF file rather than the default, when running `qemu-system`, by adding the command line argument `-bios <slof_file>` when starting qemu.

## Updating PowerKVM hypervisor

## Instructions for Netboot installation

You will need a DHCP/TFTP (BOOTP) server, as well as a web server. After downloading ibm-powerkvm-*-ppc64-service-*.iso, mount loop it and unpack it into some directory within your HTTP server www root structure (say wwwroot):

    # cd <directory-where-the-iso-is>
    # mkdir ./iso
    # sudo mount -o loop ibm-powerkvm-*-ppc64-service-*.iso ./iso
    # cp -a ./iso/* <path-to-wwwroot>

Create the petitboot.conf file in a directory under your tftproot, say /tftproot/powerkvm, with the following contents:

    label PowerKVM Automated Install
    kernel http://YOUR-SERVER-IP/SOME-PATH-TO-wwwroot/ppc/ppc64/vmlinuz
    initrd http://YOUR-SERVER-IP/SOME-PATH-TO-wwwroot/ppc/ppc64/initrd.img
    append root=live:http://YOUR-SERVER-IP/SOME-PATH-TO-wwwroot/LiveOS/squashfs.img repo=http://YOUR-SERVER-IP/SOME-PATH-TO-wwwroot/packages rd.dm=0 rd.md=0 console=hvc0 console=tty0

Editing your dhcpd.conf, set this directive at the beginning:

    option conf-file code 209 = text;

Add the system directive:

    host <your-system> {
        hardware ethernet <system macaddr>
        fixed-address <system ip>;
        option host-name "<system hostname>";
        option conf-file "<powerkvm/petitboot.conf>";
     }

Reboot the dhcp server.

Boot your PowerLinux machine.

There should be the following option at petitboot (select it):

    "Power KVM Automated Install"

The installer menu should appear automatically.

## Instructions for DVD

Boot the ISO ibm-powerkvm-*-ppc64-service-*.iso (either burn a DVD or make it virtual if using QEMU) and simply wait for the boot.

There should be the following option at petitboot (select it):

    "POWERKVM_LIVECD"

The installer menu should appear automatically.