mirror of
https://git.rtems.org/rtems-docs/
synced 2025-05-15 03:37:03 +08:00
user: Add the boot image tool command.
This commit is contained in:
parent
cf0c79ac22
commit
8c3fac9067
445
user/tools/boot-image.rst
Normal file
445
user/tools/boot-image.rst
Normal file
@ -0,0 +1,445 @@
|
||||
.. SPDX-License-Identifier: CC-BY-SA-4.0
|
||||
|
||||
.. Copyright (C) 2019 Chris Johns <chrisj@rtems.org>
|
||||
|
||||
.. _RTEMSExecutableInfomation:
|
||||
|
||||
RTEMS Boot Image
|
||||
================
|
||||
|
||||
.. index:: Tools, rtems-boot-image
|
||||
|
||||
The RTEMS Boot Image (:program:`rtems-boot-image`) command is an RTEMS
|
||||
tool to create disk images suitable for SD cards to boot RTEMS on a
|
||||
range of boards. The supported hosts are:
|
||||
|
||||
- FreeBSD
|
||||
|
||||
- Linux
|
||||
|
||||
- MacOS
|
||||
|
||||
The tool captures the specific details for a host operating system to
|
||||
create a bootable disk image as well as capturing the specific detail
|
||||
of the boards that are supported. The tool brings these detail
|
||||
together under a sigle command line interface that is portable across
|
||||
the supported hosts.
|
||||
|
||||
The boot image tool can:
|
||||
|
||||
- Create a disk image to boot an RTEMS executable
|
||||
|
||||
- Create a disk image to network boot an RTEMS executable
|
||||
|
||||
- Convert an RTEMS executable into the format a board's bootloader
|
||||
can load.
|
||||
|
||||
The disk images are suitable for booting a range of hardware that have
|
||||
media interfaces, such as an SD card. The default partition type is
|
||||
the Master Boot Record (MRB) and a single root DOS-FS partition is
|
||||
created.
|
||||
|
||||
Boot Loaders
|
||||
------------
|
||||
|
||||
The boot image tool supports the following boot loaders:
|
||||
|
||||
- U-boot
|
||||
|
||||
U-Boot
|
||||
~~~~~~
|
||||
|
||||
The U-Boot boards supported are:
|
||||
|
||||
- BeagleBone (`arm-ti-am335x_evm`)
|
||||
|
||||
- Zedboard (`arm-xilinx-zynq-common`)
|
||||
|
||||
These boards can be booted with executable and Flat Device Tree (FDT)
|
||||
blobs on disk or view a network if supported by the boards.
|
||||
|
||||
The boot image tool can create the following boot configurations for
|
||||
U-Boot:
|
||||
|
||||
- **Executable**
|
||||
|
||||
A kernel executable is copied in the disk image, loaded by U-Boot
|
||||
and control is passed to the kernel. A reset is performed if the
|
||||
load fails or the kernel returns control to U-Boot.
|
||||
|
||||
- **Executable and FDT**
|
||||
|
||||
A kernel executable and FDT blob are copied to the disk image,
|
||||
loaded by U-boot and control is passed to the kernel. A reset is
|
||||
performed if the load fails or the kernel returns control to U-Boot.
|
||||
|
||||
- **Network DHCP and Executable**
|
||||
|
||||
The board's network interface is initialised, a DHCP request made
|
||||
and a kernel image loaded using TFTP. The loaded kernel is passed
|
||||
control. A reset is performed if the load fails or the kernel
|
||||
returns control to U-Boot.
|
||||
|
||||
- **Network DHCP, Executable and FDT**
|
||||
|
||||
The board's network interface is initialised, a DHCP request made
|
||||
and a kernel image loaded using TFTP. The loaded kernel is passed
|
||||
control. A reset is performed if the load fails or the kernel
|
||||
returns control to U-Boot.
|
||||
|
||||
The FDT can be installed in and disk image and loaded from it on
|
||||
each boot.
|
||||
|
||||
- **Network Static IP and Executable**
|
||||
|
||||
The board's network interface is initialised with a static IP
|
||||
address and a kernel image loaded using TFTP. The loaded kernel is
|
||||
passed control. A reset is performed if the load fails or the kernel
|
||||
returns control to U-Boot.
|
||||
|
||||
- **Network Static IP, Executable and FDT**
|
||||
|
||||
The board's network interface is initialised with a static IP
|
||||
address and a kernel image loaded using TFTP. The loaded kernel is
|
||||
passed control. A reset is performed if the load fails or the kernel
|
||||
returns control to U-Boot.
|
||||
|
||||
The FDT can be installed in and disk image and loaded from it on
|
||||
each boot.
|
||||
|
||||
Hosts
|
||||
-----
|
||||
|
||||
The hosts each require specific set up to run the boot image
|
||||
buildier. The tool creates special devices to access the image as a
|
||||
disk and runs file system partitioning and formatting tools. These
|
||||
tools typically require super user or root access. It is not good
|
||||
practice to run commands like this one as root and so the tool
|
||||
dispatches any specific command that needs higher privileges via
|
||||
``sudo``. If you see a password prompt please enter your password, not
|
||||
a root password if you have one confgiured.
|
||||
|
||||
FreeBSD
|
||||
~~~~~~~
|
||||
|
||||
Install the ``sudo`` package. All commands used are in standard
|
||||
operating system paths and should not require any specific
|
||||
configurations.
|
||||
|
||||
Linux
|
||||
~~~~~
|
||||
|
||||
The loop back kernel module needs to be loaded.
|
||||
|
||||
MacOS
|
||||
~~~~~
|
||||
|
||||
All command used are part of the base OS. No external packages are
|
||||
required.
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
The boot image tool is configured by the file :file:`rtems-boot.ini`
|
||||
that is installed in the
|
||||
|
||||
Command
|
||||
-------
|
||||
|
||||
The :program:`rtems-boot-image` tool creates a boot disk image for a
|
||||
specified board. The command line options are:
|
||||
|
||||
:program:`rtems-boot-image`
|
||||
|
||||
.. option:: -h, --help
|
||||
|
||||
Display the command line help.
|
||||
|
||||
.. option:: -l, --log
|
||||
|
||||
Set the log file name. The default is
|
||||
:file:`rtems-log-boot-image.txt`.
|
||||
|
||||
.. option:: -v, --trace
|
||||
|
||||
Enable trace or debug logging.
|
||||
|
||||
.. option:: -s IMAGE_SIZE, --image-size IMAGE_SIZE
|
||||
|
||||
Set the image size. The size can be in SI units of ``k``, ``m``, or
|
||||
``g``. The size needs to be something the host's parition and
|
||||
format tools will accept and it must be large enough to fit the
|
||||
root partition plus any alignments. The default is ``64m``.
|
||||
|
||||
.. option:: -F FS_FORMAT, --fs-format FS_FORMAT
|
||||
|
||||
Specify type type of format. The supported formats are ``fat16``
|
||||
and ``fat32``. The default format is ``fat16``.
|
||||
|
||||
.. option:: -S FS_SIZE, --fs-size FS_SIZE
|
||||
|
||||
Set the size of the first partition in the disk image. The
|
||||
partition need to be less than the size of the image plus the
|
||||
alignment. The default size is ``auto`` which will fill the image
|
||||
with the partition.
|
||||
|
||||
.. option:: -A FS_ALIGN, --fs-align FS_ALIGN
|
||||
|
||||
Set the alignment of the first partition. The default is ``1m``.
|
||||
|
||||
.. option:: -k KERNEL, --kernel KERNEL
|
||||
|
||||
Optionally provide a kernel image that is copied into the root
|
||||
partition of the disk image and loaded and run when the board
|
||||
boots. The file is an RTEMS executable in the ELF format which is
|
||||
converted to a format the boot loader can load.
|
||||
|
||||
.. option:: -d FDT, --fdt FDT
|
||||
|
||||
Optionally provide a FDT blob that is copied into the root
|
||||
partition of the disk image and loaded when the board boots. If a
|
||||
kernel is provided or a kernel is loaded via a net boot a kernel
|
||||
boot with FDT is executabled. The file is an FDT blob created by
|
||||
the FDT compiler.
|
||||
|
||||
.. option:: -f FILE, --file FILE
|
||||
|
||||
Optionally provide a file to be copied to the root partition of the
|
||||
disk image. This option can be provided more than once if more than
|
||||
one file needs to be installed.
|
||||
|
||||
.. option:: --net-boot
|
||||
|
||||
Not used and will be removed.
|
||||
|
||||
.. option:: --net-boot-dhcp
|
||||
|
||||
Configure a network boot using DHCP. The kernel will be loaded
|
||||
using TFTP and the file request can be specific by the
|
||||
``--net-boot-file`` option.
|
||||
|
||||
.. option:: --net-boot-ip NET_BOOT_IP
|
||||
|
||||
Configure a network boot using a static IP address. The kernel will
|
||||
be loaded using TFTP and the file request can be specific by the
|
||||
``--net-boot-file`` option. A server IP needs to be specified using
|
||||
the ``--net-boot-server``.
|
||||
|
||||
.. option:: --net-boot-file NET_BOOT_FILE
|
||||
|
||||
Specify the kernel image file name requested using the TFTP
|
||||
protocol. The default is :file:`rtems.img`.
|
||||
|
||||
.. option:: --net-boot-fdt NET_BOOT_FDT
|
||||
|
||||
Optionally specify the file name of a FDT blob loaded using the
|
||||
TFTP protocol. If a net boot FDT file is provide the kernel will be
|
||||
executable with a suitable kernel and FDT boot command.
|
||||
|
||||
.. option:: -U CUSTOM_UENV, --custom-uenv CUSTOM_UENV
|
||||
|
||||
Optionally provide a custom U-boot :file:`uEnv.txt` file that is
|
||||
copied to into the root directory of the root partition of the disk
|
||||
image.
|
||||
|
||||
.. option:: -b BOARD, --board BOARD
|
||||
|
||||
Specify the board the disk image is built for. The default board is
|
||||
``list`` which lists the available board configurations.
|
||||
|
||||
.. option:: --convert-kernel
|
||||
|
||||
Convert an RTEMS ELF executable into an image file the selected
|
||||
board's bootloader can load. This option does not create a disk
|
||||
image. The option can be used to create images that can be loaded
|
||||
when network booting.
|
||||
|
||||
.. option:: --no-clean
|
||||
|
||||
If provided the :file:`build` directory will not be removed after
|
||||
the disk image has been created.
|
||||
|
||||
.. option:: -o OUTPUT, --output OUTPUT
|
||||
|
||||
The output file name for the image. If the ``--convert-kernel``
|
||||
option is used the conversion is written as this file name and if
|
||||
it is not provided the output file is the built disk image.
|
||||
|
||||
.. option:: paths [paths ...]
|
||||
|
||||
The required paths depend on the mix of other options.
|
||||
|
||||
If the ``--convert-kernel`` option is provided a single path to an
|
||||
RTEMS executable file is required. If this option is not provided
|
||||
the number of paths provided determine how they are processed.
|
||||
|
||||
If a single path a built U-boot directory is provided the board
|
||||
configuration will automatically find and pick up the first and
|
||||
second stage boot loader executables.
|
||||
|
||||
If two paths are provided they are paths to the first and second
|
||||
stage boot loader executables. This can be used with loader images
|
||||
they you have not built.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
The examples show the output for FreeBSD. It may vary depending on
|
||||
your type of host, how it is configured and what is running.
|
||||
|
||||
If the board option is not provided a list of boards is displayed:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
$ rtems-boot-image -o sd-card.img u-boot
|
||||
RTEMS Tools - Boot Image, 5.0.not_released
|
||||
Board list: bootloaders (1)
|
||||
u-boot: 2
|
||||
u-boot-beaglebone
|
||||
u-boot-zedboard
|
||||
|
||||
Create a disk image from a built U-Boot sandbox:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
$ rtems-boot-image -o sd-card.img -b u-boot-beaglebone u-boot
|
||||
RTEMS Tools - Boot Image, 5.0.not_released
|
||||
Create image: sd-card.img size 64m
|
||||
Attach image to device: sd-card.img
|
||||
Password:
|
||||
Partition device: md0 as MBR
|
||||
Format: /dev/md0s1 as fat16
|
||||
Mount: /dev/md0s1
|
||||
Install: MLO
|
||||
Install: u-boot.img
|
||||
Finished
|
||||
Cleaning up
|
||||
|
||||
Create a 32M byte SD card image with the testsuite's hello world
|
||||
executable (``hello.exe``):
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
$ rtems-boot-image -o sd-card.img -b u-boot-beaglebone -s 32m -k hello.exe u-boot
|
||||
RTEMS Tools - Boot Image, 5.0.not_released
|
||||
Create image: sd-card.img size 32m
|
||||
Attach image to device: sd-card.img
|
||||
Password:
|
||||
Partition device: md0 as MBR
|
||||
Format: /dev/md0s1 as fat16
|
||||
Mount: /dev/md0s1
|
||||
Install: MLO
|
||||
Install: u-boot.img
|
||||
Install: hello.exe.img
|
||||
Uenv template: uenv_exe
|
||||
Install: uEnv.txt
|
||||
Finished
|
||||
Cleaning up
|
||||
|
||||
Build the same image using the first and second stage boot loaders:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
$ rtems-boot-image -o sd-card.img -b u-boot-beaglebone -s 32m -k hello.exe MLO u-boot.img
|
||||
RTEMS Tools - Boot Image, 5.0.not_released
|
||||
Create image: sd-card.img size 32m
|
||||
Attach image to device: sd-card.img
|
||||
Password:
|
||||
Partition device: md0 as MBR
|
||||
Format: /dev/md0s1 as fat16
|
||||
Mount: /dev/md0s1
|
||||
Install: MLO
|
||||
Install: u-boot.img
|
||||
Install: hello.exe.img
|
||||
Uenv template: uenv_exe
|
||||
Install: uEnv.txt
|
||||
Finished
|
||||
Cleaning up
|
||||
|
||||
Install and load the TI standard FDT for the Beaglebone Black board
|
||||
with the LibBSD DHCP 01 test application:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
$ rtems-boot-image -o sd-card.img -b u-boot-beaglebone -s 32m \
|
||||
-k dhcpcd01.exe -d am335x-boneblack.dtb MLO u-boot.img
|
||||
RTEMS Tools - Boot Image, 5.0.not_released
|
||||
Create image: sd-card.img size 32m
|
||||
Attach image to device: sd-card.img
|
||||
Password:
|
||||
Partition device: md0 as MBR
|
||||
Format: /dev/md0s1 as fat16
|
||||
Mount: /dev/md0s1
|
||||
Install: MLO
|
||||
Install: u-boot.img
|
||||
Install: dhcpcd01.exe.img
|
||||
Install: am335x-boneblack.dtb
|
||||
Uenv template: uenv_exe_fdt
|
||||
Install: uEnv.txt
|
||||
Finished
|
||||
Cleaning up
|
||||
|
||||
Create a DHCP network boot image where the TFTP client requests ``rtems.img``:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
$ rtems-boot-image -o sd-card.img -b u-boot-beaglebone -s 32m \
|
||||
--net-boot-dhcp MLO u-boot.img
|
||||
RTEMS Tools - Boot Image, 5.0.not_released
|
||||
Create image: sd-card.img size 32m
|
||||
Attach image to device: sd-card.img
|
||||
Password:
|
||||
Partition device: md0 as MBR
|
||||
Format: /dev/md0s1 as fat16
|
||||
Mount: /dev/md0s1
|
||||
Install: MLO
|
||||
Install: u-boot.img
|
||||
Uenv template: uenv_net_dhcp
|
||||
Install: uEnv.txt
|
||||
Finished
|
||||
Cleaning up
|
||||
|
||||
Select a specific kernel image to load using TFTP and load a FDT blob
|
||||
from the SD card:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
$ rtems-boot-image -o sd-card.img -b u-boot-beaglebone -s 32m \
|
||||
--net-boot-dhcp --net-boot-file bbb1a.img \
|
||||
-d am335x-boneblack.dtb MLO u-boot.img
|
||||
RTEMS Tools - Boot Image, 5.0.not_released
|
||||
Create image: sd-card.img size 32m
|
||||
Attach image to device: sd-card.img
|
||||
Password:
|
||||
Partition device: md0 as MBR
|
||||
Format: /dev/md0s1 as fat16
|
||||
Mount: /dev/md0s1
|
||||
Install: MLO
|
||||
Install: u-boot.img
|
||||
Install: am335x-boneblack.dtb
|
||||
Uenv template: uenv_net_dhcp
|
||||
Install: uEnv.txt
|
||||
Finished
|
||||
Cleaning up
|
||||
|
||||
Create an image where a specific kernel image and FDT blob is loaded
|
||||
using the TFTP protocol:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
$ rtems-boot-image -o sd-card.img -b u-boot-beaglebone -s 32m \
|
||||
--net-boot-dhcp --net-boot-file bbb1a.img \
|
||||
--net-boot-fdt bbb/am335x-boneblack.dtb MLO u-boot.img
|
||||
RTEMS Tools - Boot Image, 5.0.not_released
|
||||
Create image: sd-card.img size 32m
|
||||
Attach image to device: sd-card.img
|
||||
Password:
|
||||
Partition device: md0 as MBR
|
||||
Format: /dev/md0s1 as fat16
|
||||
Mount: /dev/md0s1
|
||||
Install: MLO
|
||||
Install: u-boot.img
|
||||
Uenv template: uenv_net_dhcp_net_fdt
|
||||
Install: uEnv.txt
|
||||
Finished
|
||||
Cleaning up
|
@ -22,3 +22,4 @@ developers.
|
||||
exeinfo
|
||||
bsp-builder
|
||||
tester
|
||||
boot-image
|
||||
|
Loading…
x
Reference in New Issue
Block a user