ファイルシステムのライブ変更のための小さなユーティリティ
リモートサーバーでLinuxディストリビューションをどのように使用するかを最初に決めたとき、ターゲットホストにさまざまなルートファイルシステムをすばやくインストールする方法が必要だったので、[paroodise]を作成しました。
起動したブロックデバイスをフラッシュできるようにするには、次のことを行う必要があります。 アンマウント 。使用をやめた場合にのみアンマウントできます。使用を停止するには、別のルートファイルシステムからサービスを所定の場所で再起動する必要があります。これは、 initramfsLinuxベースのOSを起動すると、カーネルはブートイメージを実行し、ファイルシステムをセットアップします。 初期化 サービス開始。
でこれを達成するには 既に実行中 システムでは、プロセスを再起動する方法に注意する必要があります。スクリプトが成功するまで実行されることが確実でない限り、sshを強制終了することはできません。
systemdベースのディストリビューションではプロセス全体がはるかに簡単です。systemdはLinuxカーネルに深くフックしているため、プロセスを無謀に操作するとカーネルパニックが発生する可能性があります...実際、最近のディストリビューションでは通常発生します:)
このミニユーティリティを書いたとき、元のsshセッションよりも長生きしたプロセスを生成する安定した方法を知らなかったようです。より一貫性のある方法で書き直す必要があります。
プロセス全体はで構成されています
メモリ上のファイルシステムを再ブートストラップするために必要な最小限のファイルをコピーする
カーネルマウントポイントの移動(または再作成)(/dev
, /proc
, /sys
)
立っているsystemdプロセスツリーによって生成された以前のサービスを強制終了します
systemdを新しいピボットファイルシステムに再実行し、systemctl daemon-reexec
すべてが正常に完了すると、この時点で新しいsshサービスを生成し、元のマウントポイントを変更できるセッションにログインすることができます。