事前に準備されたSDカードイメージの作成


19

私が取り組んでいるプロジェクトでは、多くのPiにインストールできるRaspbianベースの「ストック」イメージを作成したいと思います。

理想的には、(コンピューター上で)Raspbianイメージを取得し、いくつかのパッケージをapt-getし、いくつかの構成を編集し、そこからSDカードイメージを作成してPiに配置できるようにしたいと思います。

これを行う簡単な方法または推奨される方法はありますか?遭遇する可能性のある落とし穴はありますか?

私は手動でpiをいじり、そのイメージを複製することを避けたいです。おそらく、Raspbianは誰かがPiのボタンを手動でクリックするのではなく、何らかの方法で作成されています。できれば、そのようにしたいです。

理想的には、継続的インテグレーションサーバー上で自動的にビルドできるものを作成したいです。「SDカードに書き込み、Piに入れて」というビルドプロセスは必要ありません。 Raspberry Piへの物理的アクセス。


3
役に立つかもしれませんRaspberry Pi Linuxディストリビューションイメージをマウントするにはどうすればよいですか?-受け入れられた回答の強調された行に注意してください。「何かを変更すると、それらの変更は.imgファイルに含まれます。」残念ながら、これは適用する機会を提供しませんapt-get。これを行う最も簡単な方法は、VMを使用し、VMのrsync起動に使用したイメージと同じマウントイメージを使用することです(VMイメージ自体はこれに適していないため)が、ここでの唯一のVMオプションはQEMUです。 AFAICTはPITAです。
goldilocks

別のアプローチはネットブートです。
lexu

Win32DiskImagerには読み取り機能がありますが、試してみましたか?
コングチュンホー

回答:


6

Raspberry Pi基盤は、QEMUを自動化する一連のbashスクリプトを使用して画像を生成します。「業界標準」のbuildrootおよびYoctoも検討する必要があります。

https://github.com/RPi-Distro/pi-gen

http://cellux.github.io/articles/diy-linux-with-buildroot-part-1/


OPが業界標準のリリースイメージを作成しようとしている場合..はい、それは進むべき道ですが、その学習曲線は非常に大きく、その道筋を愛好家に望んでいません。
ピョートルクラ

1
これは私が探しているもののようですね!これを使用するためのガイドはありますか?build.shは、多数の環境変数が設定されていると想定しているようです。
アンディスミス

おそらくTODOの#4でカバーされています;)数か月間は触れられていないので、関係者は他のことに忙しいか、興味を失っています。
goldilocks

@goldilocksので、これはベースのラスビア画像がどこから来たのではありませんか?
アンディスミス

3
私は正直に言って、私の印象はあなたがあまりにも活発にXY問題の Y側を追求しているということです-それはあなたがより単純な方法を考えていることを暗示しています(piに画像を設定するだけで、リモートログイン経由のコンピューター、およびマウントによって微調整された画像自体(PCで実行可能)、これらすべてはスクリプトで自動化できます)が非常に面倒なので、実際に多くの方法に希望を置いていますもっと面倒
goldilocks

5

私のプロジェクトNard SDKには、必要な機能が多数あります。Raspbianではありませんが、Raspbianバイナリエミュレーションを備えているため、非常に近いものです。Nardを使用すると、PC上ですべてを構築でき、プロセスは非常に高速で再現性があります。すべてがスクリプト化可能であり、夜間の継続的な統合などによって実行できます。
http://www.arbetsmyra.dyndns.org/nard/


0

私の意見では、あなたが提案した方法でそれを行うこと(マウント、アップデートと設定のための回避策の実行など)は実際のソリューションよりも多くの課題を提示します。確かに、興味があるならあなたのやり方でそれをするのは楽しいかもしれませんが、最良で最も簡単な方法はあなたが避けているものかもしれません。

Piを入手して、必要なことを行ってから、そのSDカードのイメージを作成することをお勧めします。次に、そのイメージは既に構成されているため、他のPiでそのイメージを使用します。

注:Raspbianを使用すると仮定します。また、頻繁に画像を作成する人(Raspberry Pi Foundationなど)ではなく、あなたは単なる普通の人だと仮定します。


手順あなたがあればやるあなたのパイといじくりを:

  1. 選択した最新のOSイメージをダウンロードしてインストールします
  2. イーサネットケーブルを接続する/ WiFiに接続する
    • PiのIPアドレスがわからない場合は、おそらくLANスキャンを実行します
  3. SSH経由で何かをする
    • apt-get update -y && apt-get upgrade パッケージを更新する
    • 個人設定のニーズ
  4. 画像を作成し、その画像を他のPiに使用します。

Piをいじらない場合の手順(上記のメモを参照):

  1. 新しいOSイメージをダウンロードする
  2. /raspberrypi//a/13138/24224の手順を使用してイメージをマウントします(一部のFSレイアウトが異なるため、使用しているOS /イメージも考慮する必要があります)
    • 電卓を用意してください。
  3. 更新する各パッケージdebファイル、およびそれらの依存関係それらの依存関係の依存関係、およびそれらの依存関係の依存関係のファイルを見つけます。面倒です。このリンクを参照してくださいapt-offline
    • 次に、Piを使用したり、いじったりせずに、これらすべてのパッケージをインストールする方法を見つけます。apt-getオフラインでは機能しません。deb ファイルの詳細はこちら。がんばろう。
  4. Hexxehのツールを使用してPiカーネルと低レベルのものを更新する
  5. 要件に合わせて構成する
  6. 変更した画像をPiのSDカードに書き込みます。

あなたのPiをいじらないことには何の利点もありません。

Piでスラックをいじってみてください。一度だけ行う必要があります。


依存関係、依存関係、依存関係などを取得して手動でプログラムを取得することはほとんど不可能です。しかし、apt-getを使用してVLCを実行する場合は、apt-get install vlc --yes --print-ウリス。リンクのリストが表示されます。ダウンロードしたら、それらを/ var / cache / apt / archives / partialに置き、dpkg -i partial / *。debを実行してインストールします。さらに良いことに、Synapticsを入手した場合、パッケージダウンロードスクリプトを生成するオプションがあります。Linuxコンピューターでそのスクリプトを実行すると、パッケージが取得されます。その後、それらを再度シナプスでインストールできます。
NULL

@NULLThen find a way to install all of those packages without using/tinkering with your Pi.
PNDA

@NULL私の知る限りdpkg、マウントされたイメージではなく、システム自体でのみ使用できます。また、OPは自分のPCを使用することを計画しているので、*.debあなたが持っているファイルはそもそも間違ったアーキテクチャ用です(PCはx86 / x64、PiはARMv6 / v7)
PNDA

私の質問で指定しているように、私は1をしたくありません。2については、それはナッツに聞こえます:)。2から@flakeshakesの提案がこれ以上難しいと思う理由は何ですか?
アンディスミス

私はgoldilockさんのコメントを引用します@AndySmith:I'll be honest and say that my impression is you are pursuing the Y side of an XY problem with too much vigour -- it's implied you think the simpler method (just set up an image on a pi, which can be done from a computer via remote login, and the image itself tweaked by mounting, which can be done on a PC, and all of this can be automated with scripting) is too much hassle, and so you have put your hopes in a method that is actually much more hassle.
PNDA

0

あなたが探しているのはある種のものだと思います(software) configuration management。これにより、ストックのraspbianイメージを起動して、独自の設定(新しいパッケージなどを含む)をプッシュできます。SCMシステムはたくさんあります。欠点は、これらのシステムのほとんどが大規模なネットワークをサポートすることを目的としているため、目的に対して少しやり過ぎかもしれないということです。何らかの種類のプロビジョニングサーバーも必要です。最も人気のあるSCMは、PuppetChefAnsibleのようです。始めるための記事:

これは一種の一般的な答えですが、SCMは幅広い分野です。たぶんこれはあなたの計画が何であるかに応じて掘り下げる価値があります。


Ansibleはエージェントレスであり、それを実行するために本格的なサーバーを必要としないため、有望なようです。
-duenni

1
本当にそうではありません、私はイメージをすでに構築したいのです。私のPiにネットワーク接続がない場合、この提案は機能しません。
アンディスミス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.