読み取り専用SDカードで実行


20

XBMCを実行するようにRaspberry Piをセットアップしました。常に起動して、SDカード上のプレイリストとファイルを再生します。Raspbmc自動更新をオフにしました。SDカードを「ロック」位置に切り替えても、引き続き正常に動作します。今、私の質問は:

  1. 「読み取り専用」SDカードシステムは、アプリケーションで常に機能しますか?

  2. SDカードは常に読み取り専用モードになっているため、シャットダウンコマンドを使用せずに電源スイッチをオフにすると、システムに損傷を与えますか?

  3. これが確実に機能する場合でも、「Raaspbmcが正常にシャットダウンしませんでした」というメッセージが常にポップアップされます。Piの起動時にこのメッセージを無効にする方法はありますか?


1
これを確実に機能させるには、適切なファイルシステムも読み取り専用としてマウントする必要があります。
Jivings

回答:


14

私は同様の用途がありました。私は建物の入り口でウェブページをナローキャストするためにPiを使用しています。テレビのUSBポート経由でPiに電力を供給します。

マウント/読み取り専用。

電力損失を防ぐために、次の行を変更して、マウント/読み取り専用にします /etc/fstab

/dev/mmcblk0p2  /               ext4    defaults,noatime,ro  0       1

ものすごく単純。しかし、機能するマシン上のいくつかのプロセスは書く必要があります。

/ tmpをメモリにマウントします。

多くのことが書き込まれる/tmpので、行を追加してメモリにマウントしました/etc/fstab

tmpfs           /tmp            tmpfs   defaults,size=30M    0       0

512MBのPiを使用できるため、/ tmpを30M大きくしました。

書き込みが不要なサービスを無効にします。

rsyslogロギングを停止することを無効にdphys-swapfileしました。実際に書き込む場所がないためです。メモリを集中的に使用する重い持ち上げを行うと、スワップなしで実行すると問題が発生します。私の場合、1つのミドリプロセスを1日実行するのはそうではありません。cat /etc/rc2.d/README方法については、Piをご覧ください。(raspbianはデフォルトでランレベル2で起動しますが、raspbmcは異なる場合があります)

偽の書き込み必要なサービスにましょう。

live-cdのように、メモリ内のファイルシステムへの書き込みアクセスを提供できます。労働組合マウント。しかし、unionfsまたは後のaufsのために自分のカーネルをクロスコンパイルする見込みはありませんでした。幸いなことにunionfs-fuse、事前に構築されています。mountを結合することはできませ/んが、本当に必要ですか?

midoriを実行するには、Xが必要です。Xは/home/pipiとして自動ログインし、/varunionfsを使用してそれらの場所にマウントすることにしたいくつかの場所に書き込みたいと思っています。

# move original /var and /home aside
mkdir /ro
mv /var /ro
mv /home /ro
# create mount points
mkdir /var /home

に2行を追加しました /etc/fstab

unionfs-fuse#/tmp=rw:/ro/var=ro  /var  fuse   cow,allow_other,nonempty
unionfs-fuse#/tmp=rw:/ro/home=ro  /home  fuse   cow,allow_other

/ var、/ home、および/ tmpへの書き込みはすべて/ tmpに書き込まれるため、これは非常に厄介です。しかし、マシンを8〜10時間実行するだけで、電源が切れます。だからこれでいい。

ものを微調整するときの読み書きの再マウント

ネットワークを変更したとき/etc/resolv.conf、dhclientが書いたものはもう機能しませんでした。

$ sudo mount / -o remount,rw
$ ifdown eth0; ifup eth0
$ sudo reboot

きれいにシャットダウンすること、またはrwを再マウントした後にroを再マウントすることを忘れないでください。

PS

ドイツ語が読める場合は、よりクリーンな方法があります(archive.orgから)。DeutscheGründlichkeit...


4

SDカードのロック位置ピンはPCBにまったく接続されていないため、カードに内部ロック機構がない限り、ロックは仮想的です。SDカードがロックされている間に何かを書き込もうとし、自分で確認してください。


4

SDの読み取り専用スイッチは、せいぜいソフトウェアオプションです。私が持っているほぼすべてのデバイスはそれを無視し、avraのコメントが正しい場合、Raspberry Piはそれがオンかオフかを判断する方法がないかもしれません。だから、あなたの質問に:

  1. はい、読み取り専用ではないため、機能します。
  2. はい、システムに損傷を与えます。ルートを読み取り専用でマウントし、Linuxが追跡する必要があるもののために小さなram / tempfsファイルシステムを用意する必要があります。
  3. いいえ、ファイルシステムが破損する可能性が十分にあるためです。

@avraの答えは、以前のRPで使用されていた標準サイズのSDカードの書き込み禁止スライダーの位置を検出した物理スイッチが正しいという点で正しいです(マイクロサイズのカードはわかりませんが、 (カードホルダーの側面にある接点)に接続されていない他のスイッチ(カードホルダーの下部にある)は「カード挿入」スイッチであり、 RPi。
SlySven

2
  1. 私はXBMCを使用していませんが、この目的のために設定するためにある程度の努力をしない限り、これは通常のオペレーティングシステムへのWRTとしては適切ではありません。暗黙的に、XBMCが明示的にセットアップされていない場合は、それも適切ではありません。

  2. カードが実際に読み取り専用である場合、実際にシステムに損傷を与えることはありませんが、実際に読み取り専用である場合、「シャットダウン」を実行できるポイントに到達することはほとんどありません。行った場合(つまり、カード全体が本当に読み取り専用になっていることを確信しています!)、シャットダウンを実行する必要はありません。プラグを引くだけです。カードには何も変更できないため、何をしてもかまいません。

  3. 確かに、初期化ファイルを見つけて編集することができます(明らかに、ファイルシステムはそれを行うために書き込み可能でなければなりません)。

あなたはルートファイルシステムをマウント行う場合は現実的には、読み取り専用、あなたが(それは難しいだけでロックトグルを使用してよりよい)、おそらく OSがディスクに書き込む必要がないので、正常なブートを取得することはありません。しかし、あなたがそうするなら、あなたがやりたいことを何でもしてください(そして、逃げることができます)。カードが読み取り専用の場合、カードを変更することはできませんので、害を及ぼすことはできません。


2

ただやるなら

1。

/ dev / mmcblk0p2 / ext4 defaults、noatime、ro 0 1
/ dev / mmcblk0p1 / vfat defaults、noatime、ro 0 1
完全な読み取り専用システムがあります。

2。

-logfile /tmp/Xorg.logでXorgを起動し、書き込みアクセスを必要とする他のサービスを見つけて、/ tmpにリダイレクトします。

3。

既に述べたように、必要のないサービスを無効にします

insserv -r dphys-
swapfile insserv -r rsyslog
insserv -r samba(インストールされている場合)など

まったく問題はないはずです。良い質問は、ROのみでプラグイン/アウトパワーが常にある場合、SDカードに実際に損傷がないかどうかです...

最後に、美しいスプラッシュスクリーンが表示されたら、カスタムの安価なスタンドアロンアプライアンスがあります。:)そして、TVからUSBポート経由でPIに電力を供給するというアイデアが大好きです。しかし、それは500mAに限定されていませんか?確かではありませんが、PIには約1Aが必要ですか?


dhcpclientは、/ etc / resolv.confおよびおそらく他の場所を/ varに書き込む必要があります。insservコマンドについて言及してくれたので、それが必要でした。新しいCA証明書を取得するためにアプライアンスを再構築しています。
クリスウェセリング

1

このオンラインをざっと見てみると、XBMCの最新バージョンについてこれに対する解決策を誰も投稿していないことがわかります。

Goldilocksが指摘した主な問題は、XBMCが読み取り専用になるように設計されていないことです。OpenELEC Media Centerフォーラムでこのスレッドをご覧になると、この点がさらに深まります。一般的なコンセンサスでは、Kodiを読み取り専用にすることはできません。

ユーザーklojumによると、その理由は次のとおりです。

OpenELECを読み取り専用デバイスで動作させることはできません。Kodiは、データベースをビデオ情報で保存/更新する必要があります。理由により、システムパーティションが読み取り専用として設定されています。すべての設定は、2番目の/ storageパーティションを経由します。したがって、cmdlineなどを使用して削除することはオプションではありません。各再起動後のシステムの復元は非常識です。OEをインストールし、希望どおりに実行し、完全なバックアップ/イメージを作成します。トラブルが発生した場合に復元する

人々は古いバージョンの回避策を見つけたので、これを回避する方法があるかもしれませんが、一般的に私は必要があるとは思いません。

私は、数年前からKodiを使用している人として、SDカードが破損するという不快感を理解できます。しかし、低レベルのコード修正を含まない、問題を軽減する他の簡単な方法があります。

SDカードが破損する最大の理由は、突然の停電があった場合です。これが起こる理由にはいくつかの理由があります。誰かがSDカードへの書き込みの途中でPiの電源を切断します。または、システムがフリーズし、電源を切断する必要があります。ただし、2番目の理由は腐敗を引き起こす可能性が低いと思います。または、プレイ中に別の障害があることを示唆しています。

Piの初期の頃、ボード上の電力供給回路は確かに何かを残していました。Piに電源を入れた状態でPiにUSBドングルを接続するだけで、システムクラッシュを引き起こした日々を思い出すことができます。あなたは私が見る信じていない場合は2011ラズベリーパイの上にXBMCを実行している問題を。もう1つの問題は、初期のソフトウェアが完全に成熟していないことです。Piはデスクトップコンピューターの可能性に対する別の見解であり、ソフトウェアの問題を解決するには時間がかかります。そのため、Kodiの新しいバージョンの多くは、システムがランダムにフリーズする可能性が低くなります。

突然の電力損失の問題を解決するには、何らかの無停電電源装置(UPS)を使用してPiに電力を供給します。通常のUPSでも機能しますが、実際にはPi専用に設計されたUPSがあります。このラズベリーパイ用の途切れない電源のように。システムがフリーズした場合は、準備が必要です。つまり、好みに合わせてすべての設定とアプリと設定でOSをセットアップし、SDカードのイメージを作成します。したがって、何か問題が発生した場合は、SDカードのイメージを再作成するだけです。

SDカードが故障するもう1つの理由は、摩耗によるものです。ただし、これは私が経験した問題ではありません。評判の良いブランドの高品質のSDカードを使用している場合は、おそらくその問題を解決するための半分の道にいると思います。SDカードの摩耗を最小限に抑えるということは、SDカードが確実に最小限に抑えられることを意味します。映画などの膨大なコレクションの保管スペースとして使用しないでください。

OpenELECで動作するオプションは、USBドライブから実行することです。もちろん、ブートファイルはすべてSDカードに残っている必要があります。これを行う方法に関するチュートリアルが多数あります。そこ従うことを非常に簡単に見える一つであり、ここでは、完全を期すために、私はあなたの概要を説明します:

最初のステップは、SDカードとUSBドライブのセットアップです。MiniTool Partition Wizardなどのプログラムを使用して、SDカードをFAT32としてフォーマットし、150MB以上のプライマリアクティブパーティションを使用すると、実際にはSDカード全体をFAT32としてフォーマットできます。パーティションがプライマリアクティブに設定されていることを確認してください。また、SDカードにSYSTEMなどのラベルを付けておくと便利な場合があります。そうすれば、将来その用途を思い出すことができます。次に、ファイルシステムタイプがEXT4の1つのプライマリアクティブパーティションとしてUSBドライブ全体をフォーマットします。この場合も、STORAGEのようにラベル付けする価値があります。

OpenELECをダウンロードして解凍したら、ルートフォルダーに移動します。そして、これらのファイルを選択します。

openelec.ico
README.md

そしてそれらをSDカードのルートにコピーします。

次に、targetフォルダーからファイルをコピーします。

KERNEL
SYSTEM

そして再び、それらをSDカードのルートディレクトリに貼り付けます。

次に、3rdparty/bootloaderフォルダーからファイルをコピーします。

bootcode.bin
config.txt
fixup.dat
LICENCE.broadcom
start.elf

そして、それらをSDカードのルートディレクトリに貼り付けます。

最後の手順はKERNEL、SDカード上のファイルのファイル名をに変更することkernel.imgです。

スタートアップファイルを作成するには、SDカードのルートディレクトリにというファイルを作成しcmdline.txt、次の行を追加します。

boot=/dev/mmcblk0p1 disk=/dev/sda1 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 ssh

保存してファイルを閉じてください。そしてそこから行くのは良いことです。情報源は、USBドライブからXBMCを実行すると応答性が向上することを示唆しています。この主張についてはよくわかりませんが、この方法を使用した結果としてパフォーマンスが低下することはありません。

メディアコレクションについては、USBでもネットワーク上の場所でも、2番目のドライブに保存することをお勧めします。

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