Portál AbcLinuxu, 3. května 2025 17:24
V návaznosti na diskuse ohledně chování programu mount ve vztahu k filesystému ISO 9660 jsem ho rozhodl přesvědčit se, jak to doopravdy je. A je to v podstatě tak, jak jsem si myslel.
Spustíme-li program mount
(s požadavkem připojit konkrétní FS), záleží na tom, zda existuje příslušná položka v /etc/fstab
a jaké parametry mount
dostane. Konkrétně třeba typ FS - největší prioritu má hodnota zadaná z příkazové řádky, pak následuje hodnota ze souboru, a teprve nakonec by se mount pokoušel o detekci filesystému.
Podobně je to i s volbami pro připojení. Tedy i s tím, zda se bude připojovat RO nebo R/W. Důležité je, že R/W je výchozí volba, a že detekce typu systému nemá žádný vliv na to, jak se filesystém připojí. Jinými slovy, že detekce (nebo jiné určení) filesystému ISO 9660 nezpůsobí, že by mount
automaticky přepnul na RO. Stejně tak na to nemá vliv zařízení - bylo by to nesmyslné a nesystematické, znamenalo by to mj. pořádné nabobtnání programu.
Program mount
tedy, v okamžiku kdy zná všechny potřebné parametry, volá syscall mount
, který provede (samozřejmě v jádře) samotné připojení. Jádro zjistí typ filesystému a zavolá příslušnou funkci v ovladači tohoto filesystému. A zde je to klíčové - ovladač pro ISOFS totiž bez dalšího natvrdo nastavuje režim na RO (bez ohledu na to, jaké parametry dostal). Není sám, podobně postupuje třeba ovladač NTFS, pokud nebyl zkompilován s podporou zápisu.
Po připojení se běh vrací zpět do programu mount, a ten (pokud bylo připojení úspěšné) zapíše soubor /etc/mtab
. Použije k tomu ty parametry, které posílal do jádra - nezajímá ho, jaké změny jádro provedlo (ostatně by si to musel zjistit, např. přes PROCFS, protože je přes syscall zpět nedostane).
Co z toho vyplývá? Že v /etc/mtab
(pokud je vytvářen přímo programem mount
) jsou parametry poskytnuté programu mount
, kdežto v /proc/mounts
jsou parametry, s jakými jádro filesystém připojilo. Proto ten rozpor.
Ještě zbývá vysvětlit rozpor mezi filesystémem připojeným ad hoc (na základě parametrů poskytnutých uživatelem) a systémem připojeným podle záznamů v souboru /etc/fstab
. Záznamy do tohoto souboru dnes dělá většinou démon HAL (dříve třeba program kudzu
apod.), který detekci schopností zařízení provádí (s jakou kvalitou, to nechme stranou). Proto, rozpozná-li RO zařízení, v řádku pro příslušný filesystém se objeví tato volba.
Doufám, že tento stručný přehled ukončí nesmyslné spory o to, co jaká komponenta dělá nebo má dělat. Já osobně považuji použitou koncepci za poměrně rozumnou, i když někdo může mít jiný názor.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.