nagashima
2018年4月15日 19時35分
長島と申します。いつもお世話になっております。
Armadillo-440, Linux-3.14 の環境で、Rubyが使えるようにしようとしているのですが、
うまく行きません。
OSのカーネルコンフィギュレーションで
Miscellaneous Applications --->
:
[*] ruby
(2.1.2) Version
としてビルドし、フラッシュにイメージを書き込むところまでは良いのですが、
その後起動してきません。(ruby 2.0.0-p451 もダメ)
Ruby を OFF にしたイメージだと問題なく起動します。
他に何か設定を変えれば起動できるものでしょうか?
ご存じの方いらっしゃいましたらご教授ください。よろしくお願い申し上げます。
コメント
y.nakamura
中村です。
寝る前に先ほどの自分の投稿を考えていて、
起動時に、フラッシュのユーザランド(romfs)をRAMDISKに
展開するときのメモリ不足の話をもう1つ思い出しました。
その話の前にちょっとした訂正です。
> https://armadillo.atmark-techno.com/forum/armadillo/1661
> https://users.atmark-techno.com/comment/2531#comment-2531
この2つめのURLは
https://armadillo.atmark-techno.com/forum/armadillo/1661#comment-2531
の方がよかったですね。同じスレッド(node)なので。
で、もう1つのメモリ不足の話というのは、
Armadillo-840なのですが、これです。
https://armadillo.atmark-techno.com/forum/armadillo/1202#comment-1475
https://armadillo.atmark-techno.com/news/140711/software-update
起動時にカーネルがユーザーランド(romfs)をRAMDISKに
コピーするときに、カーネルメモリに対してコピー(展開する)
ユーザランド(romfs)が大きすぎると、カーネルのメモリが
括弧することがあるということです。
FAQ : ルートファイルシステムの最大サイズはいくつですか?
https://armadillo.atmark-techno.com/faq/initrd-max-size
にも参考にできることが書いてあります。
「ブートローダがイメージを一度RAM上に書き込む領域と」
という記述もあります。
とすると、先ほど書いた
> もしこれと同じようなメモリ不足が原因ならば、
> 不要なものを削除するなどしてみてはどうでしょうか?
の方法で解決できればいいのですが、
> 他には・・・コンフィグレーションでRAMDISKのサイズを
> 変更することで回避できるかもしれません。
こちらの場合はRAMDISKのサイズを減らしてメインメモリを
増やしてあげないとならないのですが(たぶんそうだと思います)、
rubyを追加してユーザランド(romfs)が大きくなっているのですから、
RAMDISKのサイズを減らす余裕があるのかどうか・・・・、です。
--
なかむら
nagashima
中村様
長島です。いろいろとご教授ありがとうございました。
bootメッセージですが、現在コンソールを ttyUSB0 にしている関係で、
途中から見ることができない状態です。
(後で setenv と etc/inittab の設定を変えて確認してみます)
ruby を組み込む前後の romfs.img のサイズを比較したところ、
約53MB:約70MBと肥大しておりました。これが一番の原因ですね。
まずは romfs.img のダイエットを目指します。
「initrd最大サイズ = (RAMサイズ - (カーネルイメージやパラメータ、MMUテーブルの予約領域)) / 2」
・initrd最大サイズ:約70MB
・RAMサイズ:128MB(Armadillo-440)
・カーネルイメージ:約6.5MB(linux.bin)
の計算式を参考に、RAMディスクサイズの調整も検討してみます。
y.nakamura
2018年4月15日 21時22分
中村です。
> Armadillo-440, Linux-3.14 の環境で、Rubyが使えるようにしようとしているのですが、
> うまく行きません。
...
> その後起動してきません。(ruby 2.0.0-p451 もダメ)
>
> Ruby を OFF にしたイメージだと問題なく起動します。
起動時のコンソールにはどのようなメッセージがでてますか?
Armadillo-IoT(G2)にperlを入れたとき、
https://armadillo.atmark-techno.com/forum/armadillo/1661
https://users.atmark-techno.com/comment/2531#comment-2531
次のようなブートメッセージで起動できなくなりました。
原因は、メッセージの通り、メモリ不足です。
Armadillo-IoT(G2)は、Armadillo-440でLinux-3.14を使ったときに
近い環境にあると思います。
この記事
参考情報)Armadillo-IoT:ユーザーランドイメージ内のサイズの大きなプログラム(Java、Ruby)
https://users.atmark-techno.com/blog/615/1733
によると、rubyのサイズは約6.8MBらしいです。
もしこれと同じようなメモリ不足が原因ならば、
不要なものを削除するなどしてみてはどうでしょうか?
他には・・・コンフィグレーションでRAMDISKのサイズを
変更することで回避できるかもしれません。
--
なかむら