Select Your Language

免責事項

  • 本サイトの情報の利用、内容、サービスによって、利用者にいかなる損害、被害が生じても、著者は一切の責任を負いません。ユーザーご自身の責任においてご利用いただきますようお願いいたします。

    本サイトで頒布している基板およびキットは、技術者、またはそれに準ずる電気的知識をお持ちの電子工作ファンの方のためのものです。 一般のオーディオファンの方のためのものではありません。
    また、頒布基板およびキットは、いかなる条件でも動作を保証するものではございませんので、あらかじめご了承ください。

    電子工作では、火傷、感電、火災などの可能性があります。 十分に注意をして作業して下さい。

    営利目的のご使用は認めておりません。  記事の転載や、基板・キットの商用利用の方は、ご連絡ください。
    学生やサークルの学習目的でまとめてご購入する場合は特別なコースをご用意させていただきます。

« ハイレゾとCDの波形比較の興味深い考察 | トップページ | ラズパイオーディオの会 »

2017年4月21日 (金)

Raspberry Pi Zeroを10秒以内で高速起動する最も簡単な方法

Raspbian jessie lite (2017-03-02) を使って手間をかけずに高速起動する方法を試してみました。カーネルのビルドなど手間と時間のかかる方法は除外して、どこまで速くできるのでしょうか?

 

結果から報告しますと、下のsystemd-analyze plot 画像のように、ギリギリ10秒を切ることが出来ました。

Fast_boot

このあと、さらに/boot/config.txtに「force_turbo=1」を追記することで 約 8.3秒まで縮めることに成功しました。

 

ターゲットの条件として下記の項目で挑戦しました。

 ・ネットワークに接続しないスタンドアローン使用
  (繋ぐことも可能)

 ・無茶なオーバークロックをしないで実用的に使えること

 ・MPDで音楽を再生する

 

 

 

■現状把握から

現在のRaspbianの起動は、systemdにより並列に色んなサービスが同時に立ち上がっていきます。  何を待っていて時間がかかっているのかを見極めてクリティカルチェーンを特定する必要があります。 このときsystemd-analyzeはとても有用なTOOLです。 従来のbootchartの簡易版です。 Raspbianには最初から入っているので別途インストールすることなく使えます。 

 

systemd-analyze time  : 起動にかかった時間の表示
systemd-analyze blame  : 時間がかかっている順にサービスの起動時間を表示
systemd-analyze critical-chain : 時間のかかっている呼び出しチェーンを表示
systemd-analyze plot > result.svg  : 詳細を画像として保存 

 

最初に blame で時間がかかっているServiceを特定して、不必要なサービスは止めてしまいます。

一旦 rebootして plot の出力画像を見て、詳細を確認してみます。 クリティカルチェーンの特定は  critical-chain の方が分かりやすいかもしれません。

止められるサービスと止めちゃOSが正しく機能しなくなるサービスがあるので注意しながら作業するしかありません。 スタンドアローンと言えどもLinuxでネットワークを完全に止めてしまうと、設定の変更も出来なくなってしまいますね。

Rasp_boot1 

こちらが、Raspbian をそのまま Pi Zeroで起動 したときの time critical-chain です。

約30秒ほどかかっています。 これは少し極端な例で、SDカードはスピードClassが何もない時代の2GBのものを使った例です。

少しでも速く起動したいならClass6やClass10など高速なSDカードを使います。 カードが速ければ、何もせずに20秒くらいになります。

 

 

 

■不要なサービスを止めまくる

systemctl list-units --type=service   コマンドで現在有効なサービスを列挙します。

systemctl list-unit-files --type=service   コマンドは定義されているサービス一覧。

標準状態でも最低限のサービスしか走っていないようですが、更に以下のサービスを止めました。 必要に応じて止めるサービスを選択すると良いと思います。

sudo systemctl disable dphys-swapfile

sudo systemctl disable keyboard-setup

sudo systemctl disable kbd

sudo systemctl disable ntp

sudo systemctl disable triggerhappy

sudo systemctl disable plymouth-start.

キーボードが意外と長く時間を食っているので止めました。 コレによりUSBキーボードを接続しても使えなくなると思いますが、sshで接続している限り影響はないようです。

swapファイルも使っていない様子なので止めました。

ntpは時刻合わせのサービスで本来必要なのですが、スタンドアローン使用なので、いさぎよく切り捨てました。

dhcpcdサービスは、ネットワークを接続していないと非常に長い時間待ってしまうので、下記のようにタイムアウトを5秒まで短くします。 (mpdはネットワーク起動後に立ち上がるため短くしたい)

sudo nano /etc/systemd/system/dhcpcd.service.d/wait.conf

[Service]
ExecStart=
ExecStart=/sbin/dhcpcd -q -w -t 5     #タイムアウトを追記

 

今回はIPアドレスを固定しました。 つまりdhcpcdを止めました。

sudo systemctl disable dhcpcd

IPアドレスの固定化の方法は、割愛させてください。 

その他 plymouth-start と triggerhappyは、詳細がよくわからないけど止めても平気らしいので止めました。

 

 

 

■/boot/cmdline.txtの編集

sudo nano /boot/cmdline.txt

末尾に「quiet」を追加して、起動時のメッセージを抑制します。

メッセージを出力しているシリアル出力の速度がクリティカルチェーンになる可能性があるらしいです。 シリアル通信を止めてしまうという手法もあるようです。 cmdline.txt の中の「console=serial0,115200 console=tty1」  を削除。 その場合は getty@tty1 と hciuart サービスも止める事ができます。

  sudo systemctl disable getty@tty1

  sudo systemctl disable hciuart

 

 

 

■/boot/config.txtの編集

mpdで音楽を再生したいので、I2S-DACドライバのhifiberryDACを追加しています。

これはむしろ起動時間が伸びる方向になりますが仕方ありません。 標準のオーディオの方は使わないのでコメントアウトします。

CPUクロックは1000MHzを指定します。 Pi Zeroは1000MHz動作を謳っているのでオーバークロックではありません。 念のためsdramの速度も500MHzと指定します。 ちなみに、負荷が減るとCPUクロックは700MHzに下がります。

force_turbo=1を指定すると、最大クロック側に貼り付きます。

今回のようにmpdで音楽再生程度ならCPUが100%使用になることがないので最大クロック固定でもさほど熱は発しないので実用上も大丈夫なようですが、その他の場合、様子をみながら設定するのが良いと思います。(下記の例はコメントアウトしています)

sudo nano /boot/config.txt

arm_freq=1000
sdram_freq=500
#force_turbo=1

<<<<中略>>>> 

# dtparam=audio=on
dtoverlay=hifiberry-dac

 

 

 

■mpd mpcのインストール

sudo apt-get update

sudo apt-get install mpd mpc

これは、高速起動とは関係ありません。 音楽を再生するためにmpdを入れました。 楽曲はSDカードの中に入れて登録します。 mpcは、コマンドライン型のmpdクライアントソフトです。

mpc play とコマンドを打つと再生開始します。 mpdはlogをとっていて、再生中にOSがシャットダウンした場合、次回起動時に止まった曲の頭から自動で再生開始します。

SDカードのどこに楽曲を入れるのか等 mpdの設定方法などは別途書こうと思います。

今回は高速起動の記事なので詳細は割愛いたします。 ご了承ください。

 

 

 

■最終結果

Raspbinaの初期状態のresult.svg 画像 約30秒

※本当の1回目の起動はSDカード一杯まで領域拡大する作業があるのでもっと長い。

上の高速起動設定に加え force_turbo=1にしたときのresult.svg 画像 約8.3秒

 

※ この設定で Pi 2 約 7秒。 Pi 3 約 5秒 にて起動できるとの情報を頂きました。 ありがとうございます。

 

Rasp_mpd 

この起動高速化したRaspbianは何に使ったのかと言うと コレです。 

 

実際に音がでるまでの時間は、最初にSDカードへアクセスするブートローダー部分やmpdの再生開始の時間があるので約16秒ほどになっています。 

この実験機(試作機) は、4/29、4/30のヘッドホン祭りに展示される予定です。 もし、よろしかったら見てみてください。

シャットダウンは停止ボタンのダブルクリックです。 

ただ、マイクロUSBコネクタが貧弱なので、抜き差しを繰り返すと、壊れるかもしれないですね。 電源の入れ直しは、ケーブルの反対側USB-Aコネクタで行うほうがよさそうです。

 

 

 

にほんブログ村 PC家電ブログ PCオーディオへ にほんブログ村
ブログランキングに参加中です。 めざせ1位! 
もしよろしければ「ぽちっと」お願いします。 

« ハイレゾとCDの波形比較の興味深い考察 | トップページ | ラズパイオーディオの会 »

Raspberry Pi」カテゴリの記事

コメント

たかじんさん こんにちは

Moode Audio が、3.1 -> 3.5になり、Pi-zero Wをサポートしているようです。

ダウンロードして、解凍するときに、プロダクトキーを入れるようになりました。PayPalでは$10払うと、すぐにメールでキーを送ってくれました。
年間2回のメジャーアップデート。マイナーアップデートの時は無料になるように、考えているようです。

払う前に、お試しできないのが、ちょっと辛いですが、シンプルでCPUパワーのないPiでも動かせるシンプルなところが好きなので
これからも使っていこうと思います。

「SabreBerry+」 + 「Pi3」にて、アドバンストカーネルで動かしております。
アドバンストカーネルは、2つから選べるようになっていて、
選択枝の下を選んで、動かしております。
シンプルな画面はそのままで、SSIDを読み込んで、選択できるようになりました。有線LANは、IPアドレスを入れるようになっていて、おしい気がします。
AirPlayは、まだ使っておりませんが、最新のものが入っているようです。

ES9023で来ましたか、操作SWまで搭載でよく納まりましたね~。
クロックは80~120kHz?の1個かな。
ZEROの小ささ生かすとこう言う形になりますよね!
ポータブルの専用ケースも出そうだな。

ポータブル/HPしない私はこれ2枚使って左右完全分離とか出来ないか妄想しちゃう。

ポータブルは、起動が速くないとタイミングを逸しますね。
後は電池ですね。

Zero用Sabreberry、素晴らしい…大期待です。
通勤中がメインの音楽聴きの時間の私にはまさに理想。
実はGWに何か作ろうかといろいろ計画してたのですが、これが出るなら待てます!!
家用環境の改善に時間を使いたいと思います。

春のヘッドフォン祭りへのご参加おめでとうございます。 
今回も行く予定です。
たかじん様にお会いできるのを楽しみにしています。
宜しくお願いします。

この方法はPi3にも適応出来ますか?
Pi3なら何秒で起動できますか?

いつも参考になる情報ありがとうございます。
ラズパイ3で試したところ5秒ほどで起動できることがわかりました。

このほか、Bluetoothのサービスをとめました。 参考まで。

高速起動、Zero DACとも素晴らしいですね!!
高速起動はGWにゆっくり試させていただきます。
Zero DACは・・・GWには無理そうですね(^^;;

toto さん

MoodeAudioの有料化は、少し残念な気持ちと、あれだけのソフトウェアが無料だったのは、むしろおかしいという気持ちとで複雑です。

ZERO Wは、いまだ認可が降りていないようで、何かしら問題があったのではないかと推測していますが、どうなのでしょう。

CR-Xさん

おっしゃる通りケースは欲しいところですね。

yosyos さん

電池は、外部にDC/DCで駆動することはできると思います。 Pi ZEROの基板の裏にテストランドがあって、配線がしやすいという利点があるのです。 

h.imagineさん

さすがにGWには、間に合わないですね。 Zreo Wが出て、ひと通り確認したあと基板製造しようかと考えています。

iijima さん

ヘッドホン祭りでは出品者側ではないので、私も少しの時間、見に行くだけになります。 今のところ、29日の方に見に行こうかと思っています。 こちらこそよろしくお願いいたします。

ken nomuar さん

既に回答が出ているようですが、Pi3でも基本的には同じ内容で高速化できると思います。

???さん

ご報告ありがとうございます。 5秒ですか。 さすがに4コアと言えども4倍速にはならないのですね。 
ROM化してsyslogなどSDカードに書くものを全てRAMDISKに移行させるなどすると3秒くらいになるというのをネット上で見ましたが、そこまでするのは手間がかかります。 通常運用と変わらない設定で5秒起動なら、まあまあかもしれませんね。

通りすがりのおじさんさん

ありがとうございます。 GWに間に合わなくてすみません。 


たかじんさん

5V電源のランドを見つけました。ありがとうございます。
micro-USBのポートは壊れそうですもんね。

totoさん

私もmoode audioを主に使っています。
早速3.5を導入してみましたが、3.1に比べて少し動作が不安定な感じがします。
うちでは、プレイリストが保存出来ない、Configureで設定中にハングする事がある為、ひとまず3.1に戻しました。


たかじんさん

急かすみたいな書き方をしてしまってすみません。
やっとDC-Arrowの部品が揃ったので、GWはDC-ArrowとSB32の組み合わせを堪能しようと思います。

たかじんさん

RPi zoroWが出るまで待とうと思っているので、それまで様子見です。
もし、技適を取るのに、何か問題だとすると、Pi zero Wのアンテナは、基板上に設けた。三角形の空間なので、いじるところがすくなそう。

通りすがりのおじさん

Pi zoroが動くので、とっても期待してたのですが、そういえば、SDに曲をコピーする時止まったし、設定した後、再起動しても、再起動しなかったし、
アドバンスドモードのせいだと考えておりました。
私も、安定が一番なので、Moode 3.1に戻しておこうと思います。

高速起動goodです!!!

IoT使用でArchからRaspbianに移行していたけど、遅かったのが気になっていました。

この設定ならArchよりも速いかも(^_^;;

情報ありがとうございます。 ありがたく使わせて貰います。

書きわすれました。 Pi 2 が7.2秒で起動します。

Archは14-15秒くらいでした。

通りすがりのおじさんさん

ありがとうございます。 3.5を買おうか迷っていますが、まだ購入していません。 不安定なのは、ちょっとですね。 3.1もダウンロードできなくなってしまったので、これからMoodeを試そうという人には敷居が上がってしまいましたね。


toto さん

技適は、海外に比べて厳しいのでしょうかね。。。 詳細は私もわかりませんが、引っかかるとしたらスプリアスレベルが規定を超えてしまった等でしょうか。  おっしゃる通り、アンテナがプリントパターンで形成されているので、修正するなら時間がかかりますね。

Moode 3.1でもPi Zeroで動きます。 Zero W が3.5からということなんですね。


elemain さん

お役に立てたようでよかったです。 方法を調べたり試行錯誤したりで4日ほどかかりました。 Linuxの情報は古くなると使えなくなることが多く、現時点で正しく動く方法を導き出すのは結構苦労します。

Pi 2 だと 7秒ちょっとなのですね。 情報ありがとうございます。

ところでIoTって何に使うのでしょうか?

たかじんさんはじめまして

Moode Audio 3.5なのですが、SabreBerry32のドライバがインストールできないようです。
データベースへの登録が失敗してるようなので直接書き換えてみましたが、それでもうまく動作させることができませんでした。
現在は3.1に戻して快適に使っておりますが、3.1のダウンロードもできなくなったのは残念ですね。

たかじんさん、通りすがりのおじさん

Moode Audio3.5を再インストールしました。音楽をnasから再生している時は、音飛びもなく、安定していたので、やり直してみました。
SDをデジカメでフォーマットした後、PCで再度、クイックじゃないフォーマットをやり。
StanderdカーネルのままMoode Audioの設定を終えて。。
その後、アドバンスドカーネルに変えたら、ちゃんと動く。

有機ELの表示もつけて、再起動もできております。
SDのフォーマットを失敗してたのかな。

fuwawa さん

なるほど、スクリプトではなく手動インストールした方がいいかもしれないですね。 近いうちに試してみようと思います。

toto さん

SDカードのフォーマットでなおるケースはvolumioでも経験したことがありました。 イメージデータで上書きするので関係なさそうに見えて、なにかあるんでしょうね。

>> ところでIoTって何に使うのでしょうか?

PoEを使って構内各所の空調ダクトに温度・フローセンサーを搭載したPi2を15個配置。 サーバーにUPしてします。

ダクトはトタン製なのでWifiはNG。

外部のネットに接続していないので厳密にはIoTといえないがセキュリティの観点からクローズした環境で運用してます。

時々応答が無いPiが出てきたりすると、PoE-HUBごと落として再起動してます。

そのとき、速やかに起動できると助かるのです。

elemainさん

なるほど。 それはもう、個人の趣味というレベルのものではありませんね。 実用的、かつ、業務用のシステムでRaspberryPiを活用している事例なんですね。

ネットワークオーディオ的な使い方で1ヶ月くらい電源をONしっぱなしでも、特にもんだいなく動くのは試したことがあるのですが、あくまでも趣味レベルでの話でした。

無駄にSDカードにアクセスするsyslogなどをRAMDISK等に移すなどしてSDカードの書き込みを制限する方法が良いかもしれませんね。 ご存知かと思いますがSDカードは書き換え回数により寿命があります。

この記事の方法では、ROM化までやっていません。 ご注意いただけると幸いです。

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/587107/65176294

この記事へのトラックバック一覧です: Raspberry Pi Zeroを10秒以内で高速起動する最も簡単な方法:

« ハイレゾとCDの波形比較の興味深い考察 | トップページ | ラズパイオーディオの会 »

サイト内検索

Sponsors link

2017年4月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

最近のトラックバック

無料ブログはココログ