Ezt a postot nem azért írom hogy segítséget kérjek, mert a problémát megoldottam, egyszerűen közreadom a tapasztalataimat, hátha másnak is hasznos lesz.
Felmerült az a problémám, hogy van több pendrive-om, amik gyárilag vannak megformázva vfat fájlrendszerre, s muszáj is megtartanom vfat fájlrendszerűnek őket, mert például olyan célra kellenek hogy valami mp3 lejátszóra dugjam rá őket, s az onnan játssza le a zenéket, s persze csak a vfat fájlrendszert ismeri a masina — ugyanakkor szeretném e pendrájvokat a számítógépemhez is felmountolni néha. Ennél ugye mi sem egyszerűbb... Igen ám, de nem akkor, ha nem akarok görcsölni azzal hogy kitaláljam, épp miként kell keresgélnem őket a devicék közt! Honnan tudjam, most a pendrive épp /dev/sdb1 vagy /dev/sdc1 vagy valami egészen más?! Igaz, a „jobb helyeken” ezt elintézi nekem automatikusan az automount. Na de én mint mindenki tudja rólam, egy kissé nagyon mazochista vagyok, s gyakran használok olyan geek (mások szerint őskövület, fapados, szivatós, kőkorszaki, stb...) disztrókat, amikben nincs automount. Eszembe jutott, hogy ezen a helyzeten segíteni lehetne azzal, ha az fstab-ba beleírnám ezen egységeket UUID szerint! Némi utánajárással (man, „google a barátom”, stb) ezt meg is oldottam a két 2000 gigás USB HDD egységem esetében, na de ez könnyű volt, mert egyiknél ext2, másiknál ext3 volt a fájlrendszer (illetve nem az volt hanem NTFS gyárilag de átformáztam őket), kaptak is szép UUID értékeket, s ezek alapján ezt meg lehetett oldani. Na de a pendrive-jaim sajnos gyárilag vfat rendszerűek voltak, s mindegyiknek ugyanaz volt az UUID-je: „0000-0001”
Már majdnem tanácsot kértem ezzel kapcsolatban a HUP nevű fórumon (egyesek ismerhetik Olvasóim közül e közösséget) amikor eszembe jutott, hogy hátha megoldom a problémát jómagam is, márpedig mennyivel jobb ha én osztom az észt, mint ha nekem osztják... Megint folytattam hát némi tanulmányokat, s a következőre jutottam: mindenekelőtt kiadtam e parancsot (rootként):
dd if=/dev/sdc1 bs=1 count=16 skip=67 > test
Előbb természetesen csatoltam a pendrájvot valahogyan. Itt a példa szerint az sdc1 eszközön lógott épp. Megjegyzem a módszer valószínűleg működik akkor is, ha nem csatoljuk előbb a pendrájvot.
Ezután a létrejött „test” nevű állományt szerkesztettem hexa editorral:
hexedit test
(a hexedit nincs benne minden disztróban alapból, pld az ubuntuban sem, külön telepíteni kell - rootként vagy sudo-val - az
apt-get install hexedit
paranccsal).
(A hexedit legfontosabb parancsai: F2 -vel kiírja az állományba a változtatásokat, F1 -re súgót azaz „helpet” ad, q-val lépsz ki a helpből, Ctrl-C -vel kilépsz a változtatások mentése nélkül, Ctrl-X -el kilépsz a változtatások mentésével).
A szerkesztés abból áll, hogy az állomány legelső 4 bájtját átírod valami neked tetszőre.
Azután hogy elmentettem az állományt, ezt ki kell írni a pendrájvra a következő paranccsal:
dd if=test bs=1 count=16 seek=67 of=/dev/sdc1
Ha jól csináltál mindent, a pendrive-on korábban fent levő kincset érő adataid nem mennek tönkre. Nekem sikerült.
S máris kész az egész! Illetve az fstab-ba természetesen bele kell venni a megfelelő sort, ami nálam így néz ki:
UUID="005A-5601" /media/PEN32GB2 vfat umask=000 1 0
UUID="0048-5601" /media/PENDRIVE32G vfat umask=000 1 0
(Ez természetesen 2 különböző pendrive csatolása, mindegyikhez 1 sor tartozik.)
Ha azt akarod hogy a gép indulásakor ne csatolódjanak fel automatikusan e pendrájvok, akkor így írd be őket az fstab-ba:
UUID="005A-5601" /media/PEN32GB2 vfat noauto,umask=000 1 0
UUID="0048-5601" /media/PENDRIVE32G vfat noauto,umask=000 1 0
Ez amiatt fontos, mert ha épp nincsenek rádugva a masinára induláskor, akkor némely disztró induláskor képes rém hosszú ideig várni az indulással emiatt. Például az ubuntu is, legalábbis ha az XFCE desktopot használod hozzá.
Azt hogy mit kell beírnod az UUID után az idézőjelek közé, legegyszerűbben úgy tudod meg, hogy miután kiírtad a dd paranccsal a „test” állományt a pendrájvra, kiadod a
blkid
parancsot, s erre ez kilistáz neked mindenféle sorokat, s ezek közt ott lesz az a device amire épp csatolva van a pendrive, és szépen kiírja neked az épp aktuális UUID-t is a sorba, mint nálam pld:
/dev/sdc1: LABEL="PEN32GB2" UUID="005A-5601" TYPE="vfat"
E 2 pendrive FAT32 fájlrendszerű, és itt csak 4 bájt hosszú lehet az UUID. Más fájlrendszereknél másutt kezdődik az UUID és más a hossza:
FAT16: Hossz: 4 bájt, kezdet: 0x27 (decimálisan 39)
FAT32: Hossz: 4 bájt, kezdet: 0x43 (decimálisan 67)
NTFS: Hossz: 8 bájt, kezdet: 0x48 (decimálisan 72)
EXT_2/3/4: Hossz: 16 bájt, kezdet: 0x468 (decimálisan 1128)
LINUX SWAP: Hossz: 16 bájt, kezdet: 0x40c (decimálisan 1036)
REISERFS: Hossz: 16 bájt, kezdet: 0x10054 (decimálisan 65620)