FAQ BETRIEB DES IMAGE-TANKS UNTER LINUX 1. Kann der IT unter Linux eingesetzt werden ? 2. Welches Protokoll verwendet der ImageTank ? 3. Wie komme ich an die modifizierte Version von usb-storage ? 4. BACKE BACKE KUCHEN .... Neukompilierung des Kernels. 5. Wie komme ich jetzt an die Daten ran ? 1. Kann der IT unter Linux eingesetzt werden ? Ja, aber ... Dazu muss das transport.c, zustaendig fuer das Modul usb-storage leicht modifiziert werden. Leider hat der USBIDE-Chip von ScanLogic einen Bug. da er die USB-Parameter beim Anmelden an das USB-System nicht korrekt bzw vollstaendig ausfuellt. Windows ist's egal, Linux geht davon aber aus .... 2. Welches Protokoll verwendet der ImageTank ? Der IT setzt den USBIDE Chip von ScanLogic ein, welcher ein IDE (zB Harddisk) transparent als USB-STORAGE-DEVICE am USB-Bus anmeldet. Dies erfordert und Win9x Treiber, sollte unter Win2000 direkt verwendbar sein. Ebenso bringt Linux das modul 'usb-storage' (2.4.x und 2.2.x mit USB-Backport) mit. Allerdings muessen auch die Treiber (module) scsi_mod, sd_mod geladen werden, um den IT als SCSI-Platte an das System anmelden zu koennen. scsi_mod (SCSI generic) sd_mod (SCSI disk) usb-storage (USB-Drive auf SCSI-Drive mappen) mittels 'modprob' sollten diese module problemlos geladen werden koennen, insofern sie nicht bereits statisch in den Kernel eingebunden sind. Besser als mit der Hand erledigt das der USB-Manager 'usbmgr' der unter http://freshmeat.net/redir/usbmgr/11000/url_homepage/ bezogen werden kann. Das fertige RPM gibt es auch unter http://freshmeat.net/redir/usbmgr/11000/url_rpm/usbmgr-0.4.8-1.i386.rpm Wahrscheinlich muessen noch die Zeilen im /etc/usbmgr/usbmgr.conf nachge- tragen werden: # Image Tank vendor 0x4ce product 0x2 module scsi_mod , sd_mod , usb-storage # E-10 [Olympus] vendor 0x7b4 product 0x102 module scsi_mod , sd_mod , usb-storage Die E-10 habe ich bereits vor einem Jahr eintragen lassen und sollte in den lezteren Versionen bereits enthalten sein. 3. WIE KOMME ICH AN DIE MODIFIZIERTE VERSION VON USB-STORAGE Entweder man verwendet meine letzte Version des Linux-Kernels (Version 2.4.9) oder baeckt sich seinen Kernel selbst. Variante 'Gruener Punkt' Wiederverwertung: Einloggen als root # cd / # tar xvzf /it-kernel-2.4.9.tgz # vi /etc/lilo.conf (fuegen sie eine Section wie diese hinzu): image=/boot/vmlinuz-2.4.9 label=2.4.9 alias=249 read-only root=/dev/hdaX <--- X ist die Nummer des Rootfilesystems # /sbin/lilo # init 6 (jetzt sollten sie beim booten einen neuen Menu-Vorschlag 249 bekommen, dieser bootet den neuen Kernel) !! ACHTUNG. Grundsaetzlich sollte dieser Kernel auf allen RedHat 7.x !! mit IDE funktionieren, da mir die Testmoeglichkeit fehlt, kann ich !! dafuer natuerlich keine Garantie uebernehmen. !! Fuer SUSE oder andere Linux-Distributionen ist wahrscheinlich das !! Modifizieren der Kernel-Sourcem und Neu-Kompilierung noetig. 4. BACKE BACKE KUCHEN .... NEUKOMPILIERUNG DES KERNELS Man besorge sich von http://www.kernel.org/pub/linux/kernel/v2.4/ zB 'linux-2.4.9.tar.bz2', packe diesen aus und konfiguriere ihn wie gehabt. Der Kernelbaum liegt gewoehnlich im /usr/src/linux. Dann editiere man die Datei 'drivers/usb/storage/transport.c'. ------------------------ drivers/usb/storage/transport.c ---------------------- + if (bcs.Tag != bcb.Tag) { + US_DEBUGP("Warning bcs.Tag (%d) != bcb.Tag (%d)\n", bcs.Tag, bcb.Tag); + } if (bcs.Signature != cpu_to_le32(US_BULK_CS_SIGN) || + /* bcs.Tag != bcb.Tag || */ bcs.Status > US_BULK_STAT_PHASE || partial != 13) { US_DEBUGP("Bulk logical error\n"); return USB_STOR_TRANSPORT_ERROR; } ------------------------ drivers/usb/storage/transport.c ---------------------- Sie finden diesen Block ca in Zeile 1180 und die Zeilen mit dem + muessen eingefuegt bzw modifiziert werden. Wirklich wichtig ist nur das Ausdokumentieren von 'bcs.Tag != bcb.Tag ||' der Rest dient zum Ausgeben dieses Bugs auf der Konsole. Das wars auch schon mit den Modifikationen. Ein make clean dep bzImage modules modules_install sollte den Rest machen, ein installiertes Development-System vorausgesetzt. Der Rest entspricht dem vorhergehenden Punkt. Das Selbermachen des Kernels werden wohl alle waehlen, welche zusaetzliche SCSI oder andere Komponenten haben oder den Kernel nicht derart modular fahren wollen, wie ich dies mache. Kleiner Hinweis: Zusaetzliche SCSI-Kontroller sind auch mit den vorgefertigten Treibern kein Problem, wenn man weiss, wie man mit 'mkinitrd' (Make Init Ramdisk) umzugehen hat, bzw /etc/modules.conf In Zukunft werde ich versuchen diese Aenderung in den Standard-Kernel einfliessen zu lassen, damit ab 2.4.10 (oder 2.4.11) dies nicht mehr noetig sein, sollte, sondern das usb-storage den IT und seine falschen Parameter richtig handelt. MEIN IT MELDET SICH NICHT Das Problem hatte ich auch. Leider wuerde mir meine Frage nach unterschiedlichen Versionen des IT nicht beantwortet, so dass ich dazu zZ nichts Genaueres sagen kann. Aber ich habe festgestellt, dass es bei manchen ITs reicht das USB-Kabel am IT abzuziehen, vielleicht noch den Strom ein und auszuschalten. Bei meinem Testgeraet war dies so. Bei meinem jetztigen IT musste ich entweder neu booten (Windows laesst gruessen) bzw den USB-Stecker am PC ziehen. Auf jeden Fall sollte sich der IT nach dem laden der 3 module (2x SCSI 1x usb-storage) mittels einen # cat /proc/scsi/scsi als Platte ausweisen. Dann kann man ihn ganz normal als SCSI-Platte ansprechen, partitionieren, formatieren ... usw. 5. WIE KOMME ICH JETZT AN DIE DATEN RAN Um die Partition(en) zu mounten legen sie einen Mountpoint an. Ein mkdir -p /mnt/imagetank mount -t vfat /dev/sda1 /mnt/imagetank (auch msdos statt vfat is moeglich) bindet die 1.Partition des IT unter /mnt/imagetank in den Filebaum ein. Sollte sie bereits eine SCSI-Platte (sda) im SCSI-System haben, wird sich der IT wahrscheinlich als sdb meldet. mount -t vfat /dev/sdb3 /mnt/imagetank (b=2.Platte 3.Partionen dieser Platte) bind die 3.Partition des IT unter /mnt/imagetank in den Filebaum ein. Bei Fragen stehe ich gerne (ab Okt 2001) via mailto:imagetank@richie.co.at zur Verfuegung. /fozzy C. Dressel