GENMAIボードでのLinux組み込みについて

Hiroです

 

先月「GENMAIボードでのカーネルの読み込みについて」で質問させていただきましたが、

続いてルートファイルシステムについての質問です。

前回からルートファイルシステムについての勉強をしましたが、以下の認識が間違っていないかを

確認したいので掲示させていただきました。

・ルートファイルシステムをシリアルフラッシュに書き込む

・ブート時にルートファイルシステムをSDRAMへ展開する

・ルートファイルシステムはSDRAM上で処理をする

 

上記、認識に問題が無ければ、細かい内容の質問をしたいのですが、

まずは、やろうとしていることの方向性が間違っていないかを確認したので

ご存知の方、お教示をお願いします。

 

以上

  • Hiroさん

    質問が曖昧なので、解釈次第の部分もありますが、ここが初心者フォーラムであることも勘案して、
    Hiroさんの「やろうとしていること」が
    > ・ルートファイルシステムをシリアルフラッシュに書き込む
    > ・ブート時にルートファイルシステムをSDRAMへ展開する
    「展開する=単純にコピーする」
    > ・ルートファイルシステムはSDRAM上で処理をする
    「SDRAMにコピーしたファイルシステムを読み書きする」

    だとするなら、技術的には出来るという意味では、間違ってはいません。

    例えば、initrd/initramfs といったファイルシステムがあり、通常は、起動時のみに使用しますが、
    そのまま動作し続けるシステムもあります。

    但し、シリアルフラッシュは、読み書き可能なデバイスですから、一般的には、
     ・ルートファイルシステムをシリアルフラッシュに書き込む
     ・シリアルフラッシュ上のルートファイルシステムを読み書きする

    するのが普通でしょうか。

    答えになっていますか?

  • Hiroです。いつも迅速なご回答ありがとうございます。

    初心者を言い訳にしてはいけないとは思いますが、イメージすることがぼんやりとしてしまっているので
    言葉足らずで申し訳ありません。

    当方がやろうとしていることは、Pecteilisさんの追記でほぼ一致しているのですが、
    「展開する」⇒「コピーする」が当方のイメージとは違いました。
    シリアルフラッシュにはROMに書き込める(特別な)形式でルートファイルシステムを
    書き込んで、使用する際には(読み書きできる)形式に変換してRAMへ展開するものだと考えていました。
    この形式を変換するのではという所が曖昧になっていたので、ご指摘を受けたのだと思います。
    ルートファイルシステムをそのままシリアルに書き込むものなのですね。

    一般的にはシリアル上でルートファイルシステムを読み書きするとのことですが
    書込み中の電源断なども考慮して、SDRAMでの読み書きに挑戦しようと思います。

    GENMAIのBSPではルートファイルシステムが大きいので、
    小規模のルートファイルシステムを構築しようと思います。
    GENMAI BSPの「buildroot-2013.05」下で「make menuconfig」の
    「Package Selection for the target」でルートファイルシステムをカスタムできると思っていたのですが
    各アプリケーションの選択チェックが外れているので、ここではないと判断しました。
    GENMAIのBSPのルートファイルシステムを再構築するには
    直接ファイルを編集する必要が有るのでしょうか。
    安易な質問をして申し訳ありませんが、編集するべきファイルの特定を
    お教えいただければと思います。

    以上、よろしくお願いします
  • Hiroさん

    > GENMAI BSPの「buildroot-2013.05」下で「make menuconfig」の
    > 「Package Selection for the target」でルートファイルシステムをカスタムできると思っていたのですが
    > 各アプリケーションの選択チェックが外れているので、ここではないと判断しました。

    そこです。

    GENMAI BSP に含まれる build.sh を実行すると、buildroot に対しては、

    (1) 作成するパッケージのソースファイルを展開する
    (2) (1) に対して、修正が必要な部分にパッチを適用する
    (3) buildroot と busybox 用のコンフィギュレーションファイルを編集、コピーする
    (4) 作成するスペシャルファイルのテーブル(リスト)をコピーする

    した上で、 Hiro さんがした/しようとした

    (5) make menuconfig    ♯ build.sh の場合は、make rskrza1_defconfig
    (6) make

    をします。

    Hiro さんの場合、(1)~(4) を飛ばして、make menuconfig を実行したので、
    パッケージの選択を含めた buildroot のコンフィギュレーションをスクラッチで(最初から)
    行なう羽目になったのだと思います。

    かふぇルネの English community の "RZ - Media Gallery" に
    "Getting started with Buildroot for RZ/A1" というアプリケーションノートが登録されています。
    英語ですが、参考にはなると思いますので、よろしければご利用ください。

    http://renesasrulz.com/renesas_forum_home/rz/m/mediagallery/2665

  • 少し舌足らずでしたので、補足です。

    Hiro さんの場合は、もし、GENMAI ボードのコンフィギュレーションを基にするなら、(1)~(4) の後に、

    (5) make rskrza1_defconfig
    (6) make menuconfig
    (7) make

    のように、(5) を実行して .config ファイルを作成してから、(6)~ を実行します。

    ただ、GENMAI ボードのコンフィギュレーションでは、多くのパッケージが選択されているので、
    多分、逆に、選択を外すのが大変です。

    Hiro さんがしたように、(5) をせずに (6) から始める方がかえって簡単かもしれません。

  • Hiroです

    アプリケーションノートのご紹介ありがとうございます。
    全体像が少しですがはっきりしてきました。
    busyboxの編集をどこで行うか不明でしたが、アプリケーションノートで
    編集方法が分かりました。

    >(3)buildrootとbusybox 用のコンフィギュレーションファイルを編集、コピーする
    とありますが、buildrootのコンフィグレーションファイルを編集する方法は
    「make menuconfig」と理解していたのですが、(6)の操作とは別の方法が有るのでしょうか。
    「make menuconfig」は、.Configを編集するダイアログを表示するコマンドとして
    理解していることが間違っているのでしょうか。
    また、「make rskrza1_defconfig」を実行するとダイアログが表示されることを
    期待していたのですが、表示されずに.Configを書き換えているような表示になります。
    この動作が正しいのか、ダイアログが表示されることを期待している認識が
    間違っているのかをお教えください。

    以上、よろしくお願いします
  • Hiro さん

    > >(3)buildrootとbusybox 用のコンフィギュレーションファイルを編集、コピーする
    > とありますが、buildrootのコンフィグレーションファイルを編集する方法は
    >「make menuconfig」と理解していたのですが、(6)の操作とは別の方法が有るのでしょうか。

    GENMAI BSP の build.sh を読むと解りますが、86 行目で、

    85 done
    86 sed "s%^BR2_TOOLCHAIN_EXTERNAL_PATH=.*\$%BR2_TOOLCHAIN_EXTERNAL_PATH=\"$TOOLS_PATH\/$COMPILER\"%" ../patches-buildroot/rskrza1_defconfig >configs/rskrza1_defconfig
    87 cp ../patches-buildroot/busybox-1.21.x.config package/busybox/busybox-1.21.x.config
    88 cp ../patches-buildroot/device_table_dev_rza1.txt system/device_table_dev_rza1.txt
    89 cd ..

    (3) は、buildroot のコンフィギュレーションファイルを cp でコピーするのではなく、
    sed(stream editor) で少し編集してコピーしている、ということです。

    buildroot のコンフィギュレーションファイルを対話的に編集する方法は、TUI(Text
    User Interface) の場合だと「make menuconfig」という理解で正しいです。
    Buildroot で「make help」を実行してみてください。

    > また、「make rskrza1_defconfig」を実行するとダイアログが表示されることを
    > 期待していたのですが、表示されずに.Configを書き換えているような表示になります。
    > この動作が正しいのか、ダイアログが表示されることを期待している認識が
    > 間違っているのかをお教えください。

    make rskrza1_defconfig の場合、その動作が正しく、ダイアログは、表示されません
    (対話的/interactive ではありません)。

  • Hiroです。

    詳しいご回答ありがとうございます。
    全体像は見えてきましたので、後は当方の努力次第と思います。
    また、不明点が発生しましたら掲示板に質問させていただきますので
    一旦、本件を完了とさせていただきます。

    以上