Я должен повторно смонтировать один каталог (/src) как только для чтения в другом месте (/dst). Это может быть сделано как это:
$ sudo mount --bind /src /dst
$ sudo mount -o remount,ro /dst
Однако я хотел бы использовать /etc/fstab
иметь монтирование, происходящее во время начальной загрузки и видеть различные предложенные решения этой проблемы, например.
/src /dst none bind 0 0
/src /dst none remount,bind,ro 0 0
который, к сожалению, уезжает, каталог смонтировал чтение-запись в моей системе и этом
/src /dst none bind 0 0
/dst /dst none remount,bind,ro 0 0
который выпустит ошибку при попытке смонтироваться /dst
:
mount: /dst not mounted already, or bad option
Вышеупомянутые решения, предположительно, работают над различными дистрибутивами, но к сожалению не на Ubuntu 10.04.4 LTS (ядро 2.6.32 41 сервер).
Любые идеи, как выполнить это кроме размещения mount
команды в /etc/rc.local
?
На более старых ядрах, mount --bind
не может создать представление только для чтения файловой системы чтения-записи. Ядро хранит состояние чтения-записи файловой системы в единственном месте, которое не дублировано связыванием, монтируются. Более новые ядра позволяют это, но все еще требуют отдельного mount
шаг: сначала свяжите, затем сделайте только для чтения. Существует патч ядра для изменения этого, и некоторые дистрибутивы (такие как Debian) применили его, но Ubuntu не имеет (по крайней мере, не с 12,04).
Одно решение состоит в том, чтобы создать представление только для чтения из сценария начальной загрузки вместо этого от /etc/fstab
, как , Oli объясняет .
Иначе, можно использовать bindfs вместо этого. Это файловая система FUSE . Прохождение через FUSE немного медленнее, поскольку это представляет дополнительный слой косвенности. Вы также теряете поддержку расширенных метаданных файла, таких как ACLs. На обороте представление только для чтения будет иметь распознаваемый тип файловой системы, помогая исключить из обходов файловой системы (такой как locate
и резервные копии).
fstab
запись похожа на это:
bindfs#/src /dst fuse perms=a=rX
Согласно эта статья LWN, это поведение кралось в Ядро вокруг версии 2.6.25. Короче говоря, если целевая файловая система rw
, связывание чего-то на вершине не может преобразовать ее в ro
.
В 2.6.26 они частично починили вещи, таким образом, можно инициировать перемонтирование (поскольку Вы обнаружили), но нет все еще никакого способа сделать это из fstab.
<час>Вот то, что я пробовал в fstab:
/home/oli/Desktop/testmount /mnt none bind,ro
После увольнения mount -a
, /mnt
был смонтирован, но я мог все еще создать файлы. После затем исчерпывания sudo mount -o remount /mnt
, это стало только для чтения.
Так да, я думаю, что самый чистый метод должен или иметь строку в /etc/rc.local
или записать суперпростой Новомодный сценарий, который запускается на mountall
событие (таким образом, это сразу происходит).