Kuidas USB seadmete ühenduspunkte fikseerida
Kuidas USB mäluseadmeid alati ühte kohta ühendada
Kes on kunagi Linuxis ühendanud arvuti külge mitmeid erinevaid USB mäluseadmeid korraga, see on kindlasti kokku puutunud probleemiga, et olenevalt seadmete arvuti külge torkamise järjekorrast ühendatakse nad erinevatesse kataloogidesse. Juhtub see seepärast, et olenevalt ühendamise järjekorrast saavad USB mäluseadmed endale erinevad tähised (/dev/sda, /dev/sdb jne), mistõttu kui failis /etc/fstab on määratud, kuhu midagi ühendada tuleb, ongi erineva ühendamise järjekorra puhul tulemuseks paras segadus.
Sellist olukorda saab vältida, ühendades USB mäluseadmeid mitte seadmefaili abil, vaid nn. UUID (Universally Unique Identifier) abil. UUID on number, mis antud juhul igal kettapartitsioonil on unikaalne, mistõttu saab sellega alati üheselt määrata, milline seade külge ühendati.
Järgnev õpetus eeldab, et kasutatakse mingid userspace-utiliiti eemaldatavate mäluseadmete automaatseks ühendamiseks. Gnome kasutajatel teeb seda gnome-volume-manager, kindlasti on sarnaseid vahendeid veelgi. Neile, kes käsitsi eemaldatavaid mäluseadmeid ühendavad, ei anna järgnev õpetus suurt midagi.
Vaatleme nüüd näidislõiku /etc/fstab failist, kus on määratud kahe USB mäluseadme jaoks ühenduspunktid.
/dev/sda1 /mnt/usb1 vfat defaults,user,noauto 0 0 /dev/sdb1 /mnt/usb2 vfat defaults,user,noauto 0 0
Nagu näha, on siin defineeritud kaks erinevat USB mäluseadet koos oma ühenduspunktidega (olukorra lihtsustamiseks eeldame, et masinas ei ole SATA ja SCSI kettaid; USB mäluseadmed teadupärast käituvad SCSI seadmetena). Olgu meil nüüd kaks USB mälupulka (või välises karbis ketast), tähistame need vastavalt A ja B.
Kasutaja ühendab arvutiga mälupulga A, mis esimese USB mäluseadmena saab enda käsutusse seadmefaili /dev/sda ning partitsiooni tähistava seadmefaili /dev/sda1 (eeldame, jällegi lihtsuse huvides, et igal mälupulgal on üks partitsioon) ning mis ühendatakse seetõttu kataloogi /mnt/usb1. Kui nüüd ühendada arvutiga mälupulk B, saab see endale vastavalt seadmefailid /dev/sdb ja /dev/sdb1 ning see ühendatakse kataloogi /mnt/usb2. Kasutaja teeb oma operatsioonid nende mälupulkadega ära ning eemaldab nad. Järgmisel päeval aga ühendab kasutaja mälupulgad vastupidises järjekorras, enne B ja siis A. Mis juhtub? Juhtub see, et nüüd ühendatakse mälupulgad nö. "valedesse" kataloogidesse.
Sellise olukorra vältimiseks võtamegi USB mäluseadmete ühendamisel kasutusele mitte konkreetsed seadmefailid, vaid nende mäluseadmete UUID numbrid.
Iga mäluseadme jaoks saab tema UUID numbri teada lihtsa käsuga, öeldes terminaliaknasse näiteks (/dev/sda1 asemele sisestage omale sobiv seadmefail):
blkid /dev/sda1
Saadud väljundist otsime rida UUID="mingi-tähtede-numbrite-jada", mis annab meile vajaliku identifikaatori. Oletame, et meie näidismälupulk A omab UUID numbrit AAAA-1234 ja näidismälupulk B omab UUID numbrit BBBB-4321. Nüüd modifitseerime faili /etc/fstab sobivalt:
/dev/disk/by-uuid/AAAA-1234 /mnt/usb1 vfat defaults,user,noauto 0 0 /dev/disk/by-uuid/BBBB-4321 /mnt/usb2 vfat defaults,user,noauto 0 0
Muudatused piirduvad vaid seadmefailide asemele sobivate sümbolviidete kirjutamisega. Salvestame muudatused (NB: faili /etc/fstab muutmiseks vajate root-kasutaja õiguseid) ning proovime mäluseadmeid ühendada erinevas järjekorras. Kui kõik läks edukalt ja tehtud muudatused on korrektsed, siis peaksid mõlemad näidismälupulgad ühenduma alati õigesse kataloogi, olenemata nende arvuti külge ühendamise järjekorrast.