Armadilloフォーラム

netflash コマンドによるイメージ書き換えが出来ない

atom

2015年4月2日 16時45分

お世話になっております。
atom 佐藤です。

netflash コマンドによりイメージ書き換えを行おうとしたところ。
1回目は上手く書き換えが出来たのですが、2回目に書き換えが出来なくなってしまい困っています。

書き換えが出来なくなるまでに行った手順
(1) 自作アプリ修正につき、"make"の 実行
(2) LAN接続IP変更につき自信のIPアドレスも変更
"atmark-dist/romfs/etc/default" 内の「interfaces」のIPアドレス設定変更
(3) 「rc.local」の追加及び実行権限の付加
(4) "make image" の実行
(5) 作成されたROMファイルを "/var/www" にコピー
(6) Armadillo-460 上から"netflash"コマンドを使用してイメージの読み込み
(7) "rebort" -> "flatfsd -i" の実行
この時点ではイメージの書き換えが正しく行えていた。((2)で変更したIPアドレスも正しく反映されていた)
(8) 再度イメージの変更 ( (1)、(3)、(4)、(5)を再度実施)
(9) ATDE及びホストPCのIPアドレスを変更
aaa.bbb.ccc.ddd (aaa、bbb、ccc まで同じになるように変更)
(10) "netflash" コマンドの実行

現時点での状況
(10) 実施時、"not found http://aaa.bbb.ccc.ddd"と表示されイメージの更新が出来なくなってしまった。
ホストPCからpingコマンドを使用してArmadilloを確認しようとしてもつながらない

確認したい点
(1) 現時点の状況からどのようにすれば"netflash”コマンドでイメージの変更が出来るように戻せるでしょうか?
(2) 実際に行った手順によってこのような現象が引き起こされる可能性のある点はあるでしょうか?
(3) Armadillo 側から見た接続状況を確認できるようにしたいのですが、Armadillo側に"ping"コマンドを入れることは可能でしょうか?
"ping"コマンドを入れることが出来ない場合、Armaddillo側からホストPCが見えないかといったことを確認する方法はないでしょうか?

以上,ご教授よろしくお願いします。

コメント

at_takashi.sasayama

2015年4月3日 10時39分

笹山です。

> 確認したい点
> (1) 現時点の状況からどのようにすれば"netflash”コマンドでイメージの変更が出来るように戻せるでしょうか?
> (2) 実際に行った手順によってこのような現象が引き起こされる可能性のある点はあるでしょうか?

記載されました手順を見る限りでは、
> (2) LAN接続IP変更につき自信のIPアドレスも変更
> (5) 作成されたROMファイルを "/var/www" にコピー
> (9) ATDE及びホストPCのIPアドレス変更
このあたりが原因かと推測します。

以下を確認してみてはいかがでしょうか?

Armadillo の /etc/config/interfaces に記載された設定は正しいか?

/var/www に置かれたイメージファイルのパーミッションは適切か?
ユーザーにリード権限が無いと、外部からファイルは見えませんので
chmod +r コマンドでリード権限を付加してください。

ifconfig eth0 で UP (リンクアップ) が確認できるか?
確認できなければ ifconfig eth0 up を実行。

> (3) Armadillo 側から見た接続状況を確認できるようにしたいのですが、Armadillo側に"ping"コマンドを入れることは可能でしょうか?
> "ping"コマンドを入れることが出来ない場合、Armaddillo側からホストPCが見えないかといったことを確認する方法はないでしょうか?

Armadillo-460 はデフォルトで ping コマンドが含まれます。
含まれていない場合は、ユーザーランドコンフィギュレーションで
以下を確認してみてください。

Userland Configuration
    Network Applications  --->
         [*] ping   # チェックが付いているか確認をします。

お世話になっております。
佐藤です。

状況が改善されArmadillo側にpingが通るようになりイメージの変更が出来るようになったので報告します。

どの操作により改善されたかわからないのですが以下の操作により直りました。
(1) Armadillo の "/etc/config"、 "/etc/default" の内容確認
両方とも「interfaces」以外に「interfaces~」というファイルが存在したため「interfaces~」を削除
「interfaces」は設定したいIPとなっていたが、「interfaces~」はDHCPサーバー設定となっていた。
(2) の「interfaces」の変更をフォルダからファイルを開いて変更したため元々の設定が残っていたと思われる。

(2) /etc/config/interfaces の設定変更本来設定したいIPと全くことなるIPに再設定
ネットマスクについても "255.255.255.0" → "255.0.0.0" と変更

(3) (2)に合わせる形でホストPCのIPアドレスを変更し、"pingコマンド"にてArmadilloにアクセス
この段階で、Armadilloにアクセス可能となっていることを確認

(4) ATDEのアドレスの設定を(2)に合わせて、"netflash"コマンドで問題が起きていなかったときのイメージに戻す

上記の手順により、正常だったときに無事戻すことが出来ました。
不具合を起こしてしまったイメージファイルでは"imterfaces"だけでなく"interfaces~"というファイルも含まれてしまっていたのですが、
不具合を起こす可能性として考えられるでしょうか?

pingコマンドに関して情報ありがとうございます。
ping コマンドに関して確認したところチェックされていることまで確認できました。
異常状態から直してしまったため再度確認は出来ませんが、pingに関しては勘違いしていただけかもしれません。

at_takashi.sasayama

2015年4月3日 13時26分

笹山です。

状況が改善されたようでなによりです。

> 不具合を起こしてしまったイメージファイルでは"imterfaces"だけでなく"interfaces~"というファイルも含まれてしまっていたのですが、
> 不具合を起こす可能性として考えられるでしょうか?

interfaces ファイルは ifup ifdown コマンド実行時に参照されます。
ifup ifdown は ifupdown パッケージの機能で、
Armadillo-460 では busybox-1.00.rc3 版のものが使用されます。

ifupdown のソースを解析してみたのですが、
/etc/config/interfaces 以外の interfaces ファイルは参照しない為、
interfaces~ が存在しても動作には影響が無いと考えられます。

状況が改善されたので実際に書き込みたいイメージを再度書いてrebootを実行したところ

No filesystem could mount root, tried: ext3, ext2 msdos vfat
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0)

となってしまい起動できなくなってしまいました。
カーネル or ユーザーランドの書き込みデータを間違えてしまった恐れがあるので
再度,イメージの書き込みを行いたいのですがどのような手順で行えばよいのでしょうか?

上記の書き込んだファイルを間違えた状態でのrebootをかけてしまったためと思われます

ATDE上のサーバーにあったファイルのサイズを確認したところ

linux.bin.gz : 1618822
romfs.img.gz : 1618822
本来のromfs.img.gz だと6033956程度となるはずだがなっていなかった。
その状態でrebootをかけていしまったため起こったと思われる

ユーザーランドの書き込みミスに関して自己解決しました。

Armadillo-400シリーズ ソフトウェアマニュアルの6章を参考に以下のように行いました。
1、JP1 ショート (UART ブートモードで起動)
2、hermit at 起動
3、kernel、 userland をerase する
4、kernel、 userland をdownloadする

最後にタイトルと違うことまで確認することになりましたが全て無事解決しました。
いろいろとありがとうございました。