opcja no-mtab nie działa dla mount

0

Mam skrypt, który próbuje zamontować /dev/loop0na punkcie montowania, powiedzmy /mnt/mpna RHEL. Polecenie, którego używam, znajduje się poniżej.

mount /dev/loop0 /mnt/mp --no-mtab -o ro

To nie powinno tworzyć żadnych wpisów /etc/mtab. Działa to do RHEL 6, ale na RHEL 7 to polecenie dodaje wpis /etc/mtab. Co może być przyczyną? Jak mogę to wyłączyć w RHEL 7?

DTdev
źródło
Jednym z obejść może być użycie programu unshare do utworzenia sesji powłoki z własną prywatną przestrzenią nazw montowania.
Mark Plotnick,

Odpowiedzi:

3

W nowoczesnych systemach / etc / mtab jest dowiązaniem symbolicznym do / proc / mounts. / proc / mounts to wirtualny plik dostarczany przez jądro, który pokazuje aktualny status wszystkich montowań. Dlatego /proc/mountszawsze będzie aktualizowany po każdej mountoperacji. Zobaczyć man mount.

Programy montują i umount tradycyjnie utrzymują listę aktualnie zamontowanych systemów plików w pliku / etc / mtab. Ten prawdziwy plik mtab jest nadal obsługiwany, ale w obecnych systemach Linux lepiej jest uczynić go dowiązaniem symbolicznym do / proc / mounts, ponieważ zwykły plik mtab przechowywany w przestrzeni użytkownika nie może niezawodnie współpracować z przestrzeniami nazw, kontenerami i innymi zaawansowanymi funkcjami Linuksa .

RHEL7 wydaje się być takim systemem.

Możliwe jest, że pliki / etc / mtab i / proc / mounts nie pasują do siebie

...

użyj jądra (/ proc / mounts) jako źródła informacji o systemach plików. To rozwiązanie zostanie zastosowane w RHEL7.

https://bugzilla.redhat.com/show_bug.cgi?id=751691#c1 >

sourcejedi
źródło
Dzięki @sourcejedi. Czy możemy uznać, że opcja --no-mtab jest przestarzała? Jeśli nie, jak można tego użyć?
DTdev,
@Durgesh „prawdziwy plik mtab jest nadal obsługiwany” przez mount (z util-linux). Twoja dystrybucja może jednak nie obsługiwać zastępowania dowiązania symbolicznego utworzonego przez dystrybucję.
sourcejedi
0

Nie polecam tego, ponieważ rzeczy, które czytają / etc / mtab mogą się zepsuć, ale możesz zrobić:

# cd /etc
# rm mtab
# touch mtab.real
# ln -s mtab.real mtab
# reboot

Systemd nie wydaje się aktualizować mtab, więc pozostaje pusty.

ughsystemd
źródło