acrn-hypervisor/doc/tutorials/using_sbl_on_up2.rst

311 lines
11 KiB
ReStructuredText
Raw Normal View History

2019-01-04 11:27:32 +08:00
.. _using-sbl-up2:
Using SBL on UP2 Board
2019-01-04 11:27:32 +08:00
######################
This document builds on the :ref:`getting-started-up2`, and explains how to use
SBL instead of UEFI to boot UP2 board.
2019-01-04 23:25:07 +08:00
Slim Bootloader is an open-source boot firmware solution,
built from the ground up to be secure, lightweight, and highly
optimized while leveraging robust tools and libraries from
2019-01-06 18:13:27 +08:00
the EDK II framework. For more information about booting ACRN with SBL,
please visit `<https://slimbootloader.github.io/how-tos/boot-acrn.html>`_.
2019-01-04 23:25:07 +08:00
2019-01-04 11:27:32 +08:00
.. image:: images/sbl_boot_flow_UP2.png
:align: center
We show a verified Boot Sequence with SBL on an Intel® Architecture platform UP2,
2019-01-04 11:27:32 +08:00
and the boot process proceeds as follows:
#. SBL verifies and boots the ACRN hypervisor and Service OS kernel
2019-01-04 23:25:07 +08:00
#. Service OS kernel verifies and loads ACRN Device Model and vSBL
2019-01-04 11:27:32 +08:00
#. vSBL starts the User-side verified boot process
Prerequisites
*************
The following hardware and software are required to use SBL on an UP2 board:
* UP2 kit (`Model N3350 <https://up-shop.org/up-boards/94-up-squared-celeron-duo-core-4gb-memory32gb-emmc.html>`_)
* `USB 2.0 Pin Header Cable <https://up-shop.org/up-peripherals/110-usb-20-pin-header-cable.html>`_ for debug UART output
* USB to TTL Serial Cable (PL2303TA for example) for debug UART output
* 3 Pin Male To Male Jumper Cable Dupont Wire for debug UART output
* Micro USB OTG Cable for flashing
2019-01-04 11:27:32 +08:00
* Linux host
* Internet access
.. image:: images/up2_sbl_connections.png
:align: center
The connections between USB to TTL Serial Cable and USB 2.0 Pin Header
Cable should be:
.. image:: images/up2_sbl_cables_connections.png
:align: center
2019-01-04 11:27:32 +08:00
Build SBL
*********
Follow the steps of `Building <https://slimbootloader.github.io/supported-hardware/up2.html#building>`_
and `Stitching <https://slimbootloader.github.io/supported-hardware/up2.html#stitching>`_
from `<https://slimbootloader.github.io/supported-hardware/up2.html>`_ to generate the
2019-01-04 11:27:32 +08:00
BIOS binary file ``<SBL_IFWI_IMAGE>``, which is the new IFWI image with SBL in BIOS region.
Flash SBL on the UP2
********************
#. Download the appropriate BIOS update for `UP2 Board <https://downloads.up-community.org/download/up-board-uefi-bios-upc1dm15/>`_.
#. Put the empty USB flash drive in your PC and format it as FAT32.
#. Decompress the BIOS zip file into the formatted drive.
2019-01-04 11:27:32 +08:00
#. Attach the USB disk and keyboard to the board and power it on.
2019-01-04 23:25:07 +08:00
#. During boot, press :kbd:`F7` on the keyboard to enter the UEFI BIOS boot menu.
#. Navigate through the following menus and select ``Built-in EFI shell``.
2019-01-04 11:27:32 +08:00
#. Please take note of which filesystem number ``fs*`` your USB drive is mapped to.
2019-01-04 23:25:07 +08:00
#. Switch to that filesystem, e.g. ``fs1:``. (Don't forget the colon.)
2019-01-04 11:27:32 +08:00
#. Navigate to the path where you decompressed the update (the ``cd`` and ``ls`` commands are available here, as if in an Unix shell).
2019-01-04 11:27:32 +08:00
.. code-block:: none
2019-01-04 23:25:07 +08:00
Fpt_3.1.50.2222.efi -f <SBL_IFWI_IMAGE> -y
2019-01-04 11:27:32 +08:00
Build ACRN for UP2
******************
In Clear Linux, build out the SOS and LaaG image with these two files:
* create-up2-images.sh
* uos.json
An example of the configuration file ``uos.json``:
.. code-block:: none
{
"DestinationType" : "virtual",
"PartitionLayout" : [ { "disk" : "clearlinux.img", "partition" : 1, "size" : "100M", "type" : "EFI" },
{ "disk" : "clearlinux.img", "partition" : 2, "size" : "10G", "type" : "linux" } ],
"FilesystemTypes" : [ { "disk" : "clearlinux.img", "partition" : 1, "type" : "vfat" },
2019-01-04 11:27:32 +08:00
{ "disk" : "clearlinux.img", "partition" : 2, "type" : "ext4" } ],
"PartitionMountPoints" : [ { "disk" : "clearlinux.img", "partition" : 1, "mount" : "/boot" },
{ "disk" : "clearlinux.img", "partition" : 2, "mount" : "/" } ],
"Version": 27230,
2019-01-04 11:27:32 +08:00
"Bundles": ["kernel-iot-lts2018", "openssh-server", "software-defined-cockpit", "os-core", "os-core-update"]
}
.. note::
To generate the image with a specified version, please modify
the "Version" argument, ``"Version": 2****`` instead
of ``"Version": 27230`` for example.
2019-01-04 11:27:32 +08:00
2019-01-10 11:06:38 +08:00
Clone the source code of ``acrn-hypervisor`` for building and use
``v0.5`` release for example:
2019-01-04 11:27:32 +08:00
.. code-block:: none
$ cd ~
$ git clone https://github.com/projectacrn/acrn-hypervisor
2019-01-10 11:06:38 +08:00
$ cd acrn-hypervisor
$ git checkout v0.5
.. note::
2019-01-10 11:15:37 +08:00
You can switch to other version with the command ``git checkout`` if needed.
Build SOS and LaaG image:
.. code-block:: none
$ sudo -s
# ./acrn-hypervisor/devicemodel/samples/up2/create-up2-images.sh --images-type all \
--clearlinux-version 27230 --laag-json uos.json --acrn-code-path /path/to/acrn-hypervisor/
2019-01-04 11:27:32 +08:00
.. note::
You must have root privileges to run ``create-up2-images.sh``.
.. note::
Please modify the ``--acrn-code-path`` argument to the diretory
of ``acrn-hypervisor``.
2019-01-04 11:27:32 +08:00
.. note::
When building images, you can modify the ``--clearlinux-version`` argument
to a specific version (such as 26800). To generate the images of SOS only,
modify the ``--images-type`` argument to ``sos``.
2019-01-04 11:27:32 +08:00
This step will generate the images of SOS and LaaG:
* sos_boot.img
* sos_rootfs.img
* up2_laag.img
Build the binary image ``partition_desc.bin`` for
GPT partitions, and change the partition layout
in ``partition_desc.ini`` if needed.
2019-01-04 11:27:32 +08:00
.. code-block:: none
$ cd ~/acrn-hypervisor/doc/tutorials/doc/tutorials/
$ sudo -s
# python2 gpt_ini2bin.py partition_desc.ini>partition_desc.bin
2019-01-04 11:27:32 +08:00
We still need the configuration file ``flash_LaaG.json`` for flashing,
which is also in the directory ``~/acrn-hypervisor/doc/tutorials/``.
2019-01-04 11:27:32 +08:00
.. table::
:widths: auto
+------------------------------+---------------------------------------------------+
| Filename | Description |
+==============================+===================================================+
| sos_boot.img | This SOS image contains the ACRN hypervisor and |
| | SOS kernel. |
+------------------------------+---------------------------------------------------+
| sos_rootfs.img | This is the root filesystem image for the SOS. it |
| | contains the Device Models implementation and |
| | SOS user space. |
+------------------------------+---------------------------------------------------+
| partition_desc.bin | This is the binary image for GPT partitions |
+------------------------------+---------------------------------------------------+
| up2_laag.img | This is the root filesystem image for the SOS. |
| | It has an integrated kernel and userspace. |
+------------------------------+---------------------------------------------------+
| flash_LaaG.json | Configuration file for Intel® Platform Flash Tool |
| | to flash SOS image + hypervisor/SOS boot image + |
| | SOS userland |
+------------------------------+---------------------------------------------------+
.. note::
In this step, please build SOS and LaaG images in Clear Linux rather than Ubuntu.
2019-01-04 11:27:32 +08:00
Download and install flash tool
*******************************
#. Download Intel® Platform Flash Tool Lite from
`<https://github.com/projectceladon/tools/tree/master/platform_flash_tool_lite/latest/>`_.
2019-01-04 11:27:32 +08:00
#. For Ubuntu host, install `platformflashtoollite_5.8.9.0_linux_x86_64.deb
<https://github.com/projectceladon/tools/blob/master/platform_flash_tool_lite/latest/platformflashtoollite_5.8.9.0_linux_x86_64.deb>`_
for example.
2019-01-04 11:27:32 +08:00
SOS and LaaG Installation
*************************
#. Connect a USB cable from the debug board to your Ubuntu host machine,
and run the following command to verify that its USB serial port is
2019-01-04 11:27:32 +08:00
discovered and showing under ``/dev``.
.. code-block:: none
$ ls /dev/ttyUSB*
2019-01-04 11:27:32 +08:00
/dev/ttyUSB0
2019-01-06 18:13:27 +08:00
#. Connect to board via ``minicom``, and use ``/dev/ttyUSB0`` for example:
2019-01-04 11:27:32 +08:00
.. code-block:: none
$ sudo minicom -s /dev/ttyUSB0
2019-01-04 11:27:32 +08:00
.. note::
Please verify the minicom serial port settings are 115200 8N1 and
both HW and SW flow control are turned off.
2019-01-04 11:27:32 +08:00
#. When you see following console log, please press any key to enter
2019-01-04 11:27:32 +08:00
shell command
.. code-block:: none
2019-01-04 11:27:32 +08:00
====================Os Loader====================
2019-01-04 11:27:32 +08:00
Press any key within 2 second(s) to enter the command shell
2019-01-04 11:27:32 +08:00
Shell>
#. Swap the boot sequence of ``DevType: MEM`` to ``Idx:0``:
.. code-block:: none
Shell> boot
Boot options (in HEX):
Idx|ImgType|DevType|DevNum|Flags|HwPart|FsType|SwPart|File/Lbaoffset
0| 0| MMC | 0 | 0 | 0 | RAW | 1 | 0x0
1| 4| MEM | 0 | 0 | 0 | RAW | 0 | 0x0
SubCommand:
s -- swap boot order by index
a -- modify all boot options one by one
q -- quit boot option change
idx -- modify the boot option specified by idx (0 to 0x1)
s
Updated the Boot Option List
Boot options (in HEX):
Idx|ImgType|DevType|DevNum|Flags|HwPart|FsType|SwPart|File/Lbaoffset
0| 4| MEM | 0 | 0 | 0 | RAW | 0 | 0x0
1| 0| MMC | 0 | 0 | 0 | RAW | 1 | 0x0
2019-01-04 11:27:32 +08:00
#. Exit and reboot to fastboot mode:
.. code-block:: none
2019-01-04 11:27:32 +08:00
Shell> exit
2019-01-04 11:27:32 +08:00
2019-01-04 11:27:32 +08:00
40E0 | 175118 ms | 158 ms | Kernel setup
40F0 | 175144 ms | 26 ms | FSP ReadyToBoot/EndOfFirmware notify
4100 | 175144 ms | 0 ms | TPM IndicateReadyToBoot
------+------------+------------+----------------------------------
Starting MB Kernel ...
abl cmd 00: console=ttyS0,115200
abl cmd 00 length: 20
abl cmd 01: fw_boottime=175922
abl cmd 01 length: 18
boot target: 1
target=1
Enter fastboot mode ...
Start Send HECI Message: EndOfPost
HECI sec_mode 00000000
GetSeCMode successful
GEN_END_OF_POST size is 4
uefi_call_wrapper(SendwACK) = 0
Group =000000FF
Command =0000000C
IsRespone=00000001
Result =00000000
RequestedActions =00000000
USB for fastboot transport layer selected
#. When UP2 board is in fastboot mode, you should be able
see the device in Platform Flash Tool. Select the
2019-01-04 11:27:32 +08:00
file ``flash_LaaG.json`` and modify ``Configuration``
to ``SOS_and_LaaG``. Click ``Start to flash`` to flash images.
2019-01-04 11:27:32 +08:00
.. image:: images/platformflashtool_start_to_flash.png
:align: center
Boot to SOS
2019-01-04 11:27:32 +08:00
***********
After flashing, UP2 board will automatically reboot and
2019-01-04 11:27:32 +08:00
boot to ACRN hypervisor. And login SOS by following command:
.. image:: images/sos_console_login.png
:align: center
Launch UOS
**********
Run the ``launch_uos.sh`` script to launch the UOS:
.. code-block:: none
$ cd ~
$ wget https://raw.githubusercontent.com/projectacrn/acrn-hypervisor/master/doc/tutorials/launch_uos.sh
$ sudo ./launch_uos.sh -V 1
**Congratulations**, you are now watching the User OS booting up!