実行中の Linux ルート ファイルシステムの置き換え

実行中の Linux ルート ファイルシステムの置き換え

実行中の PC のルート ファイルシステムを置き換える bash スクリプト可能な方法を考え出そうとしています。システムでは、ext4 ルートファイルシステムとスワップ パーティションを持つ MBR パーティション ディスクを使用していますが、残念ながら LVM / BTRFS やそのような便利なものは使用していません。grub / kernel & initrd / systemd を使用した最小限の Debian ディストリビューションを実行しています。

問題の PC には物理的にアクセスできません。PC ではキオスク ソフトウェアが実行されており、独自のツールを使用してバイナリと更新シェル スクリプトを含む tarball を PC にプッシュできます。私の計画は、この更新システムを使用して rootfs を置き換えることです。

私の考えは基本的に次のようになります。

  • initrd を、switch_root を実際の rootfs に置き換えるのではなく、置き換えるカスタム バージョン (おそらく dd を使用して新しいイメージを書き込む) に置き換え、新しいシステムを再起動します。

  • (なんとか!)switch_rootをライブシステムから何らかの一時ファイルシステムに変更し、上記のddを実行して再起動します。

  • 上記と同じですが、init プロセスを新しい一時的な fs に pivot_root して、上記のような操作を実行します...

pivot_root と switch_root の機能についてはよくわからないので、現在試行中です。これは以前に実行されたことがあるはずですが、検索しても解決策が見つかりません。

答え1

見るこのStack Exchangeの回答受け入れられた答えはこのリンクここでは、pivot_root を使用して一時的なメモリ内ルート ファイルシステムを作成する方法について説明します。これにより、再起動せずにルート ファイルシステムを変更、サイズ変更、置換、またはその他の方法で操作できるようになります。

関連情報