web-dev-qa-db-ja.com

以前chrootされていたファイルシステムをアンマウントする方法は?

私は(live-cdに似た)rescue-live-systemを使用して、Debianサーバーのいくつかの問題を修正しています。

# mkdir -p /mnt/rescue
# mount /dev/md2 /mnt/rescue
# mount --bind /dev /mnt/rescue/dev/
# mount --bind /proc /mnt/rescue/proc/
# mount --bind /sys /mnt/rescue/sys/

これで/mnt/rescueにchrootできますが、完了したら、ファイルシステムを再度マウント解除する方法を教えてください。

umount: /mnt/rescue: target is busy.
    (In some cases useful info about processes that use
     the device is found by lsof(8) or fuser(1))

devprocおよびsysがマウントされたファイルシステムにバインドされているためだと思います。しかし、それらをアンマウントすることもできません...

19
Afr
  1. 最初にchrootセッションを終了する必要があります。通常、単純なexitで実行できます。

    exit
    
  2. 次に、バインドされたすべてのディレクトリをアンマウントします。

    umount /mnt/rescue/dev/
    umount /mnt/rescue/proc/
    umount /mnt/rescue/sys/
    
  3. 次に:

    umount /mnt/rescue
    

ここでsyncが使用されていないことが心配された場合は、アンマウントが可能かどうかには影響しません。いずれにしても、マウント解除は保留中の書き込みをフラッシュします(マウント解除後に移動する場所がないため、実行する必要があります)。 chrootされたプロセスの存在は関係ありません(アンマウントを防止する場合を除く)。通常のシステム操作では、同期による影響はありません。 syncは、デバイスがマウント解除されずに物理的に切断されている場合、またはデバイスがマウントされているときにシステムがクラッシュした場合にのみ、違いを生じます。

19
John Siu

以下のコマンドを実行してファイルシステムをファイルシステム階層から強制的に切り離し、ビジー状態でなくなったらすぐにファイルシステムへのすべての参照をクリーンアップします。

umount -lf /mnt/rescue
15
shgnInc

「ターゲットがビジーです」を取得する理由。メッセージは、マウントポイント(/mnt/rescue)がファイルブラウザまたはターミナルセッションで開いているためです。また、アンマウントプロセスの順序(ここでは、dev/ptsdev/の前にアンマウントする必要があることを意味します)

さて、そこにすべてのファイルを正常にマウント解除するために:

  • マウントポイントがファイルブラウザで開かれていないことを確認してください!
  • Chrootを終了した後、chroot dir(cd)からディレクトリを変更します!
  • 注文を考慮したマウント量dev/pts => dev/ => proc/ => sys/

    Sudo umount/mnt/rescue/dev/pts
    sudo umount/mnt/rescue/dev
    sudo umount/mnt/rescue/proc
    sudo umount/mnt/rescue/sys
    sudo umount/mnt/rescue

4
Jonah

これは、Ubuntuバージョン10.04以降でschrootコマンドを使用して行う方法です。

# list all sessions:
schroot --list --all-sessions
# if the above command does not work, just type `mount`. The bind mount
# points with something like this in the mount path is the session name you want to get:
precise-a4aac8e0-663c-4fec-8fb2-16e4b06557e3 (<chroot_name>-<id>)

# now run this to properly end the session:
schroot -e -c precise-ca6c72e4-0e9f-4721-8a0e-cca359e2c2fd
2
biocyberman

Chrootを終了します。ホストシステムでは、コマンド 'mount'はマウントされたすべてのパスを表示します。 (chrootにマウントされているパスを含みます。)例:

binfmt_misc on /home/user/projects/jsroot/proc/sys/fs/binfmt_misc

次に、chroot環境に入ります。 chroot環境でunmountを実行して、すべてのパスを順番にアンマウントします。 (サブパスは親パスの前にアンマウントする必要があります。)

unmount /proc/sys/fs/binfmt_misc
unmount /proc/sys
unmount /proc
0
PokerFace