Armadilloフォーラム

Armadillo-IoT G3L 用のインストールディスクイメージ作成方法

eriko0305

2017年7月3日 20時49分

いつもお世話になっております。

Armadillo-IoT ゲートウェイ G3L 用のインストールディスクイメージ(imgファイル)の作成方法を教えていただけないでしょうか?

●目的
microSDカードに自作したアプリケーションを組み込んだインストールイメージを書き込み、
SDブートによりインストールを行いたいと思っております。
OSの設定は、デフォルトのものからシステムログの出力方法等をカスタマイズしたいと考えております。

●確認したこと
・atmark-distを使用すると、カーネルのカスタマイズやフラッシュメモリに書き込むイメージファイルの作成が可能なようですが、
 Armadillo-IoT ゲートウェイ G3L は、atmark-distには対応していないようです。
・下記、フォーラムを参考にインストールディスクイメージの作成を試みましたが、
保守モードでboot起動するとインストールスクリプトが無限ループしてしまうように思います。
https://users.atmark-techno.com/blog/1913/2426
・Armadillo-IoT ゲートウェイ G3L 製品マニュアルにある「6.2. ソフトウェアを初期化する」にあるimgファイルを使ったソフトウェアの初期化を実施し、
 同じような手順でインストールができるようにしたいと思い、質問させていただきました。

よろしくお願いいたします。

コメント

溝渕です。

> Armadillo-IoT ゲートウェイ G3L 用のインストールディスクイメージ(imgファイル)の作成方法を教えていただけないでしょうか?

以下のドキュメントを参照してルートファイルシステムを構築後、デフォルト
のインストールディスクイメージを書き込んだSDカード内のルートファイルシ
ステムアーカイブを上書きしてください。

http://manual.atmark-techno.com/armadillo-iot-g3l/armadillo-iotg-g3l_pr…

自作アプリケーションを追加するには、x1-debian-builderをカスタマイズす
る必要があります。修正するのは次のファイルです。
aiotg3l_resources/resources/fixup

例えば、"myapp"ファイルをインストールする場合は、次のようにカスタマイズします。

1. aiotg3l_resources/resources/直下にmyappを配置
2. aiotg3l_resources/resources/fixupに次の行を追加
cp /resources/myapp /usr/local/bin/myapp

また、インストールディスク内に、以下のようにルートファイルシステムアー
カイブのファイル名とMD5SUMハッシュが記載されているので、適切に修正して
ください。

images/install.conf:
> ROOTFS_ARCHIVE=/images/debian-jessie-armhf_aiotg3l_20161221.tar.gz
> ROOTFS_ARCHIVE_MD5=ed1ca2c583397a4a522da12d2e07dcd6

溝渕です。

すみません。1点修正させてください。

> 例えば、"myapp"ファイルをインストールする場合は、次のようにカスタマイズします。
>
> 1. aiotg3l_resources/resources/直下にmyappを配置
> 2. aiotg3l_resources/resources/fixupに次の行を追加
> cp /resources/myapp /usr/local/bin/myapp
>

aiotg3l_resources/以下はそのままrootfsになるので、単に配置するのみで良いです。

具体的には、以下のようにコマンドを実行します。

mkdir -p aiotg3l_resources/usr/local/bin/
cp path-to/myapp aiotg3l_resources/usr/local/bin/

事前に実行権限を付与しておいてください。

溝渕様

お世話になります。回答、ありがとうございます。

>> Armadillo-IoT ゲートウェイ G3L 用のインストールディスクイメージ(imgファイル)の作成方法を教えていただけないでしょうか?
>以下のドキュメントを参照してルートファイルシステムを構築後、デフォルト
>のインストールディスクイメージを書き込んだSDカード内のルートファイルシ
> ステムアーカイブを上書きしてください。

手元にあるインストールディスクイメージの内容を確認したのですが、ルートファイルシステムのアーカイブ(debian-jessie-armhf_aiotg3l_{日付}.tar.gzを予想しています)が確認できません。確認方法が間違っているのでしょうか?

確認方法:仮想ドライブにimgファイルをマウント
表示されるファイルは以下になります。
・armadillo_iotg_g3l.dtb
・boot.scr
・uImage
・x1-minimal.dtb

インストールディスクイメージは、Armadillo-IoT ゲートウェイ G3L 購入時に同梱されている開発用DVDより取得しています。
ファイル名:install_disk_sd_20170306_iotg3l.img

お手数をお掛けします。
よろしくお願いいたします。

溝渕です。

> >以下のドキュメントを参照してルートファイルシステムを構築後、デフォルト
> >のインストールディスクイメージを書き込んだSDカード内のルートファイルシ
> > ステムアーカイブを上書きしてください。
>
> 手元にあるインストールディスクイメージの内容を確認したのですが、ルートファイルシステムのアーカイブ(debian-jessie-armhf_aiotg3l_{日付}.tar.gzを予想しています)が確認できません。確認方法が間違っているのでしょうか?

インストールディスクは2つのパーティションがあります。ルートファイルシ
ステムのアーカイブがあるのは第2パーティションです。

kpartxでデバイスを作った後にmountするのがスマートかと思いますが、
Debian jessie環境だとなぜか失敗するので、SDカードに書き込んで確認して
ください。

余談ですが、kpartxは以下と同じ原因で失敗します。
https://github.com/moby/moby/issues/22025

溝渕様

お世話になっております。

> インストールディスクは2つのパーティションがあります。ルートファイルシ
> ステムのアーカイブがあるのは第2パーティションです。
>
> kpartxでデバイスを作った後にmountするのがスマートかと思いますが、
> Debian jessie環境だとなぜか失敗するので、SDカードに書き込んで確認して
> ください。

アドバイスを参考に、ルートファイルシステムのアーカイブを書き換えることができました。ありがとうございます。
しかし、eMMC領域にインストールディスクの内容が反映できていないようですが、認識は合っていますか?

確認できた動作では、eMMC領域の内容は書き換わっておらず、SDカード無しでは起動できなかったり、JP1 をショートさせSDブート状態にしなかった場合、以前のルートファイルシステムの状態で起動しているように見えます。

eMMC領域を書き換えるようにインストールディスクを作成することはできないでしょうか?
以前お話ししたように、Armadillo-IoT ゲートウェイ G3L 製品マニュアルにある「6.2. ソフトウェアを初期化する」にあるimgを使ってインストールした際は、eMMC領域にデータが書き込まれ、インストール後にSDカードを抜いて使用することが出来ました。
インストール時は、SDブートを行う必要があると思いますが、イントール後は、eMMCからブートしたいと考えております。

お手数をお掛けいたします。
よろしくお願いいたします。

溝渕です。

> アドバイスを参考に、ルートファイルシステムのアーカイブを書き換えることができました。ありがとうございます。
> しかし、eMMC領域にインストールディスクの内容が反映できていないようですが、認識は合っていますか?

異なります。

インストールできていないので、インストールディスクとして機能していません。

> 確認できた動作では、eMMC領域の内容は書き換わっておらず、SDカード無しでは起動できなかったり、JP1 をショートさせSDブート状態にしなかった場合、以前のルートファイルシステムの状態で起動しているように見えます。
>
> eMMC領域を書き換えるようにインストールディスクを作成することはできないでしょうか?

可能です。

デフォルトのインストールディスクではeMMC領域を書き換えています。そのた
め、カスタマイズを行うことで任意のイメージを書き込むことができます。

今回は結果のみご報告いただきましたが、これだと効果的なアドバイスを行う
ことが困難です。

インストールディスクの作成手順や、インストール実行時のログ、結果の確認
方法等をいただけるとアドバイスできるかと思います。

溝渕様

お世話になっております。回答ありがとうございます。

インストールディスクの作成や確認は以下のように実施しております。

●インストールディスクの作成手順
・ATDE6にて作業を行っております。
1. ルートファイルシステムを、製品マニュアル(11.3 Debian GNU/Linuxルートファイルシステムをビルドする)に従い作成しました。
2. ブートローダーイメージ、Linuxカーネルイメージ、DTBは、 Armadillo-IoT ゲートウェイ G3L 用のインストールディスクイメージ(install_disk_sd_20170306_iotg3l.img)をSDカードに書き込んだ後、SDカードから作業PCにコピーしました。この時、ブートローダーイメージと同じパーティションに配置されていた「boot.scr」も作業PCにコピーしております。
3. 製品マニュアル(15. SDブート)に従いパーティションの作成を行い、1で作成したルートファイルシステムの配置と2で取得した、ブートローダーイメージ、Linuxカーネルイメージ、DTBの配置を行っております。この時、boot.scrの配置(ブートローダーイメージと同じパーティションに配置)と、ルートファイルシステムを配置したパーティション直下にフォルダ(こちらで決めた適当な名前のフォルダ(フォルダA))の作成を行っております。

●インストール実行時のログ
・var/logから取得した、bootstrap.logを添付いたします。こちらでよろしいでしょうか?

●結果の確認
・SDブート後に、起動し、インストールディスク作成時に配置したフォルダAが配置されていることを確認

お手数をお掛けいたします。
よろしくお願いいたします。

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

溝渕です。

> ●インストールディスクの作成手順
> ・ATDE6にて作業を行っております。
> 1. ルートファイルシステムを、製品マニュアル(11.3 Debian GNU/Linuxルートファイルシステムをビルドする)に従い作成しました。
> 2. ブートローダーイメージ、Linuxカーネルイメージ、DTBは、 Armadillo-IoT ゲートウェイ G3L 用のインストールディスクイメージ(install_disk_sd_20170306_iotg3l.img)をSDカードに書き込んだ後、SDカードから作業PCにコピーしました。この時、ブートローダーイメージと同じパーティションに配置されていた「boot.scr」も作業PCにコピーしております。
> 3. 製品マニュアル(15. SDブート)に従いパーティションの作成を行い、1で作成したルートファイルシステムの配置と2で取得した、ブートローダーイメージ、Linuxカーネルイメージ、DTBの配置を行っております。この時、boot.scrの配置(ブートローダーイメージと同じパーティションに配置)と、ルートファイルシステムを配置したパーティション直下にフォルダ(こちらで決めた適当な名前のフォルダ(フォルダA))の作成を行っております。

手順"3"についてですが、パーティション作成を行った目的は何でしょうか?

手順"2"でインストールディスクができていると思いますので、インストール
ディスクの第2パーティションをmountし、各種イメージファイルを上書きと
images/install.confの修正だけで良いと思います。

> ●インストール実行時のログ
> ・var/logから取得した、bootstrap.logを添付いたします。こちらでよろしいでしょうか?

いえ。インストール実行時にUARTにログが出力されると思いますので、そのま
まコピー&ペーストしてください。

溝渕様

お世話になります。回答が遅れて申し訳ありません。

>手順"3"についてですが、パーティション作成を行った目的は何でしょうか?
インストールディスクの第2パーティションをmountし、ファイルの上書きを行おうとしたところ、「デバイスに空き領域がありません」等のエラーが発生し、失敗ステータスで終了したためです。
第2パーティションのサイズを確認したところ348Mでした。ルートファイルシステムのtar.gzは解凍すると657Mほどになり、パーティションの作成を行う必要があると考えたためです。作成したtar.gzの内容に誤りがあるのでしょうか?microSDは、16Gを使用しております。

>いえ。インストール実行時にUARTにログが出力されると思いますので、そのま
>まコピー&ペーストしてください。
承知しました。再度、インストールイメージを作成し、ログをご連絡いたします。

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

溝渕様

お世話になります。
所望の動作を確認することができましたのでご連絡いたします。

>手順"3"についてですが、パーティション作成を行った目的は何でしょうか?
>インストールディスクの第2パーティションをmountし、ファイルの上書きを行おうとしたところ、「デバイスに空き領域がありません」等のエラー>が発生し、失敗ステータスで終了したためです。
>第2パーティションのサイズを確認したところ348Mでした。ルートファイルシステムのtar.gzは解凍すると657Mほどになり、パーティションの作成を>行う必要があると考えたためです。作成したtar.gzの内容に誤りがあるのでしょうか?microSDは、16Gを使用しております。
展開したインストールイメージを第2パーティションに書き込むものと思っており、上記のような回答をしてしまいました。
第2パーティション内の/images内にあるルートフィルシステムのアーカイブを自作したものに変えて、同ディレクトリ内のinstall.confを修正しました。

何度もアドバイスをいただきありがとうございました。また、お手数をお掛けし、申し訳ありませんでした。

以上、今後ともよろしくお願いいたします。