
関連この問題:読み取り専用でマウントする必要があるルートファイルシステムがある場合(完全に破損していると仮定)、パーティションを再フォーマットするか、そのパーティションで古いバックアップイメージを使用できますか(dd
それから再起動できますか?)
私はファイルシステムがマウントされたときにこのような突然の変更が好きではないと思います(読み取り専用でも)。
または同様の質問で:fsckを対話的に実行すること(つまり、別のツールを使用してパーティションデータを永久に変更する)以外に、間違ったルートファイルシステムを修正する他の方法はありますか?
答え1
まあ、インタラクティブに実行するのではなく、fsck -y
他の質問で私の答えのように試してみることができます。 -P
dd
rootfs の上にイメージを生成する場合、最良のオプションは rootfs をマウントする前に initramfs で行うことです。
あなたできるそのrootfsで起動されたシステムでこれを行います。しかし、これはUnixがあなたにロープを提供することの1つです(ループはすでにあなたのためによく縛られています)。ファイルシステムはそれをまったく好きではありません(「ねえ、そこにinodeがあると予想しましたが、このゴミは一体何なの?!」)。実際に読み取り専用であることを確認してください。つまり、ログ再生ではないことを確認してください。
ファイルシステムへのアクセスを避けると、ファイルシステムから離れることができます。これは、ソースイメージがrootfsに存在できないことを意味します。それは本当に悪い考えです。
ddを実行した後はshutdown -r now
機能しません(ls
および含めても機能しませんcat
)。代わりに、ウォッチドッグ(またはソフトドック)を強制的にリセットするか、通常は組み込みシェルを使用して実行を/proc/sysrq-trigger
続けるecho
ことをお勧めしますecho
。
あなたが何をしているのかよくわかりませんが、ある種のデバイスを作っているかのように聞こえます。 rootfsを読み取り専用に保ち、オーバーレイ(パブリックマウント、aufsなど)を使用してlivecdの動作と同様に変更することを検討する必要があります。または、バックアップまたは復元のみのためのrootfsを保持することもできます(動作しているAndroid携帯電話の数に似ています)。
答え2
あなたは試すことができます。しかし、私はこれに反対することを強くお勧めします。カーネルがプログラムの一部をメモリからアンロードしてから元のファイルから再ロードできるため、実行中のプログラムが中断される可能性があります。プログラムと使用しているすべてのファイル(特に共有ライブラリを含む)を別のファイルシステム(tmpfsファイルシステムである可能性があります)にコピーしたことを確認してください。
理論的には、最悪のシナリオは誤ったデータを読み取ることです。ある時点のエラーにより、ファイルシステムが読み取り専用で再マウントされる可能性があります。実際にカーネルパニックが発生する可能性があります。それにもかかわらず、使用できないファイルシステムで終わる危険性が高いです。
ルートパーティションでfsckを実行するには、initramfsで実行します。そして私は2番目ドロベルのおすすめ連合ファイル・システムで拡張された読み取り専用ルート・ファイル・システム。