シャットダウン時にループバックルートとホストを削除したことを確認してください。

シャットダウン時にループバックルートとホストを削除したことを確認してください。

LVM形式のイメージファイルで実行されるLinuxシステムを設定しようとしています。 initramfsとブートオプションをいくつか変更した後、ホストファイルシステムをにマウントし、イメージ/run/initramfs/hostlosetupにマウントし/dev/loop0、カーネルとudevがLVM(およびルートLV)を検出したことを確認して起動して実行できました。今まではそんなに良くなった。

問題は、システムをシャットダウン(または再起動または...)するときに鶏と卵が必要なため、ルートファイルシステムまたはホストが正しくマウント解除されないことです/oldroot。 )はまだインストールされているため削除できず/oldroot/run/initramfs/host、ホストを削除するとアクセスできなくなるため削除できません/oldroot

異常終了するからといって世界が終わるわけではありません。両方のファイルシステムが記録されるため、fsckログは次回の起動時に単に再生されますが、明らかに完全にシャットダウンする方が良いでしょう。

したがって、質問は次のようになります。どういうわけか終了順序を調整することは可能ですか?できる終了スクリプトの変更)、または両方のファイルシステムを完全にアンマウントできるように、起動順序(おそらくホストのマウントポイントを別の場所に移動)が必要ですか?

答え1

誰でも同じ問題がある場合:

tmpfs必要なのは、アンマウントを実行する前に、シャットダウンスクリプトでホストファイルシステムのマウントポイントをルートファイルシステムの外部の場所に移動することです(ピボットルートで実行されるので問題ありません)。

mount --move /oldroot/run/initramfs/host /host

これにより、/oldroot完全に削除できます。その後、簡単なコマンドを使用してホストファイルシステムをアンマウントできます。

umount /host

答え2

いくつかありますオペレーティングシステムこの種のタスクを実行するためのヒント:

  • mount --moveこれがあなたを作る交換マウントポイントのファイルシステム
  • pivot_rootchroot/ルートファイルシステムの切り替えと一緒に使用されます。

早い、特徴目標は次のとおりです。

  1. initramdiskas を使用してカーネルを起動します。ルートファイルシステムRAM圧縮されていない部分を維持してくださいinitrd)。
  2. 必要なすべてのモジュールとスクリプトにアクセスする実際のルートデバイス最初のブート段階で始まりました。 (ここにはネットワーク初期化とネットワークデバイスのインストールが含まれる場合があります)
  3. 準備ができたら確認してください実際のルートデバイス準備されたルートファイルシステムとしてマウントされます。実行pivot_root(およびchroot)するので、実行後は次のようramdiskになります。未使用メモリディスクにインストールされました/initrd
  4. これにより、そこからumount /initrdメモリを解放できます。

man mountman pivot_root

答え3

ファイルを無効にせずにファイルシステムを完全にアンマウントされたとマークするには、読み取り専用で再マウントしてください。

mount -o remount,ro /mount/point

これは、実行可能ファイルの読み取り、実行、現在のディレクトリ、またはアクティブなマウントポイント用にファイルシステムに開いているファイルがある場合でも実行できます。書き込み用にファイルを開く場合にのみ読み取り専用で再マウントすることはできません。

関連情報