Armadilloフォーラム

起動時間の高速化

rookie

2014年7月4日 13時41分

お世話になります。

現在は自作アプリが起動するまでに約30秒かかっております。

そこで、下記のHowto・FAQを参考にユーザーランドのサイズを抑えて、
起動時間の高速化を試みております。

http://armadillo.atmark-techno.com/articles/short-boot-time/part1

busyboxの設定について教えていただきたいのですが、
Howtoの説明では以下の設定を「有効」にして他はすべて「無効」となっております。

---抜粋---------------------------------------------------------
Busybox -->
[*] dmesg
[*] ls
[*] shell
[*] ash: ASH shell
[*] ASH is /bin/sh
[*] ASH Optimize for size instead of speed
[*] sh: Hide message on interactive shell startup
[*] test
---ここまで---------------------------------------------------------

しかし、私のBusyBoxコンフィグレーション(v1.20.2)では、
[*] shell
[*] ash: ASH shell
[*] ASH is /bin/sh
上記3つが見当たりません。
おそらく、これらのチェックが無効になっているため、
作成したイメージファイルで書き換えて電源を入れますと、
コンソールに下記のメッセージが出力されてログインプロンプトまで到達できません。

/bin/sh:can't access tty;job control turned off

どの項目を有効にするのか教えていただけますでしょうか?

他の項目は以下にありました。
Busybox -->
      Coreutils-->test
      Coreutils-->ls
      Linux System Utilities-->dmesg
      Shells-->Optimize for size instead of speed
      Shells-->Hide message on interactive shell startup

参考までに、開発環境と現在(設定変更なし)のイメージファイルサイズ(Byte)、
自作アプリケーションの概要を記載します。

利用機器:Armadillo-840
開発環境:ATDE5
Linuxカーネル:linux3.4-at5
ユーザランド:atmark-dist-20131018

linux.bin:5,643,945
linux.bin.gz:2,764,429
romfs.img:121,488,421
romfs.img.gz:49,568,730

自作アプリ概要
armadilloに市販のUSBカメラを接続して、
取得したカメラ画像をopencvの画像処理して出力するアプリケーション。
GUIはHDMIモニタに出力して、操作はキーボードとマウスを使用。

コメント

> Busybox -->
>       Coreutils-->test
>       Coreutils-->ls
>       Linux System Utilities-->dmesg
>       Shells-->Optimize for size instead of speed
>       Shells-->Hide message on interactive shell startup

多分、上記でashを選択されているので、他は選択しなくともよいはずです。

>コンソールに下記のメッセージが出力されてログインプロンプトまで到達できません。
>
> /bin/sh:can't access tty;job control turned off

推測ですが、
Busybox--> Shells --> ash::Job control
が有効になっているからそのメッセージがでるのではないでしょうか?

また、ログインプロンプトは表示されませんよ?
参考とされている記事でも、ユーザーランドは /bin/sh(シェル) が起動するだけとあります。

現状の状態で起動は完了していると思います。
ぜひ、実測時間を教えていただけますか?

ちなみに興味本位で私もユーザーランドだけ作ってみました。

■ バイナリ一覧

atmark-dist$ (cd romfs; ls bin usr/bin/ sbin/ usr/sbin/)
bin:
ash  busybox  dmesg  ls  mount  sh  umount
 
sbin/:
 
usr/bin/:
 
usr/sbin/:
get-board-info-a840

■ サイズ

atmark-dist$ LANG=C ls -l images/romfs.img*
-rw-r--r-- 1 nakai nakai 4644901 Jul  4 14:29 images/romfs.img
-rw-r--r-- 1 nakai nakai 2018209 Jul  4 14:29 images/romfs.img.gz

2MB程度となるようですよ。

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

度々申し訳ございません。

圧縮したユーザーランドは6MBまで小さくすることができましたが、
自作したアプリがモニタに表示されません。
起動しているかも不明です。

自作アプリは電源投入後に自動起動するようにrc.localに
コマンドを記述しております。
manuconfigでデフォルトの設定に戻すと起動します。

また、作業用PCのTeraTermで確認しますと、
/usr/binに置かれるはずの自作アプリと、
/etc/configにあるはずのrc.localがありません。

何か必要な項目まで無効にしてしまったのでしょうか?

> > Busybox -->
> >       Coreutils-->test
> >       Coreutils-->ls
> >       Linux System Utilities-->dmesg
> >       Shells-->Optimize for size instead of speed
> >       Shells-->Hide message on interactive shell startup
>
> 多分、上記でashを選択されているので、他は選択しなくともよいはずです。
>
> >コンソールに下記のメッセージが出力されてログインプロンプトまで到達できません。
> >
> > /bin/sh:can't access tty;job control turned off
>
> 推測ですが、
> Busybox--> Shells --> ash::Job control
> が有効になっているからそのメッセージがでるのではないでしょうか?
>
> また、ログインプロンプトは表示されませんよ?
> 参考とされている記事でも、ユーザーランドは /bin/sh(シェル) が起動するだけとあります。
>
> 現状の状態で起動は完了していると思います。
> ぜひ、実測時間を教えていただけますか?
>
>
>
> ちなみに興味本位で私もユーザーランドだけ作ってみました。
>
> ■ バイナリ一覧
>

> atmark-dist$ (cd romfs; ls bin usr/bin/ sbin/ usr/sbin/)
> bin:
> ash  busybox  dmesg  ls  mount  sh  umount
> 
> sbin/:
> 
> usr/bin/:
> 
> usr/sbin/:
> get-board-info-a840
> 

>
> ■ サイズ
>

> atmark-dist$ LANG=C ls -l images/romfs.img*
> -rw-r--r-- 1 nakai nakai 4644901 Jul  4 14:29 images/romfs.img
> -rw-r--r-- 1 nakai nakai 2018209 Jul  4 14:29 images/romfs.img.gz
> 

>
> 2MB程度となるようですよ。
>

> 自作アプリは電源投入後に自動起動するようにrc.localに
> コマンドを記述しております。
> manuconfigでデフォルトの設定に戻すと起動します。
>
> また、作業用PCのTeraTermで確認しますと、
> /usr/binに置かれるはずの自作アプリと、
> /etc/configにあるはずのrc.localがありません。
>
> 何か必要な項目まで無効にしてしまったのでしょうか?

必要なものを色々と消してしまたんでしょうね。。/sbin/init とかです。
下記にユーザーランドの起動の仕組みがざっくり書かれています。
参照してください。
http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…

上記の、「表9.2 /etc/rc.dディレクトリに登録された初期化スクリプト」の
S01mtd
S03flatfsd
S05udevd
S90rc.local

くらいは、/etc/config (flatfsd) を利用する場合は必要ですね。