[U-Boot] Help needed: Boot signed RTOS

Simon Glass sjg at chromium.org
Wed Nov 20 19:45:40 CET 2013


Hi Christopher,


On Wed, Nov 20, 2013 at 10:49 AM, Christopher Preschern <
christopher.preschern at tugraz.at> wrote:

> Hi,
>
> I try to boot a signed RTOS as FIT Image with the bootm command and I'm
> kind of stuck here - any help well appreciated. When booting, U-Boot shows
> the following error message:
>   “No Linux ARM Kernel Image Image
>    ERROR: can't get kernel image!”
>
> My questions:
>  - Is it possible to boot a signed RTOS with U-Boot?
>  - Is there something I do wrong (I'm rather new to U-Boot)?
>
>
> I use the following setup:
>  - U-Boot 2013.07
>  - i.MX28 board
>  - safeRTOS which I can boot with the bootelf command
>
> The following mkimage command (which does not yet create a signature)
> works and produces a with bootm bootable "u-rtos" file:
>   mkimage -A arm -C none -O qnx -T kernel_noload -d safeRTOS u-rtos
>
> I tried to re-build the above parameters in my .its File (which I need to
> use the signing features of mkimage):
>
>   /dts-v1/;
>   / {
>     description = "MY-RTOS";
>     #address-cells = <1>;
>     images {
>       kernel at 1 {
>         description = "MY-RTOS";
>         data = /incbin/("./my-rtos-image");
>         type = "kernel_noload";
>         arch = "arm";
>         os = "qnx";
>         compression = "none";
>         signature at 1 {
>           algo = "sha1,rsa2048";
>           key-name-hint = "dev";
>         };
>       };
>     };
>     configurations {
>       default = "conf at 1";
>       conf at 1 {
>         kernel = "kernel at 1";
>         hash at 1 {
>           algo = "sha1";
>         };
>       };
>     };
>   };
>
> I run the following command to get my FIT-file:
>   mkimage -f rtos.its -k <path-to-my-keys> rtos.fit
>
> When booting the FIT file with bootm, I get the following output:
>
>   => bootm 0x42000000
>   ## Loading kernel from FIT Image at 42000000 ...
>      Using 'conf at 1' configuration
>      Verifying Hash Integrity ... OK
>      Trying 'kernel at 1' kernel subimage
>        Description:  safeRTOS Kernel
>        Type:         Kernel Image (no loading done)
>

This means Linux kernel. You probably need a new type - the one you are
using is this one (common/image.c):

{ IH_TYPE_KERNEL_NOLOAD, "kernel_noload",  "Kernel Image (no loading
done)", },

You can add a new type in include/image.h but will need to also add support
for it in a few places.


>        Compression:  uncompressed
>        Data Start:   0x420000b8
>        Data Size:    1543860 Bytes = 1.5 MiB
>        Sign algo:    sha1,rsa2048:dev
>        Sign value:   45bd54112.........99d0d710
>      Verifying Hash Integrity ... sha1,rsa2048:dev+ OK
>   No Linux ARM Kernel Image Image
>   ERROR: can't get kernel image!
>
> It seems that the whole signature-checking works. However U-Boot
> apparently expects a kernel and instead gets my RTOS to boot. How can I
> tell U-Boot that I want to run my bootelf-runable RTOS?
>
> I'm really stuck here - any help is very much appreciated!
>
> thank you & best regards,
> Christopher
>
>
> --
>   ------------------------------------------------------------------
> | Christopher Preschern
> | Institute for Technical Informatics - TU Graz
> | Tel: +43 (316) 873 - 6404
> | EMail: christopher.preschern at tugraz.at
>

Regards,
Simon


More information about the U-Boot mailing list