При входе в chroot иногда необходимо смонтировать / sys и / dev, используя -rbind вместо -bind, чтобы убедиться, что все находится на своем месте, когда кто-то идет искать.
Проблема возникает при размонтировании.
Простое размонтирование всегда терпит неудачу; с установленными детьми он, кажется, используется:
$ umount /mnt/chroot/sys
umount: /mnt/chroot/sys: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
Другое возможное решение - перечислить монтирование из proc и размонтировать каждое из них следующим образом:
$ grep /mnt/chroot/sys /proc/mounts | cut -f2 -d" " | sort -r | xargs umount
Однако это также не помогает, потому что рекурсивное монтирование фактически не зарегистрировано в mtab:
/mnt/chroot/sys/kernel/security is not mounted (according to mtab)
Возможно, решение состоит в том, чтобы выполнить ленивый переход, но это кажется мне довольно опасным.
Есть ли лучший способ сделать это, что я пропустил?
mount
unmounting
natecornell
источник
источник
/mnt/chroot/sys/kernel/security
установлен в этой точке? Какой выходgrep /sys/kernel/security /proc/mounts
?umount
не нуждается в аргументах для перечисления в/etc/mtab
. Если вы передадите его-n
, он вообще не откроет файл.Ответы:
Это сработало для меня правильно - /unix//a/264488/4319 :
Было важно иметь две первые команды в виде двух отдельных команд: не объединять
--rbind
и--make-rslave
в одном вызове mount.Без
--make-rslave
этого поведение было нежелательным (и не успешным):umount -l
будет влиять на оригинальные старые точки монтирования тожеumount -R
будет зависеть от занятых (открытых) файлов в исходных старых точках монтирования. (Очень неожиданно ...)источник
--rbind
и--make-rslave
в одном и том же вызове монтирования:mount --rbind --make-rslave /dev /mnt/test
Благодарность за этот ответ достается Жилю ; Жиль отметил в комментариях к вопросу, что ключ '-n' игнорирует mtab и размонтирует все, что перечислено в / proc / mounts.
Из справочной страницы:
Итак, чтобы ответить на мой вопрос о том, как распознать монтирование --rbind, это полная команда, которая сработала для меня:
Мерси, Жиль!
источник
mount --rbind / /mnt && umount -n /mnt/dev/shm
(или оч) я получаюumount: /mnt/dev/shm: target is busy
.umount -l /mnt
убивает систему (например, sudo терпит неудачу, говоря, что stdin не tty). Это на установленной системе Fedora. Я думаю, это моя старая проблема: unix.stackexchange.com/questions/269695/…Начиная с util-linux v2.23 (25 апреля 2013 г.)
umount
команда поддерживает эту-R, --recursive
опцию.Вот что написано на странице руководства:
источник
Спасибо за это. Я использую это в своих сценариях для размонтирования всего дерева chroot: (Убедитесь, что установили $ MNT соответственно)
источник