Raspberry Piで「埋め込みスタイル」を簡単に実行できるLinuxディストリビューションはありますか?[閉まっている]


9

以下を提供するLinuxディストリビューションが必要です。

  • Raspberry Piで実行する
  • (読み取り専用ファイルシステムなどを介して)電源喪失に確実に耐えることができます

通常のLinuxディストリビューションを読み取り専用モードに変更する方法に関するドキュメントを探すことができました。組み込み環境で実行するように設計されたディストリビューションがすでに構築されていることを期待していました。

私は多くのパッケージやドライバーを必要としません、PiがUSB /イーサネットで動作するのに十分なだけです。GUIインターフェイスなどは必要ありません。これは、Cで構築されたカスタムサービスを実行するだけです。

誰かが合うディストリビューションを知っていますか?


これが組み込みアプリケーションの場合、2つの簡単な点に注意してください。まず、Linuxを使用する場合は、リアルタイムカーネルを使用して、システムが十分に迅速に応答できることを確認してください。次に、ソフトウェアループやエラーが発生した場合にアクションを実行するようにウォッチドッグタイマーを設定することもできます。
画期的な

raspberrypi.stackexchange.comを確認してください。ただし、この質問はショッピングタイプの質問なので、トピックからも外れていると思います
Kevin Panko

回答:


3

ほとんどの組み込みシステムは、カスタムビルドのカーネルを使用します。これを容易にする1つのツールは、Buildrootです。これは、GNU gccツールチェーンをビルドするスクリプトのセット、(巨大な)GNU libcの代わりにuClibcライブラリ、Linuxカーネル、BusyBox、および組み込みボードのルートファイルシステム用の他のユーティリティ/パッケージです。RaspberryPiは比較的新しいボードなので、Buildrootでのサポートはまだ開発中ですが、プロジェクト別のプロジェクト、および個人の作業があるようです。RPの製造が増加し、流通が改善するにつれ、さらに多くのものが存在するでしょう。

Buildrootを使用すると、質問で説明したとおりにLinuxカーネルとルートファイルシステムを構築できます。インターネット接続速度と開発用PCの機能によっては、1〜4時間以上でバイナリが生成される場合があります。欠点は、結果のバイナリがテストされず、正常に起動および実行されることが保証されないことです。起動シーケンスをデバッグするには、システムコンソールが必須です。モニターなしでイーサネット/ wifi経由でミニPC(RaspberryPi / MK802 / Mele A1000 / VIA APC)にアクセスするにどうすればよいですか? しかし、RaspberryPiがブリックできないように設計されていることを考えると、この欠点がカスタムカーネルとRFSの構築を妨げるものであってはなりません。

「電力損失に耐える」について:ファイルシステムを適切に選択することで、通常この問題を緩和できます。MTDデバイスレイヤーとジャーナリングファイルシステム(jffs2など)は、経験から非常に堅牢であることが示されています。ほぼ完全な保護のramfsために、R / Wファイルシステムへの切り替えなしで(固定サイズのramdiskではなく)を使用するinitramfsがあります。

補遺

Buildrootの機能に関する30スライドのイントロがここにあります
(#27)最後に、組み込みシステムを構築するためのいくつかの類似した代替ツールについての言及があります。


2

TinyCoreLinuxはデフォルトで読み取り専用です(永続性はオプションです):http : //www.tinycorelinux.net/ports.html


私が提供したリンクに「Arm V6 Raspberry Pi」というタイトルが表示されていませんか?
avra

私はそれを逃したようです。賛成投票;)
ジャーニーマンオタク

1

コンソールアクセスが可能なSeagate Dockstarがあったので、Debian squeezeをインストールしました。読み取り専用ルートで実行するための出発点として、私はJeff Doozanによるこの優れた記事1を使用しました。基本的な戦略には、ブートごとに、必要な書き込み可能なディレクトリをtmpfsとしてマウントするスクリプトの作成が含まれます。ここでJeff 2のスクリプトを引用します(Keffs to Jeff!)

#!/bin/bash
DIRS="/tmp /var/log /var/run /var/lock /var/tmp /var/lib/urandom /var/lib/dhcp /etc/network/run"
for DIR in $DIRS; do
  echo "Mounting $DIR as tmpfs"
  mount -n -t tmpfs tmpfs $DIR
  if [ -d "$DIR-saved" ]; then
    echo "Restoring $DIR-saved to $DIR"
    tar -C "$DIR-saved" -cf - ./ | tar -C "$DIR" -xpf -
  fi
done

echo "nameserver 4.2.2.1" > /var/tmp/resolv.conf
touch /var/lib/dhcp/dhcpd.leases

exec /sbin/init

上記の行を/ sbin / init-roというスクリプトとしてターゲットrootfsに保存し、実行可能にします。

chmod 755 /sbin/init-ro

起動時にこのスクリプトを使用するには、システムのrootfsを少し準備する必要があります(すべてJeffのスクリプト2から引用)($ROOTマウントされたrootfsの実際の場所に適応)。

# Configure dhcp-client to write resolv.conf to /tmp instead of /etc
sed -i 's/\/etc\/resolv.conf/\/var\/tmp\/resolv.conf/' $ROOT/sbin/dhclient-script > /dev/null 2>&1
rm $ROOT/etc/resolv.conf
ln -s /var/tmp/resolv.conf $ROOT/etc/resolv.conf


# make /etc/network/run/ a symlink to /tmp/network/
rm -rf $ROOT/etc/network/run
ln -s /var/tmp/network $ROOT/etc/network/run


# Fixes from http://wiki.debian.org/ReadonlyRoot

rm $ROOT/etc/blkid.tab  > /dev/null 2>&1
ln -s /dev/null $ROOT/etc/blkid.tab

rm $ROOT/etc/mtab  > /dev/null 2>&1
ln -s /proc/mounts $ROOT/etc/mtab

rm $ROOT/etc/rcS.d/S12udev-mtab

rm -rf $ROOT/var/log/*

上記のようにrootfsを準備したら、/ etc / fstabにrootfsを読み取り専用でマウントします(ext2を使用しているファイルシステムに置き換えるか、代わりにrootfsを使用します)。

/dev/root  /                 ext2  noatime,ro   0 1

最後に、あなたのカーネルパラメータ(すなわち内に以下を追加する必要があり/boot/cmdline.txt実際の前にスクリプトを実行するためにRaspi上)/ sbinの/ initを。(以下は一例であり、ルートにrootdelayパラメータ。のラインに追加されなければならない重要な部分cmdline.txtがありますinit=/sbin/init-ro。)

root=/dev/mmcblk0p2 rootdelay=2 init=/sbin/init-ro

ただし、rootfsへの書き込みアクセスが必要なソフトウェアでは、適切なtmpfsの場所をマウントするか、外部ストレージに書き込む必要があることに注意してください。


1

私の2セントは、Piの信頼性の高いバッテリーバックアップを作成する方が、読み取り専用のOSを使用するよりもはるかに簡単です(最終的には優れています)。もちろん、それはあなたが電子機器のいくつかの非常に基本的な知識を必要とすることを意味します(そして私はBASICを意味します;我々は3-4コンポーネントを話します)。この男は、ほんの少しだけでファンシーなものを作りました:https : //raspberrypi.stackexchange.com/questions/1360/how-do-i-build-a-ups-like-battery-backup-system

これを行う場合は、LiPoを使用しないでください。NiCadはあなたが望むものです。LiPoは充電を一定に保つことができません。あなたは警告されました。

また、あなたは私の経験では非常に小さな問題であることに非常に心配しているようです。私はいつもLinuxの箱をぶつけており、突然の予定外のシャットダウンは当然私が気にならなくなったときのことです。ログを無効にすると、それを行うことについて苦情を受けることはほとんどありません。

すべてのログを無効にするには、次の行を/etc/rsyslog.confの最初のルールとして追加します。

*.* ~

問題がある場合でも、99.9999%の時間(つまり、私の個人的な経験ではほぼすべての時間を意味します)は、次にディスクをスキャンするときに問題に対処します。それがいつ起こるかは主に天候に依存しますOSはあなたがしたことに気づきました(奇妙なことに、それは通常そうではありません)PiはSDカードを使用しているので、これはPiでの発生がPCでの発生よりも少ないと想像します。


1

私が正しく覚えている場合、読み取り専用ファイルシステムはSDカードを「保護」しません。私は10のPiを顧客で実行しています(現在の稼働時間はそれらの半分で80日間以上)。私がすべての種類のSD破損の問題が発生する前に、実際にPiを2日間以上稼働させ続けることができる電源(3Aと評価された安価な充電器および2.3Aと評価された「高価な」iPad充電器)を見つけるのにしばらく時間がかかりました、読み取り専用IIRCのみで使用されたものを含みます。

私の問題はほとんど解決されています(新しいサプライ品により)が、将来のプロジェクトではNFSルートファイルシステムを検討しています。これについてはすでに多くのチュートリアルがあり、主に通常のPi fsイメージを中心に解決していますが、最小限のデブートストラップを実行して、NFS経由で読み取り専用のルートファイルシステムに変更するのはかなり簡単です。これをPiのubootおよびスマートubootスクリプトとペアにします。SDカードには、数メガバイトに相当するRPiファームウェア、ubootイメージ、およびubootスクリプトが含まれます。



-1

raspberrypi.orgのダウンロードページから4つの画像を入手できます

  • Debian「wheezy」
  • ソフトフロートDebian「wheezy」
  • Arch Linux ARM
  • QtonPi

そして、これはデフォルトでのみ読み取られる唯一のものです(ただし、必要に応じて変更できます)。

うまくいけば、これらの1つがあなたのニーズを満たすでしょう。


デフォルトでは、これらはいずれも読み取り専用ではありません。
アレックスチェンバレン

@alex、良い点。
Yedric 2012

TinyCoreLinuxがリストに追加されました。デフォルトでは読み取り専用です。
avra
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.