web-dev-qa-db-ja.com

RAMに書き込み可能なレイヤーを持つ読み取り専用Linuxシステムを構築する

RHEL 6.6/7.0を読み取り専用モードで起動し、RAMにのみ書き込み可能なレイヤーを設定する必要があります。これは、ファイルシステムが読み取り専用であるという点で、ライブCDの動作と似ていますが、RAMにロードした後、その一部は書き込み可能です。ここでは、ファイルシステムに書き込まれた変更は再起動時に失われます(RAMのみが書き込み可能レイヤーで更新されるため)。

ネットを見回しているときに、既存のインストール済みシステムでこのプロセスを模倣できるように、ヘルパーツールなしで自分の「ライブCD」を構成するためのガイドを見つけられませんでした。

自分のライブCDを作成したり、RAMにのみ書き込み可能なレイヤーを備えた読み取り専用のLinuxを作成したりするためのリソースをどこで入手できるかを誰かが知っていますか?

7
Kinetic Arc

OK、SDカードに読み取り専用システムがあり、読み取り/書き込みスイッチを読み取り専用モードに設定できます。私は自分の質問に答えるつもりです。手順をここでもう一度見たいと思っているからです。うまくいけば、これが他の誰かの助けになるでしょう。

Red Hat Enterprise Linux 6.6システムで/etc/fstabのさまざまなディレクトリを読み取り専用として設定しているときに、/etc/sysconfig/readonly-rootファイルを見つけました。これは、このファイルが何のために使われたのか、およびそれに関する付随的な情報に私の興味をそそりました。つまり、このファイルには「READONLY=no」という行が含まれています。この行を変更すると、さまざまなディレクトリ(ディレクトリとファイルはtmpfsとして読み込まれます)で必要な書き込み操作を維持しながら、ルートファイルシステムのほとんどが読み取り専用として自動的に読み込まれます。私がしなければならない唯一の変更は、/home/root、および他のいくつかのディレクトリを/etc/rwtab.dディレクトリから書き込み可能として設定し、/ etc/fstabを変更してルートファイルシステムを次のようにロードすることです。読み取り専用(ルートの「defaults」を「ro」に変更)。 READONLY=yesファイルに "/etc/sysconfig/readonly-root"を設定し、/etc/rwtab.dを介して必要な書き込み可能ディレクトリを設定し、fstabを変更すると、読み取り専用でロードするシステムですが、書き込み可能なディレクトリがRAMにロードされています。

詳細については、これらは私が使用したリソースです:

また、Red Hat Enterprise Linux 7.0で簡単な検証を行いましたが、このファイルはまだ存在しており、機能します。テスト環境は、仮想マシンのCentOS 6.6と7.0、およびVMEシングルボードコンピューターのRHEL 6.6と7.0でした。

注:ルートが読み取り専用になると、ルートシステムに変更を加えることはできません。たとえば、yumを使用してパッケージをインストールし、再起動してもパッケージを保持することはできません。したがって、読み取り専用ルートを解除するために、rghbとquietを削除するgrub行を追加しました(これはブートの問題をデバッグするためだけであり、必要に応じてそのままにしておくことができます)、「init=/bin/bash」を追加しました。これにより、ターミナルに入ることができました。ターミナルで「mount - / -oremount,rw」と入力して、システムを書き込み可能にしました。書き込み可能になったら、(vimを使用して)/etc/sysconfig/readonly-rootを「READONLY=no」に変更し、システムを再起動しました。これにより、読み取り専用をオフにすることで、システムのメンテナンスを実行できます。私のようなSDカードを使用している場合は、SDカードの読み取り/書き込みスイッチを書き込み可能に設定する必要があります。

9
Kinetic Arc

はい、これはLive CDと同じです。これは、複数のファイルシステムを互いにオーバーレイするように設計された特別なファイルシステムドライバーを使用して行われます。この場合、RAM disk。

オーバーレイファイルシステムにはさまざまな選択肢があります。UnionFS、auf、overlayfsを検索して、選択肢が何であるか、およびそれらの間のトレードオフが何であるかを把握してください。

3
godlygeek

Kinetic Arcが提供する回答をフォローアップするには、その後の再起動時にシステムを変更する簡単な方法は、カーネルコマンドラインに「noreadonly」を追加することです。これが非常に頻繁に行うことを期待していない場合は、grubをキャッチして手動で追加するだけで十分です。読み取り専用システムを開発するときに、grub.confにエントリを追加し、それを追加してタイムアウトをわずかに増やしました。システムイメージの開発が完了したら、イメージを配布する前にエントリを取り出します。

1