Linux a NTFS automount
Poměrně často potřebuji přepojovat externí disky mezi počítači se systémy Windows a Linux. Pro Windows je jediným opravdu použitelným systémem NTFS a jelikož ho Linux dnes už velmi dobře zvládá (díky všem vývojářům zapojeným do projektu ntfs-3g), používám ho pro svá data i já.
Na soukromém notebooku mám Windows Vista, ve kterých je – zdá se – jakýsi podivný bug, kdy se zařízení připojená na externí USB hub nezobrazují po kliknutí na ikonku „Bezpečně odebrat hardware,“ a tak nezbývá než disk občas natvrdo od USB odpojit (samozřejmě ve chvíli, kdy se na něj nezapisuje).
Jenže takový disk odmítají současné linuxové distribuce automaticky připojit, protože podle jednoho příznaku poznají, že byl odpojen od „běžících“ Windows. Toto chování lze změnit, ovšem dokumentace jak na to je pramálo. Mně se po několika hodinách podařilo funkční postup najít, a tak se s vámi o čerstvě nabyté zkušenosti podělím.
Moderní linuxové distribuce už obvykle nenutí uživatele používat
příkazovou řádku, což je dobře. Výhodou je, že můžete prostě
připojit USB flash disk a systém jej automaticky připojí a nabídne vám
řádku možností, co s ním dělat dál. Tedy, platí to tehdy, když vše
funguje ![]()
Když se však objeví nestandardní situace – jako např. ta, kterou jsem popsal v úvodníku tohoto článku – nezbývá, než se zarochnit hluboko do systému a zjistit, co kde přenastavit a upravit, aby se vše chovalo podle vašich představ.
Podobné trable jsem podstoupil i já a dnes se mi konečně podařilo přijít na to, jak systém nakonfigurovat, aby přijal i disk s NTFS, na kterém Windows ponechaly příznak „používá se.“
Problém se projevuje tak, že se po připojení USB disku objeví následující chybová hláška (jak by řekl kamarád, objeví se „Chyba jako prase“):$LogFile indicates unclean shutdown (0, 0)načež se můžete dočíst, že řešením je buď znovupřipojení disku k Windows a následně jeho korektní odpojení, nebo vynuceným ručním připojením disku z příkazové řádky.Problém lze samozřejmě vyřešit spuštěním terminálu a v něm diskový oddíl připojit s parametrem -o force:
Failed to mount ‚/dev/sdb1‘: Operation not supported
Mount is denied because NTFS is marked to be in use. Choose one action:
mkdir -p /media/usbdiskSvůj disk posléze naleznete v adresáři /media/usbdisk. To může být jednorázovým řešením, pokud však potřebujete takovéto disky připojovat často, nezbývá než zjistit, kde parametr force nastavit natrvalo.
mount -t ntfs-3g -o force /dev/sdb1 /media/usbdisk
Automatizace
Nabízí se samozřejmě otázka, jak systému říct, aby to prováděl automaticky. To se liší podle verze tzv. HAL (Hardware Abstraction Layer, jakási vrstva, která má standardizovat komunikaci mezi aplikacemi a hardwarem). Verzi HAL zjistíte, když si ve správci balíčků vyhledáte „hal“. Ti zručnější mohou samozřejmě spustit shell a verzi zjistit pomocí utilit z balíčkovacího systému.<?xml version=„1.0“ encoding=„UTF-8“?> <!-- -- SGML -- -->Pokud je vaše distribuce novější a používá HAL ve verzi 0.5.10 či mladší (např. Ubuntu 8.04, Ubuntu 8.10), musíte provést změny dvě. Nejprve do téhož souboru jako výše (/etc/hal/fdi/policy/force.ntfs.mount.fdi) umístěte následující text:
<deviceinfo version=„0.2“>
<device>
<match key=„block.is_volume“ bool=„true“>
<match key=„volume.fsusage“ string=„filesystem“>
<match key=„volume.fstype“ string=„ntfs“>
<append key=„volume.mount.valid_options“ type=„strlist“>force</append>
<merge key=„volume.policy.mount_option.force“ type=„bool“>true</merge>
</match>
</match>
</match>
</device>
</deviceinfo>
<?xml version=„1.0“ encoding=„UTF-8“?> <!-- -- SGML -- -->
<deviceinfo version=„0.2“>
<device>
<match key=„block.is_volume“ bool=„true“>
<match key=„volume.fsusage“ string=„filesystem“>
<match key=„volume.fstype“ string=„ntfs“>
<append key=„volume.mount.valid_options“ type=„strlist“>force</append>
</match>
</match>
</match>
</device>
</deviceinfo>
A poté spusťte pod svým uživatelem program gconf-editor. V něm rozbalte větev /system/storage/default_options/ntfs-3g a na pravé straně dvakrát klikněte na hodnotu mount_options. Otevře se nové okno, kde pomocí tlačítka Přidat (Add) přidejte text „force“ a potvrďte odklikáním tlačítka OK.
Tuto změnu je potřeba provést pod každým uživatelem v systému, který potřebuje mít automaticky připojované nekorektně odpojené NTFS disky.
Proč se postup liší podle verze HAL?
Protože se Linuxová komunita rozhodla změnit umístění parametrů,
které toto nastavení ovlivňují. Tzv. volume.policy. a
storage.policy. hodnoty, které šly dříve nastavovat
v souborech, dnes HAL úplně ignoruje. Místo toho je nyní jedinou cestou,
jak tyto parametry nastavit, grafické klikátko, které – promiňte mi ten
výraz – připomíná Editor registru z Windows… ![]()
Zatím žádné trackbacky
Duben 8th, 2009 - 23:16
díky, díky, funguje bezvadně, pouze jsem přidával force do větve, která končí „ntfs“ namísto „ntfs-3g“
Únor 28th, 2010 - 08:30
super, presne tahle chyba se mi stala, ale nenapadlo me pridat volbu „-t ntfs-3g“; po pridani tohoto parametru uz terminal napsal presne v cem je problem i reseni