私は(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))
dev
、proc
およびsys
がマウントされたファイルシステムにバインドされているためだと思います。しかし、それらをアンマウントすることもできません...
最初にchrootセッションを終了する必要があります。通常、単純なexit
で実行できます。
exit
次に、バインドされたすべてのディレクトリをアンマウントします。
umount /mnt/rescue/dev/
umount /mnt/rescue/proc/
umount /mnt/rescue/sys/
次に:
umount /mnt/rescue
ここでsync
が使用されていないことが心配された場合は、アンマウントが可能かどうかには影響しません。いずれにしても、マウント解除は保留中の書き込みをフラッシュします(マウント解除後に移動する場所がないため、実行する必要があります)。 chrootされたプロセスの存在は関係ありません(アンマウントを防止する場合を除く)。通常のシステム操作では、同期による影響はありません。 syncは、デバイスがマウント解除されずに物理的に切断されている場合、またはデバイスがマウントされているときにシステムがクラッシュした場合にのみ、違いを生じます。
以下のコマンドを実行してファイルシステムをファイルシステム階層から強制的に切り離し、ビジー状態でなくなったらすぐにファイルシステムへのすべての参照をクリーンアップします。
umount -lf /mnt/rescue
「ターゲットがビジーです」を取得する理由。メッセージは、マウントポイント(/mnt/rescue
)がファイルブラウザまたはターミナルセッションで開いているためです。また、アンマウントプロセスの順序(ここでは、dev/pts
をdev/
の前にアンマウントする必要があることを意味します)
さて、そこにすべてのファイルを正常にマウント解除するために:
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
これは、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
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