ルート刑務所ドライブのマウント解除遅延

ルート刑務所ドライブのマウント解除遅延

元のシステムにいくつかのソフトウェアをインストールするために、rpmとyum(centos 7.5)を含むルート刑務所を作成しました。

作業プロセス

  • sys、proc、devをルート刑務所にマウントします。
  • 元のシステムのルート「/」を刑務所にマウントします。実際には、基本システムにソフトウェアをインストールするためにルート刑務所を使用するので、これは重要です。
  • 一部のソフトウェアをインストールするために必要なmount /proc /rootJail/originalRoot/procなど、rootJailの元のシステムのルートディレクトリに元のシステムのsys、proc、およびdevをマウントします。
  • ルート刑務所に入り、ソフトウェアをインストールしてルート刑務所から出てください。
  • ルート刑務所からsys、proc、devを削除する
  • ルート刑務所の元のシステムからsys、proc、devを削除します。
  • ルート刑務所から元のシステムルートを削除します。 (ここで失敗します。)

umount: /rootJail/originalRoot: ターゲットが使用中です。 (場合によっては、デバイスを使用するプロセスに関する有用な情報はlsof(8)またはfusionr(1)にあります)

したがって、デフォルトでは、元のシステム自体のルート以外のすべてを削除できます。必要なルート刑務所を削除するには、これを行う必要があります。

問題は、ルート刑務所の内部にソフトウェアをインストールした後、多くのプロセスが開始されることです。そのため、対象が忙しいと言うのです。これらのプロセスをすべてシャットダウンすると、システムもシャットダウンされるため不可能です。インストールパスが正しい場合でも、これらのプロセスは実際のシステムではなくrootJailにバインドされているようです。また、再起動後、すべてがうまく機能します。 (最悪の場合:ここからフォルダを削除してください。)

私はほとんど動作する怠惰な除去を試みました。 rootJailを削除することができ、インストールされた元のシステムには害を及ぼさないようです。

私の質問は:これは安全ですか?それとも、フォルダをアンマウントする他の解決策はありますか?

ベストアンサー1

したがって、これらのプロセスが無限に実行され続けたいと思います。つまり、ネストされたchroot環境で開始されたサービスプロセスです。これは、systemdではなくシェルでサービスプロセスを作成していることを示します。

通常、これは悪いので避けることをお勧めします。

CentOS 7は、systemdPID 1を使用してシステムサービスを実行および管理するために使用されます。明らかに、メインシステムのPID 1はchrootで実行されていません。通常、システムサービスプロセスの開始を要求すると、PID 1 から分岐きれい環境(.service関連ユニットファイルに従ってカスタマイズ)。 (ここには従来のsysvinitスクリプトが含まれています。自動的に生成されたファイルにインポートされます.service。)

chroot(これをさらに説明すると、技術的にソケットでバインドマウントを実行してsystemdと通信し、chroot内のコマンドを使用してホストシステムのサービスを操作することができます。)

問題は、あなたのアプローチがsystemdの利点を失うことだけではありません。これは、システムサービス(デーモンにある場合)を混同していることを意味します。たとえば、サービスが開始されていないように見える場合があります(service foo status)。後で試してみるとservice foo restart... systemdは停止するデーモンがあることを知らず、起動しようとします。第二代わりにデーモンプロセスのインスタンスです。これはデバッグに少し混乱しています!通常、TCPポート80をリッスンする他のプログラムがすでに存在しているため、Webサーバーを起動できないというエラーがすぐに表示されますが、他の場合は2つの異なるデーモンインスタンスが表示されることがあります。気づくのに時間がかかるエラーが発生します。

おすすめ記事