Как размонтировать ранее файловую систему chroot'd?

17

Я использую Rescue-Live-систему (аналог Live-CD), чтобы исправить некоторые проблемы с моим сервером 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/

Теперь я могу выполнить chroot, /mnt/rescueно после того, как я закончу, как снова размонтировать файловую систему?

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связаны с монтированной файловой системой. Но их также невозможно размонтировать ...

Afr
источник
Что происходит, когда вы пытаетесь размонтировать /mnt/rescue/proc? Вы уверены, что у вас еще не запущены процессы chroot?
Mat
Попробуйте lsof /mnt/rescueпосмотреть, какой процесс использует эту папку.
Мартин Канаваль
Вы должны покинуть chrooted оболочку перед тем, как завершить работу.
vonbrand

Ответы:

14
  1. Вы должны сначала выйти из сеанса chroot, обычно это exitделает простое :

    exit
    
  2. Затем размонтируйте ВСЕ связанные каталоги:

    umount /mnt/rescue/dev/
    umount /mnt/rescue/proc/
    umount /mnt/rescue/sys/
    
  3. Потом:

    umount /mnt/rescue
    

Если вы обеспокоены тем, что syncздесь не используется, обратите внимание, что это не влияет на возможность размонтирования. В любом случае размонтирование сбрасывает ожидающие записи (это необходимо, потому что после размонтирования им некуда деться). Наличие корневого процесса не имеет значения (за исключением того, что оно предотвращает размонтирование). При нормальной работе системы синхронизация не имеет заметного эффекта. Синхронизация имеет значение только в том случае, если устройство физически отключено без отсоединения или если происходит сбой системы во время монтирования устройства.

Джон Сиу
источник
1
спасибо, вот и все ... моя ошибка была в попытке размонтировать / sys / вместо / mnt / rescue / sys / ...
Afr
2
Это syncабсолютно бесполезно.
Жиль "ТАК - перестань быть злым"
@ Жиль Можете ли вы подробнее рассказать о том, почему syncэто бесполезно? Это становится бесполезным в текущем ядре? Или только в этом случае (режим спасения)? Я поместил его на всякий случай, если есть огромные ожидающие записи на диск, которые будут препятствовать размонтированию после выхода из chroot.
Джон Сиу
4
@JohnSiu syncне влияет на возможность размонтирования. В любом случае размонтирование сбрасывает ожидающие записи (это необходимо, потому что после размонтирования им некуда деться). Наличие корневого процесса не имеет значения (за исключением того, что оно предотвращает размонтирование). При нормальной работе системы syncне имеет заметного эффекта. syncимеет значение только в том случае, если устройство физически отключено без отсоединения или если происходит сбой системы во время монтирования устройства.
Жиль "ТАК - перестань быть злым"
@ Жиль, теперь я понимаю твою точку зрения. Спасибо!!
Джон Сиу
14

Выполните приведенную ниже команду, чтобы принудительно отключить файловую систему от иерархии файловой системы и очистить все ссылки на файловую систему, как только она больше не будет занята.

umount -lf /mnt/rescue
shgnInc
источник
4

Причина, по которой вы получаете «цель занята». сообщение связано с тем, что точка монтирования ( /mnt/rescue) открыта в файловом браузере или в сеансе терминала, а также в порядке размонтирования (здесь я имею в dev/ptsвиду, перед этим нужно размонтировать dev/)

Ну, чтобы успешно размонтировать все фс там:

  • Убедитесь, что точка монтирования не открыта в файловом браузере!
  • После выхода из chroot измените каталог из chroot dir ( cd)!
  • Umount FS уважая порядок dev/pts => dev/ => proc/ => sys/ :

    Sudo размонтировать / шоссе / спасательная / DEV / PTS
    Sudo размонтировать / шоссе / спасательный / DEV
    Sudo размонтировать / шоссе / спасательный / Proc
    Sudo размонтировать / шоссе / спасательный / SYS
    Sudo размонтировать / шоссе / спасательным

Ион
источник
2

Вот как я поступаю с schrootкомандой на Ubuntu версии 10.04 и выше:

# 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
biocyberman
источник
0

Выход из 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
Морда кирпичом
источник