Използване на USB флаш памет със Slackware



В Slackware няма програма, която да редактира автоматично файла /etc/fstab. За целта можем да инсталираме скрипта vsupdfstab, който е писан за базираната на Slackware дистрибуция VS Live.


Функцията на този скрипт е да редактира в реално време файла /etc/fstab – когато включим запомнящо устройство (флаш памет, цифров фотоапарат, MP3 плеър), скрипта добавя информация за него в /etc/fstab, а когато изключим устройството, скрипта премахва тази информация.


Скрипта се грижи устройствата да бъдат монтирани с правилни настройки в /etc/fstab – монтирането става с опции "async" и "noatime", които намаляват операциите по запис на данни като по този начин удължават живота на флаш паметта (особено на тази част, където е записана файловата система). Този скрипт нарочно не монтира устройството, защото това се върши от КДЕ (ако устройството бъде монтирано и се опитаме да го отворим с файловия мениджър на КДЕ, ще получим съобщение за грешка, че устройството не може да се монтира).


В случай, че КДЕ получи информация за включване на памет, но в /etc/fstab няма информация за нея и се опитаме да отворим запомнящото устройство с файловия мениджър на КДЕ, ще получим съобщение за грешка:


A security policy in place prevents this sender from sending this message to this recipient, see message bus configuration file (rejected message had interface "org.freedesktop.Hal.Device.Volume" member "Mount" error name "(unset)" destination "org.freedesktop.Hal")

Ако използваме Slackware 12.0 трябва да разрешим UDEV, HAL и D-BUS:



chmod +x /etc/rc.d/rc.udev
/etc/rc.d/rc.udev start
chmod +x /etc/rc.d/rc.messagebus
/etc/rc.d/rc.messagebus start
chmod +x /etc/rc.d/rc.hald
/etc/rc.d/rc.hald start


При по-старите версии тези програми ги няма.



В случай, че няма rc.udev, а има rc.hotplug, трябва да разрешим за изпълнение rc.hotplug и да копираме скрипта vsupdfstab.udev в директорията "/etc/dev.d/default/" като файл vsupdfstab.dev (разбира се след като инсталираме пакета) или да направим връзка:



chmod +x /etc/rc.d/rc.hotplug
/etc/rc.d/rc.hotplug start
mkdir -p /etc/dev.d/default/
ln -s /etc/vsupdfstab.udev /etc/dev.d/default/vsupdfstab.dev



Възможно е вместо да използваме скрипт, който да добавя автоматично информация в /etc/fstab при включване на запомнящи устройства, да добавяме настройките ръчно. Ето примерни настройки:



/dev/sdb1 /media/usb_sdb1 vfat auto,users,noatime,async,iocharset=utf8,codepage=855,fmask=111,dmask=000 0 0


Разбира се трябва да създадем точката на монтиране:



# mkdir /media/usb_sdb1


При включване на паметта се отваря диалога на КДЕ, който пита какво да се прави. Избираме „Отваряне в нов прозорец“ и КДЕ монтира паметта с посочените в /etc/fstab настройки. Но при изваждане на паметта е възможно да забравим да демонтираме устройството (например може да напишем команда sync и няма да имаме загуба на данни). В този случай, при следващото включване на устройството, дялът на паметта вече няма да бъде /dev/sdb1, а ще бъде /dev/sdc1. Тъй като в /etc/fstab няма информация за този дял, КДЕ ще изведе съобщение за грешка.


Компромисен вариант е да напишем в /etc/fstab достатъчно голям брой редове:



/dev/sda1 /media/usb_sda1 vfat auto,users,noatime,async,iocharset=utf8,codepage=855,fmask=111,dmask=000 0 0
/dev/sdb1 /media/usb_sdb1 vfat auto,users,noatime,async,iocharset=utf8,codepage=855,fmask=111,dmask=000 0 0
/dev/sdc1 /media/usb_sdc1 vfat auto,users,noatime,async,iocharset=utf8,codepage=855,fmask=111,dmask=000 0 0
/dev/sdcd /media/usb_sdd1 vfat auto,users,noatime,async,iocharset=utf8,codepage=855,fmask=111,dmask=000 0 0


Не е напълно сигурно каква е файловата система на устройството (в примерите по-горе допуснахме, че е FAT32) и затова варианта с ръчно написаните настройки не е много удачен. Ако инсталираме програмата vsupdfstab ще си спестим писането по конфигурационни файлове и гадаенето кое е името на устройството.



Изтегляне и инсталиране

Можем да изтеглим и инсталираме vsupdfstab с няколко команди:



wget http://vslivecd.openfmi.net/slp/a/vsupdfstab-0.2-noarch-0.tgz
wget http://vslivecd.openfmi.net/slp/a/vsupdfstab-0.2-noarch-0.tgz.md5
md5sum -c vsupdfstab-0.2-noarch-0.tgz.md5
su -c "installpkg vsupdfstab-0.2-noarch-0.tgz"



ВНИМАНИЕ!

Когато устройството е монтирано с опция async (както е по подразбиране), при запис на данните последните не се записват направо в устройството, а си чакат реда в оперативната памет. Това увеличава производителността (и живота на flash паметта!). Програмите индикират, че файловете са копирани, но реално само част от тях са на устройството (част са още в кеша). Ако извадим устройството, рискуваме данните да не са записани докрай. За да не се получава това, трябва да напишем в конзолата команда "sync" или да демонтираме файловата система на устройството преди да го извадим (с команда "umount /dev/у-вото" или десен бутон върху иконата му -> демонтиране, като изчакаме демонтирането).