nikos@friedrichs.up.ac.za
Verziótörténet | ||
---|---|---|
Verzió: 0.06 | 2004.03.10 | Átdolgozta: ns |
Hozzáadva a Linux-2.6-ról szóló fejezet. | ||
Verzió: 0.05 | 2003.12.26 | Átdolgozta: ejh |
Technikai átvizsgálás. | ||
Verzió: 0.04 | 2003.12.11 | Átdolgozta: ns |
Verzió: 0.03 | 2003.12.02 | Átdolgozta: ejh |
Technikai átvizsgálás. | ||
Verzió: 0.02 | 2003.10.30 | Átdolgozta: ns |
Változások. |
A digitális kamerákhoz használt flash memória újraformázása veszélyes lehet. Előfordulhat, hogy a kamera nem fogja felismerni. Használja a kamera beépített menüjét a művelethez. |
Fontos szempontok memóriakártya vásárlásához:
Ez attól függ mire akarjuk használni. 128MB népszerű választásnak tűnik.
A memóriakártyákat általában hosszabbító kábellel (2 ) és (nyakba akasztható) kulcstartóval csomagolják. Az utóbbi biztonságos módját nyújtja az eszköz szállításának. Bizonyosodjunk meg róla, hogy a fentiek megvannak. A körülményektől függően szükség lehet még egy hosszabbító kábelre. Laptop és notebook számítógépekhez általában nem szükséges.
A gyári új memóriakártyák általában vfat (msdos) fájlrendszerre vannak formázva, és működnek Linuxon is, de így nem lehet kihasználni az ext2 (vagy más) fájlrendszer stabilitását és sokoldalúságát. Ez nem probléma, helyettesíthető más fájlrendszerekkel, mint később látni fogjuk.
A memóriakártyák ára egy adott méreten belül is jelentősen különbözhet. Jó ötlet utánanézni mekkora a szórás, erre kiválóan megfelel az internet. (Az ár nagyban függ a nyújtott szolgáltatásoktól is - a lektor)
Ezen dokumentum olvasóinak ajánlatos megismerkedni az alábbiakkal: [1]
Az USB támogatás alatt számos digitális fényképezőgép beállításait elérhetjük.
Ajánlatos utánanézni a 4 pontban felsorolt írásokban, ha fontolóra vesszük a rendszermag (újra)fordítását.
A /proc fájlrendszer ablakként szolgál, melyen keresztül láthatjuk egy linuxos rendszer működését. A dokumentum szempontjából legfontosabb objektumok a következő könyvtárak: /proc/bus/usb/ és /proc/scsi/. Ezek segítségével fogjuk ellenőrizni, hogy a rendszermag céljainknak megfelelően, helyesen van-e beállítva (7.2 ).
A memóriakártya egy USB adattároló eszköznek tekinthető, ami a rendszer felé egy cserélhető SCSI lemez (sd). Az SCSI lemezes eszközök a /dev (eszközök) könyvtárban /dev/sda, /dev/sdb, ... néven érhetők el. Ha több különböző egységünk van, ezek sorban a /dev/sda, /dev/sdb stb. eszközökhöz lesznek rendelve. Ha például egy memóriakártya és egy digitális fényképezőgép van csatlakoztatva, akkor az egyik kapja a /dev/sda-t, a másik pedig a /dev/sdb-t. A tesztek azt mutatják, hogy az első észlelt eszköz lesz sda és a /proc/scsi/usb-storage-0 könyvtár fogja képviselni. Azt viszont nem lehet tudni, hogy mi történik, ha bootolás közben mindkét eszköz jelen van. A /proc/partitions fájlban meg lehet nézni a partíciók listáját, benne sda, sda1, sdb bejegyzésekkel. A 2.6-os rendszermag sorozatban ezt a problémát nagyon elegánsan oldják meg (12 ).
A továbbiakban feltételezzük, hogy csupán egyetlen memóriakártya van, és az a /dev/sda-hoz van rendelve.
A legtöbb disztribúcióban ezek a pontok megvannak. Az alábbi paranccsal leellenőrizhető, hogy nálunk is léteznek-e: ls /dev/sda*. Ha nincsenek, létrehozhatjuk őket az alábbiakkal (root felhasználóként, ezt jelzi a kettős kereszt).
# mknod /dev/sda b 8 0 # mknod /dev/sda1 b 8 1 # mknod /dev/sda2 b 8 2 |
stb, egészen /dev/sda15-ig, ha szükséges. Az eszköz egy egészként a /dev/sda-hoz van rendelve, és a /dev/sdax (x = 1 ... 15) jelentik a különböző partíciókat. Később leírjuk hogyan lehet különböző fájlrendszerekhez különböző partíciókat készíteni (lásd. 8 és 9 ). Ha a memóriakártyát csak egyetlen partícióval (fájlrendszerrel) akarjuk használni, a /dev/sda1 elegendő lesz.
Ezt a dinamikusan generált fájlrendszert a /proc/bus/usb/ könyvtárba lehet felcsatolni, ezért elengedhetetlen, hogy ez a könyvtár létezzen. Mikor fel van csatolva, több mindent lehet látni a /proc/bus/usb/ és a /proc/scsi/ könyvtárakban (7.3 ). A /proc/bus/usb/devices fájlból megtudhatjuk melyik USB eszköz van felcsatlakoztatva ( less /proc/bus/usb/devices). Kis erőfeszítést igényel, hogy megértsük a képernyőn megjelenő szöveget, de azért nem nehéz. A memóriakártya mint Mass Storage Device van jelölve.
Az ext2 fájlrendszer még mindig a legelterjedtebb Linux rendszereken. Igen sokoldalú és kifinomult, felvértezve engedélyekkel (olvasás-írás-végrehajtás, kinek van engedélye, hogy csináljon valamit), tulajdonlással (felhasználó, csoport, mások), időbélyeggel (mikor volt utoljára módosítva) stb. Ezenfelül vannak segédeszközei egy ext2-vel ellátott eszköz komplett karbantartásához (11 ). Ha egy flash memória eszközt kizárólag linuxos gépeken használunk érdemes azt ext2-re formázni (lásd. 8 ).
A vfat engedélyezésével a rendszermagban, lehetővé válik Dos/Windows alatt készített fájlrendszerek felcsatolása. A legtöbb memóriakártya Windowson való használathoz van formázva, ezért tekinthetjük vfat-formázottnak. A vfat fájlrendszer kevésbé kifinomult mint az ext2, ezért sokkal gazdaságosabb a memóriát illetően. A jogosultságok másként vannak, mint ext2-ben, ami azt eredményezi, ha egy ext2 fájlt vfat-re mentünk, az újra megjelenik más engedélyekkel. Ennek ellenére, ha a memóriakártyát linuxos és windowsos gépek közötti adatcserére használjuk, a legjobb amit tehetünk, hogy meghagyjuk vfat formában. A kompromisszumot az jelenti, ha kétfelé particionáljuk a memóriakártyát: egy vfat és egy ext2 fájlrendszerrel. Legalábbis a linuxos gépek képesek kezelni mindkettőt. Bővebben: 9 .
A dokumentumban felhasznált parancsok rövid listája:
Mielőtt hozzákezdenénk, távolítsuk el a hasonló eszközöket az USB buszról, azért, hogy biztosan azt az eszközt lássuk és írjuk, amelyiket szeretnénk. |
none on /proc/bus/usb type usbfs (rw) |
akkor a 7.4 pontnál lehet folytatni, azonban érdemes lehet átnézni a közbenső részt is. Akkor sincs baj, ha a teszt sikertelen.
Néhány dolgot le lehet ellenőrizni a /proc könyvtárban, hogy meggyőződjünk arról, a rendszermag tartalmazza a beállításokat, vagy a megfelelő modulok betöltődtek. Először nézzük meg, hogy a /proc/bus/usb könyvtár létezik-e. Ha igen, a rendszermagban van USB alrendszer támogatás. Ha nem, akkor a rendszermagot újra kell fordítani megfelelő USB támogatással (lásd. 5.2.3 ), vagy a frissíteni kell azt. Másodszor a /proc/scsi könyvtár meglétét kell ellenőrizni. Ha ott van, minden rendben, ellenkező esetben a SCSI támogatást bele kell fordítani a rendszermagba (lásd. 5.2.1 ).
A /proc-nak rendelkeznie kell az USB fájlrendszer csatolási pontjával. Ez a pont a /proc/bus/usb. Ha megvan, a rendszermag helyesen van beállítva.
# mount -t usbfs none /proc/bus/usb |
Régebbi rendszermag-verziókban a fenti mount parancs usbfs paraméterét ki kell cserélni usbdevfs-re. 2.4.20-as Linuxokban mindkét változat működik. |
Ha minden rendben, végezzünk további teszteket. Első a gyors ellenőrzés (7.1 ). Az alapos ellenőrzéshez adjuk ki a # ls -l /proc/bus/usb parancsot, ami valami hasonló kimenetet fog adni:
dr-xr-xr-x 1 root root 0 Sep 19 14:21 001 dr-xr-xr-x 1 root root 0 Sep 19 14:21 002 -r--r--r-- 1 root root 0 Sep 19 22:30 devices -r--r--r-- 1 root root 0 Sep 19 22:30 drivers |
A /proc/scsi/usb-storage-0/ könyvtárnak most már léteznie kell, és az egyik benne levő fájl az alábbiakat tartalmazza. Az én rendszeremben a $ less /proc/scsi/usb-storage-0/1 parancs a következőt írja ki:
Host scsi1: usb-storage Vendor: Generic Product: Mass Storage Device Serial Number: None Protocol: Transparent SCSI Transport: Bulk GUID: 0ed166800000000000000000 Attached: Yes/No |
Ha a flash meghajtó csatlakoztatva van, az utolsó sorban a "Yes" bejegyzés olvasható, egyébként pedig a "No".
# mount -t vfat /dev/sda1 /mnt/memstick |
Ha minden simán ment, már láthatjuk az eszközt: # ls /mnt/memstick.
# mkdir /mnt/memstick/apollo # cp /home/myname/myfavourite_file /mnt/memstick/apollo/. |
Listázzunk újra (# ls -l /mnt/memstick) és figyeljük meg az engedélyeket.
Csatoljuk le az eszközt (# umount /dev/sda1) és csatoljuk fel újra ahogy előzőleg is tettük. Listázzunk megint és nézzük meg az engedélyeket. Valószínűleg a szöveges fájlnak van x-jogosultsága, vagyis futtathatóvá vált. Ez teljesen szokványos a vfat fájlrendszerben. Ha elégedett vagy ezzel, csatold le az eszközt, és menj a 10 pontra.
A /dev/sda könyvtárba felcsatolt eszköz újra lesz formázva és az összes adat törlődik róla. Mielőtt hozzákezdenénk, távolítsuk el a hasonló eszközöket az USB buszról, azért, hogy biztosan azzal az eszközzel dolgozunk, amelyikkel szeretnénk. |
Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) |
# fdisk /dev/sda Command (m for help):d {enter} Selected partition 1 Command (m for help):n {enter} Command action e extended p primary partition (1-4) p {enter} Partition number (1-4):1 {enter} First cylinder (1-888, default 1): {üss enter-t} Using default value 1 Last cylinder ... (1-888, default 888): {üss enter-t} Using default value 888 |
Most ellenőrizhetjük a partíciós tábla kiíratásával, hogy minden rendben ment-e.
Command (m for help): p Disk /dev/sda: 131 MB, 131072000 bytes 9 heads, 32 sectors/track, 888 cylinders Units = cylinders of 288 * 512 = 147456 bytes Device Boot Start End Blocks Id System /dev/sda1 1 888 127856 83 Linux |
Command (m for help): a [toggle a bootable flag] Command (m for help): t [change a partition's system id] |
Ha (vagy amikor) a partíciós tábla helyes, az eljárás befejezéséhez:
Command (m for help): w [write table to disk and exit] |
# mke2fs /dev/sda1 |
A memóriakártya LED-je ezalatt folyamatosan villog. Mikor abbahagyja, a program végzett.
A formázás sikerének ellenőrzéséhez ismételjük meg a 7.3 és a 7.4 fejezetben leírtakat két kis eltéréssel. Az első eltérés az, hogy a mount parancs a következő:
# mount -t ext2 /dev/sda1 /mnt/memstick |
A második különbség, hogy a szöveges fájl engedélyei ezentúl nem módosulnak.
A /dev/sda könyvtárba felcsatolt eszköz újra lesz formázva és az összes adat törlődik róla. Mielőtt hozzákezdenénk, távolítsuk el a hasonló eszközöket az USB buszról, azért, hogy biztosan azzal az eszközzel dolgozzunk, amelyikkel szeretnénk. |
Ebben a részben bemutatjuk, hogyan hozzunk létre két partíciót a memóriakártyán: az egyik felét vfat-nek, a másikat pedig az ext2-nek. Így sokoldalúbb lesz az eszköz, de kicsit megosztott is. Az eljárás nem lesz olyan részletes, mint a 8.1 fejezetben. Az ott leírtak lesznek ismételve, valamint mindkét fájlrendszer hexadecimális kódja közvetlenül lesz beírva ("t" bejegyzést követő sorok: Win95 = b; Linux = 83). Ha a partíció csak Linuxnak lesz, - szükségtelen mondani - a Linux az alapértelmezés. Továbbá jegyezzük meg, hogy a vfat partíciót hozzuk létre elsőként - a Windows miatt kell így tennünk.
# fdisk /dev/sda Command (m for help): d Selected partition 1 Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-888, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-888, default 888):444 Command (m for help): t Selected partition 1 Hex code (type L to list codes): b Changed system type of partition 1 to b (Win95 FAT32) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (445-888, default 445): Using default value 445 Last cylinder or +size or +sizeM or +sizeK (445-888, default 888): Using default value 888 Command (m for help): t Partition number (1-4): 2 Hex code (type L to list codes): 83 Command (m for help): p Disk /dev/sda: 131 MB, 131072000 bytes 9 heads, 32 sectors/track, 888 cylinders Units = cylinders of 288 * 512 = 147456 bytes Device Boot Start End Blocks Id System /dev/sda1 1 444 63920 b Win95 FAT32 /dev/sda2 445 888 63936 83 Linux Command (m for help):w |
Figyeljük meg, hogy a tábla írása előtt a második partíciót is létrehoztuk. |
A döntés, hogy pontosan a közepén választottuk ketté az egységet (128MB-os memória kártya 1--444; 445--888) teljesen önkényes volt. Bármely más elgondolás ugyanolyan jó.
A "delete" részt annyiszor kell ismételni, ahány partíció van az egységen.
Ez a lépés a 8.2 fejezet ismétlése. Az első lépés létrehozza a DOS-os vfat, a második pedig a linuxos ext2 partíciót.
# mkdosfs -F 32 /dev/sda1 # mke2fs /dev/sda2 |
Egyszerűen végezzük el a 7.4 és a 8.3 fejezetben leírt teszteket külön az egyes partíciókra. A csatolási parancsok:
# mount -t vfat /dev/sda1 /mnt/fatstick # mount -t ext2 /dev/sda2 /mnt/memstick |
Ezzel felcsatoltuk az eszköz mindkét partícióját.
# fdisk /dev/sda Choose p; check partition table If satisfied, choose w # less /proc/partitions |
Az alábbi eljárás az összetettebb esetre vonatkozik, melyben a memóriakártyát kétfelé particionáltuk (9 ). Egyetlen ext2 partíció esetén a dolog még egyszerűbb: a vfat-ra vonatkozó sorokat elhagyjuk és az sda2-t kicseréljük sda1-re.
Feltételezzük, hogy a /mnt/memstick és /mnt/fatstick csatolási pontok rendelkezésre állnak. Nem kötelező ezeket a neveket használni, és nem kell az /mnt könyvtárba rakni őket.
Az emlékezést megkönnyítendő, készítsük el a következő szimbolikus hivatkozásokat:
# ln -s /dev/sda1 /dev/fatflash # ln -s /dev/sda2 /dev/flash |
A gördülékenyebb és könnyebb felcsatolásért adjuk a következő sorokat az /etc/fstab fájlhoz: (lásd. a megjegyzéseket a 7.3 végén)
none /proc/bus/usb usbfs defaults 0 0 /dev/flash /mnt/memstick ext2,vfat rw,user,noauto 0 0 /dev/fatflash /mnt/fatstick vfat rw,user,noauto 0 0 |
A középső sor engedélyezi a felcsatolást ext2 és vfat esetben is. Az utolsó két sor lehetővé teszi bármely felhasználó számára az eszköz felcsatolását a következő parancsokkal:
$ mount /dev/flash [ext2-nek vagy vfat-nek] $ mount /dev/fatflash [vfat-nek] |
Lehetséges mindkét partíció egyidejű felcsatolása is. Lásd. 9 fejezet.
Egyetlen ext2 partíció esetén nem tűnik lehetségesnek, hogy bármely (nem root) felhasználó írható-olvasható módban csatolja fel az eszközt. A megoldáshoz készítsünk egy könyvtárat a memóriakártyán, amit a felhasználó birtokol, teljes hozzáféréssel. Root felhasználóként adjuk ki a következő parancsokat:
# mount /dev/flash # mkdir -m 777 /mnt/memstick/superdir # chown charles:charles /mnt/memstick/superdir |
Ha az eszköz vfat formátumú, ez a lépés nem szükséges.
Végezetül, íme egy kis szkript, amit a saját (ext2) flash meghajtóm fel- és lecsatolásához használok:
#!/bin/bash EXCODE="keepit" green='\033[0;32m' yellow='\033[0;33m' ## ___________________________ ## Function to echo in colours echo_in_color () { message=$2 message1=$4 color=$1 color1=$3 echo -e -n $color echo -n $message echo -e -n $color1 " " echo -n $message1 " " tput sgr0 return } ## ___________________________ clear mount /dev/flash echo_in_color $green "Flash drive mounted" sleep 2 while [ $EXCODE != "flexit" ] do clear echo_in_color $yellow "Enter [flexit] to unmount and exit:" read EXCODE done umount /dev/flash exit |
Egy FVWM menüből hívom meg az Exec exec xterm -geometry 43x2+1250+0 -e /home/nikos/bin/flashdrive paranccsal, ami valamelyik sarokban megjelenő kis x-term ablakban futtatja. A horizontális elhelyezést (1250) a képernyő felbontásához kell beállítani.
Filesystem volume name: <none> Last mounted on: <not available> Filesystem UUID: c42a6963-5e6a-4cd2-b7d7-c8f09dca6c52 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: dir_index filetype sparse_super Default mount options: (none) Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 32000 Block count: 127856 Reserved block count: 6392 Free blocks: 116456 Free inodes: 31922 First block: 1 Block size: 1024 Fragment size: 1024 Blocks per group: 8192 Fragments per group: 8192 Inodes per group: 2000 Inode blocks per group: 250 Filesystem created: Sat Sep 20 12:43:00 2003 Last mount time: Tue Oct 28 14:13:03 2003 Last write time: Tue Oct 28 14:28:27 2003 Mount count: 13 Maximum mount count: 35 Last checked: Sat Oct 18 11:28:26 2003 Check interval: 15552000 (6 months) Next check after: Thu Apr 15 11:28:26 2004 Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 128 Default directory hash: tea Directory Hash Seed: 118bee0a-efa5-4771-967e-41a0badd0355 |
Néhány fontos szempontot szükségesnek tartunk kiemelni:
Vfat fájlrendszer esetén a dump program nem tűnik jónak. A # dumpe2fs -f /dev/sda1 parancs nem használható vfat fájlrendszeren. Létezik egy dosfsck nevű program (csupán alfa verzió), de kockázatos nem saját magunk által formázott eszközön futtatni. |
A rendszermag konfigurációs beállításai nagyrészt megegyeznek a 5.2 fejezetben leírtakkal. A beállító menüt azonban (# make menuconfig) szisztematikusan átszervezték.
A saját érdekedben ajánlatos elolvasni az Migrating to Linux Kernel 2.6 (Áttérés a 2.6-os Linux rendszermagra) leírást, de nem szükséges olyan lépéseket követni, amelyeket nem tudsz.
A 6.2 fejezetben tárgyaltuk az egy időben felcsatolt USB eszközök esetét. A nehézséget az okozza, hogy a felhasználó számára nehéz az eszközök megkülönböztetése. Előrehaladás történt ez ügyben a Linux Hotplug Project -ben (Linux Gyorscsere Projekt ) (keress rá a hotplug-ra), és a 2.6-os rendszermag-családban már meg is valósították, lehetővé téve a probléma hatékony kezelését. Ehhez szükség van néhány dologra:
Az udev lehetőséget biztosít a memóriakártyák felismerésére, néhány beépített tulajdonság alapján. Ez a vendor azonosító alapján működik, amit a systool -vb scsi | grep vendor paranccsal tudhatunk meg, ha az eszköz csatlakoztatva van. Egy listát kapunk a csatlakoztatott SCSI eszközökről (emlékezzünk, hogy a memóriakártya a rendszer felé egy SCSI eszköz; 6.2 fejezet). Feltételezzük, hogy egyidejűleg két memóriakártya van felcsatolva. Ekkor két vendor azonosítót találunk. Név szerint: "UFD" és "STORAGE". Adjuk a következő sorokat az /etc/udev/udev.rules fájlhoz (akár az elejére is lehet):
## Flash Memory 1 BUS="scsi", SYSFS_vendor="UFD*", NAME="namib%n" ## Flash Memory 2 BUS="scsi", SYSFS_vendor="STORAGE*", NAME="kalahari%n" |
A vendor azonosítóban lehetnek kiegészítő szóközök, ezért kellettek a csillagok. Ne hagyjuk le őket. Válasszuk el, majd ismét csatlakoztassuk a memóriakártyákat, és adjuk ki a ls /udev parancsot. A személytelen sda, sda1 stb. helyett kalahari, kalahari1, namib és namib1 van kiírva. Ezzel elneveztük az eszközt a "vendor" információ alapján. Mivel most már fel tudjuk ismerni az eszközt, nem probléma többé, hogy mihez van rendelve. Már csak annyi dolgunk van, létrehozzuk a szükséges csatolási pontokat, például /mnt/namib és kalahari, valamint bejegyezzük őket az /etc/fstab fájlba:
/udev/namib1 /mnt/namib vfat,ext2 user,noauto,rw 0 0 /udev/kalahari1 /mnt/kalahari vfat,ext2 user,noauto,rw 0 0 |
Ez jó móka... És jusson eszünkbe, hogy vannak még más sivatagok is a Földön.
Bizonyos termékek vagy márkanevek megnevezését nem tekintjük hozzájárulásnak.
A magyar fordítást Zalányi Balázs Andor készítette (2004.06.26). A lektorálást Daczi László végezte el (2004.06.26). A dokumentum legfrissebb változata megtalálható a Magyar Linux Dokumentációs Projekt honlapján. A dokumentum fordítása a Szegedi Tudományegyetem nyílt forráskódú szoftverfejlesztés speciálkollégiumának segítségével valósult meg.
[1] | Ezen dokumentum erősen támaszkodik a csillaggal jelölt írásokra. |