Armadilloフォーラム

イメージ書き込み時に rc.local を設定する方法

nagashima

2018年3月21日 18時17分

長島と申します。こちらのフォーラムで度々お世話になっております。

Armadillo-440(Linux-3.14-at10)を組み込んだ機器にイメージを書き込む際に
/etc/config/rc.local も書き込むことを予定しています。

1) ATDEの ~/atmark-dist-20171227/vendors/AtmarkTechno/【ターゲット名】/etc/config
 内に rc.local を作って実行権限を付与してイメージをビルド
2) Armadillo-440 の /etc/config 配下に rc.local がない状態にする
 (ファイルがあれば削除して flatfsd -s)
3) Armadillo-440 を保守モードで起動し、ビルドしたイメージを書き込んで起動
4) /etc/config/rc.local が実行権限付き、かつ ATDE 上の内容になっているのを確認 => OK
5) /etc/config/rc.local に適当に追記して flatfsd -s で保存して再起動
6) /etc/config/rc.local が追記した内容になっている => OK

というのは確認しております。

今回質問したいのは「貴社からの出荷時に /etc/config/rc.local は存在しているか?」です。
/etc/config/rc.local がすでに存在している場合は、
当然そちらが残り、イメージ上の rc.local は無視されます。
関係ないと思いつつ、ATDE 上の rc.local の更新日時を
Armadillo 上より新しい日付にしてみましたが、結果は同じでした。

私の周りにはすでにいじってしまった Armadillo-440 しかないため上記不明です。
初期出荷時の状態をご教授ください。よろしくお願い申し上げます。

コメント

nagashima

2018年3月21日 18時55分

長島です。お世話になっております。

質問の件で、もう1点質問がございました。
hermit のリージョンで config がございますが、こちらは /etc/config に対応したものでしょうか?
ソフトウェアマニュアルには config の実行例がないので、
もし /etc/config に対応したものであれば使い方をご教授ください。

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

y.nakamura

2018年3月21日 19時21分

中村です。

> hermit のリージョンで config がございますが、こちらは /etc/config に対応したものでしょうか?
> ソフトウェアマニュアルには config の実行例がないので、
> もし /etc/config に対応したものであれば使い方をご教授ください。

先ほどの投稿でも少し触れていますが、
(「config領域を消去しておくか」という部分)
hermitでconfigのイレースはできたと思います。
ダウンロード(書き込み)はやったことがありません。
(configにダウンロードするイメージを何等かの方法で作らないと
ならないのですが、それもやったことがありません)

--
なかむら

y.nakamura

2018年3月21日 19時09分

中村です。

> 1) ATDEの ~/atmark-dist-20171227/vendors/AtmarkTechno/【ターゲット名】/etc/config
>  内に rc.local を作って実行権限を付与してイメージをビルド

.../【ターゲット名】/etc/configではなく、
.../【ターゲット名】/etc/defaultの下にrc.localがありますので、
これを修正してください。

起動時に/etc/defaultの下が/etc/configにコピーされます。
コピー時に、flatfsd -s で保存したものがあれば、
/etc/defaultよりもconfigに保存されているものが優先されます。

起動時のこのコピーは
/etc/init.d/flatfsdの次の部分で処理されています。

mkdir -p /tmp/config >/dev/null 2>&1
cp -a /etc/default/* /etc/default/.[A-z]* /tmp/config >/dev/null 2>&1
cp -a /etc/config/* /etc/config/.[A-z]* /tmp/config >/dev/null 2>&1
cp -a /tmp/config/* /tmp/config/.[A-z]* /etc/config >/dev/null 2>&1
rm -rf /tmp/config

> 今回質問したいのは「貴社からの出荷時に /etc/config/rc.local は存在しているか?」です。

ソースのatmark-distには.../【ターゲット名】/etc/configは存在していませんが、
上に書いたように/etc/init.d/flatfsdによって/etc/defaultからコピーされます。
atmark-distの.../【ターゲット名】/etc/default/rc.local存在しています。

> 私の周りにはすでにいじってしまった Armadillo-440 しかないため上記不明です。
> 初期出荷時の状態をご教授ください。よろしくお願い申し上げます。

atmark-dist-XXXXX.tar.gzをダウンロードして展開すれば、
ソースレベルでの初期状態はわかると思います。
あるいは、コンパイル済みのユーザランドイメージ(romfs-a440-X.XX.img.gz)を
ダウンロードして、お手元のArmadilloに書き込めば初期状態になります。
このとき、config領域を消去しておくか、
romfsを書き込んだあと起動したらflatfsd -i でconfigをクリアしてください。

--
なかむら

nagashima

2018年3月21日 19時18分

中村様

長島です。早速のご回答ありがとうございます。

etc/default/rc.local の方、初期状態の確認方法、了解いたしました。
今後ともよろしくお願い申し上げます。