Если у вас еще не включено распространение монтирования, т.е. согласно настройкам systemd по умолчанию, сначала запустите это:
mount --make-rshared /
Тогда:
mkdir /root.orig
mount --rbind / /root.orig
mount --make-rprivate /root.orig/mnt
mount newdevice /mnt
...
umount -R /root.orig/mnt # instead of umount olddevice
Затем безопасно разберите магию -, стараясь не размонтировать всю систему:
mount --make-rprivate /root.orig
umount -l /root.orig
rmdir /root.orig
Обычно мне нравится использовать рекурсивные варианты команд mount
/ umount
. Вы говорите, что начали только с одной файловой системы, смонтированной под /mnt
. В приведенной выше последовательности я использовал umount -R /root.orig/mnt
. Если бы также была файловая система, смонтированная в каталоге sub каталога /mnt
, эта команда umount -R
могла бы завершиться ошибкой на половине пути -. т.е. потому что на подмаунте нет открытых файлов, а на основном монтировании есть открытые файлы.ИМО, это похоже на то, как работает umount -l
. umount -l /path
дизассемблирует и отсоединяет дерево монтирования, и каждая независимая файловая система закрывается, как только в ней нет открытых файлов.