[U-Boot] Help needed: Boot signed RTOS

Christopher Preschern christopher.preschern at tugraz.at
Wed Nov 20 18:49:45 CET 2013


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)
        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


More information about the U-Boot mailing list