Armadilloフォーラム

USBメモリからのbootについて

ak-satou

2021年9月6日 23時19分

佐藤(彰)と申します。

https://armadillo.atmark-techno.com/howto/linux-kernel-usbboot
を参考にして、USBメモリからのbootを試みましたが、boot.txtにミスがあるのか、boot時に以下のメッセージが表示されてbootできません。

reading boot.scr
967 bytes read in 11 ms (85 KiB/s)
Running bootscript from mmc ...
## Executing script at 82000000
Wrong image format for "source" command
=>

boot.scrに問題があるのでしょうか?
ご教授の程、よろしくお願いいたします。

boot.scr作成時のboot.txtを添付いたします。

コメント

佐藤です。

> boot.scr作成時のboot.txtを添付いたします。
こちら添付されていないようです。
再度添付お願いします。

佐藤様
> > boot.scr作成時のboot.txtを添付いたします。
> こちら添付されていないようです。
> 再度添付お願いします。

失礼いたしました。
添付いたしました。

ファイル ファイルの説明
boot.txt

at_akihito.irie

2021年9月9日 11時40分

入江です。

当方でお客様が添付されたboot.txtからboot.scrを生成し、Armadillo-X1の
mmcblk2p1に配置して起動してみましたが、正常に動作しました。

改めて標準の最新版U-bootをArmadillo-X1に書き込み直し、boot.scrが正しく
実行されるかご確認ください。

また、boot.scrを生成する際のコマンドに間違いはありませんでしょうか。
こちらも改めて以下のコマンドをコピーアンドペーストして実行し、boot.scr
を再生成し直した上で動作確認をしてみてください。

[ATDE]$ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -d boot.txt boot.scr

入江様

> 改めて標準の最新版U-bootをArmadillo-X1に書き込み直し、boot.scrが正しく
> 実行されるかご確認ください。
>
U-bootの最新版はat21のようですが、こちらで確認した際は、御社よりダウンロードしたat20を使用しておりました。
最新版のat21でないとダメでしょうか?

> また、boot.scrを生成する際のコマンドに間違いはありませんでしょうか。
> こちらも改めて以下のコマンドをコピーアンドペーストして実行し、boot.scr
> を再生成し直した上で動作確認をしてみてください。
>
>

> [ATDE]$ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -d boot.txt boot.scr
> 

>
>
上記にて、再度、boot.scrを作成し、当該boot.scrと比較してみたところ、差異がありません。
再度、動作確認してみてもよいのですが、boot.scrの作成方法に問題があったのであれば、同じ結果になるような気がします。

mkimageで生成したboot.scrを添付いたします。
・boot.scr・・・・・ ・上記コマンドにて作成したboot.scr
・old_boot.scr・・・・bootに失敗した際のboot.scr
・boot.scr.hex ・・・・boot.scrをxxdにてhexダンプ
・old_boot.scr.hex・・old_boot.scrをxxdにてhexダンプ

ファイル ファイルの説明
boot.scr_.zip

at_akihito.irie

2021年9月9日 18時10分

入江です。

最初に頂いたboot.txtから、当方で生成したboot.scrを添付いたします。
こちらであれば、Armadilloに書き込んで正しく動作するはずです。

大きな違いとして、お客様のboot.scrはヘッダ部分がゼロ埋めされてしまって
います。
どうしてそうなってしまうのかの原因は突き止められておりませんので、よろ
しければ以下の情報を教えていただけますでしょうか。

1. mkimageのバージョン

[PC]$ mkimage -V

2. boot.scr生成時(mkimage実行時)のログ
3. 実行環境

以上、よろしくお願いいたします。

入江様

> 最初に頂いたboot.txtから、当方で生成したboot.scrを添付いたします。
> こちらであれば、Armadilloに書き込んで正しく動作するはずです。
>
ファイルが添付されていないようです。

改めて調査した結果、以下判明しました。
(1)ATDE7にてホストOSとの共有フォルダ―配下のディレクトリにてmkimageを実行すると当該不具合が発生する。
 ATDE7をOracle VM Virtual Boxで使用しておりますが、ホストOSであるWindows10のC:\ATDEVMshareをATDE7の~/win10を共有しており、~/win10以下のディレクトリ上に配置したboot.txtでmkimageにてboot.scrを作成すると当該不具合が発生します。

(2)上記以外のホストOSと共有していないディレクトリでmkimageを実行すると当該不具合は発生しない。
例えば/home/atmark上に配置されているboot.txtでmkimageにてboot.scrを作成すると当該不具合は発生しません。

(1)で作成されたboot.scrのヘッダはゼロが埋められていますが、(2)で作成されたヘッダは正常そうに見えます。
※添付ファイル参照

(2)で作成したboot.scrをArmadillo-X1に配置したところ、USBブートに成功しました。

> どうしてそうなってしまうのかの原因は突き止められておりませんので、よろ
> しければ以下の情報を教えていただけますでしょうか。
>
> 1. mkimageのバージョン
>

atmark@atde7:~$ mkimage -V
mkimage version 2016.11+dfsg1-4

> 2. boot.scr生成時(mkimage実行時)のログ
>

atmark@atde7:~/win10/boot_scr_test$ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -d boot.txt boot.scr
Image Name:   
Created:      Thu Sep  9 18:53:03 2021
Image Type:   ARM Linux Script (uncompressed)
Data Size:    903 Bytes = 0.88 kB = 0.00 MB
Load Address: 00000000
Entry Point:  00000000
Contents:
   Image 0: 895 Bytes = 0.87 kB = 0.00 MB

※ちなみに正常時も異常時も同じログでした。

> 3. 実行環境
>
仮想マシンデータイメージ:ATDE7
仮想環境:Oracle VM Virtual Box 6.0.8 r130520 (Qt5.6.2)
ホストOS:Windows 10 pro 20H2 OSビルド19042.1083

以上、よろしくお願いいたします。

ファイル ファイルの説明
boot_scr_trouble.zip

at_akihito.irie

2021年9月10日 10時17分

入江です。

> ファイルが添付されていないようです。

申し訳ございません、失念しておりました。
既にお客様の環境でもboot.scrがビルドできているとのことで、必要ないかも
知れませんが添付します。

> (1)ATDE7にてホストOSとの共有フォルダ―配下のディレクトリにてmkimageを実行すると当該不具合が発生する。

原因究明とご報告ありがとうございます。

しかし、当方でも以下の環境で共有フォルダを作成し、その下でmkimageを試
しましたが再現しませんでした。

仮想環境: Oracle VM VirtualBox 6.1.22 r144080 (Qt5.6.2)
ホストOS: Windows10 pro 21H1 OSビルド 19043.1165
ゲストOS: atde7-i386-20210618

VirtualBoxのバージョンの違いによるものなのかは定かではありませんが、ひ
とまず共有フォルダ以外の場所でmkimageして頂く形で対応していただければ
と思います。

ファイル ファイルの説明
boot.scr_.zip 当方で作成したboot.scr(zip圧縮)です。

つくば在住の小林と申します。同様の問題に遭遇しましたが、boot.txtを修正することにより、usbブートに成功しましたので、参考までにご報告します。
-----------[以下、修正ソース]------------

setenv get_usbstart usb start
setenv usbstop usb stop
setenv usbboot_usbdev 0
setenv usbboot_part 1
setenv get_usbboot_enable fatload usb ${usbboot_usbdev}:${usbboot_part} ${loadaddr} usbboot_enable
setenv boot_start bootm ${loadaddr} - ${fdt_addr}
 
if run get_usbstart; then
 if run get_usbboot_enable; then
  echo try USB boot...
  setenv usbdev 0
  setenv usbpart 1
  setenv usbroot /dev/sda2 rootwait rw
 
  setenv usbargs setenv bootargs console=${console},${baudrate} root=${usbroot} ${optargs}
  setenv loadfdt fatload usb ${usbdev}:${usbpart} ${fdt_addr} ${fdt_file}
  setenv loadimage fatload usb ${usbdev}:${usbpart} ${loadaddr} ${image}
 fi
fi
 
if run usbargs; then
 if run loadfdt; then
  if run loadimage; then
[   if run usbstop; then ] この行削除
    run boot_start
[   fi  ] この行削除
  fi
 fi
else
 if run mmcargs; then
  if run loadfdt; then
   if run loadimage; then
    run boot_start
   fi
  fi
 fi
fi

-----------[以上、修正ソース]------------
USBブートする前にUSBを無効にするのはおかしいとの素人考えです。

> 佐藤様
> > > boot.scr作成時のboot.txtを添付いたします。
> > こちら添付されていないようです。
> > 再度添付お願いします。
>
> 失礼いたしました。
> 添付いたしました。
>