Как привязать root (/) к себе с помощью предохранителя в Linux?

Я пишу файловую систему предохранителей, которая монтирует один каталог к ​​себе. Я хочу регистрировать некоторые звонки (например, flush). Я начал адаптировать пример кода руководства по Fuse. Если я попытаюсь связать любой каталог, он отлично работает:

./bbfs -o nonempty ./test ./test

но если я попытаюсь связать конкретный корневой каталог ("/"):

sudo ./bbfs -o nonempty / / 

в лог-файле нет ни одной строчки.

Является ли это возможным?

Моя искаженная версия примера программы. Я изменил только bbfs.c файла.


person milo    schedule 09.08.2012    source источник
comment
Вы действительно можете смонтировать каталог к ​​себе? Почему? Когда я пытаюсь войти в такой каталог, оболочка зависает. (пробовал пока только оригинальную версию bbfs)   -  person Chris    schedule 28.07.2014
comment
...попробовал и вашу версию, эффект тот же. Вы использовали какие-то определенные параметры командной строки? (извините за двойной пост, но комментарии могут быть добавлены только в течение 5 минут)   -  person Chris    schedule 28.07.2014


Ответы (1)


Вы не можете смонтировать файловую систему FUSE (или файловую систему любого другого типа) в /, потому что ваша корневая файловая система уже существует.

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

person Community    schedule 09.08.2012
comment
Я не хочу монтировать /над/. Я просто хочу связать его с собой. Все вызовы rootfs будут доставлены в rootfs. Ни один файл не будет пропущен или поврежден. Почему я могу связать любую директорию с собой, кроме /? Можете назвать точную причину? because your root filesystem is already there все мои предыдущие связанные каталоги уже были там. - person milo; 10.08.2012
comment
Вы можете монтировать файловые системы поверх большинства других каталогов, потому что эти каталоги еще не являются точками монтирования. / всегда является точкой монтирования, поэтому вы не можете монтировать поверх нее что-либо еще. - person ; 10.08.2012
comment
Это неправильно, вы можете перемонтировать /, как вы думаете, работает initramfs? см. системный вызов pivot_root(2). - person Aram Hăvărneanu; 24.09.2019