Gentoo Logo

Avertisment : Acest document nu este valid şi nu mai este întreţinut.


Ghid USB pentru Gentoo Linux

Conţinut:

1.  Introducere

Ce înseamnă USB?

USB este abrevierea pentru Universal Serial Bus (Magistrală Serială Universală) şi este în esenţă o interfaţă externă standard care oferă posibilitatea comunicării între computer şi diverse alte periferice. Unele din cele mai folosite dispozitive în mod obişnuit sunt tastaturile, dispozitivele mouse, dispozitivele de stocare pen-drive, camerele digitale, unităţile CD externe & inscriptoarele DVD, imprimante etc.

În acest moment sunt două versiuni ale standardului USB în uz, USB 1.1 şi USB 2.0. Cum USB a păstrat întotdeauna compatibilitatea "în urmă" cu versiunile lui anterioare, USB 2.0 păstrează compatibilitatea cu USB 1.1. Ultimele dispozitive USB sunt de obicei compatibile USB 2.0. USB 2.0 suportă a viteză maximă de transmitere a datelor de 480 Mbps sau 60 MBps şi aceasta este diferenţa majoră dintre cele două standarde. Un alt avantaj al folosirii USB este că toate dispozitivele sunt hot-pluggable, ceea ce înseamnă că nu trebuie să reporniţi sistemul pentru a putea folosi aceste dispozitive.

O Perspectivă Tehnică

Înainte de a ajunge la opţiunile de configurare exacte din kernel, ar fi potrivit să privim un pic mai în detaliu USB. Dacă vă grăbiţi sau doriţi să săriţi peste această secţiune, treceţi la Configurarea Kernel-ului.

Un sistem USB are un dispozitiv controller gazdă, hub-uri, un hub rădăcină printre altele şi poate suporta până la 127 dispozitive USB cu tot cu hub-uri. Controlerul gazdă nu este altceva decât interfaţa hardware între dispozitivul USB şi sistemul de operare. Există câteva controlere HCI (Host Controller Interface - Interfaţă controler gazdă) în folosinţă astăzi, anume OHCI (Open HCI) de la Compaq, UHCI (Universal HCI) şi EHCI (Enhanced HCI), ambele de la Intel. OHCI/UHCI sunt cele două interfeţe standard USB 1.1 din industrie în timp ce EHCI este pentru USB 2.0.

Producătorul hardware oferă o interfaţă pentru programator ce permite sistemului să interacţioneze cu hardware-ul şi aceasta se numeşte HCD sau Dispozitiv Controler Gazdă. Tocmai prin acest HCD interacţionează dispozitivele cu aplicaţiile din sistem. Următoarea diagramă ar trebui să facă lucrurile mai uşor de înţeles.

Cod 1.1: Arhitectura Generală USB

(Software-ul constă şi din alte componente cum ar fi driver-ele
dispozitivelor, dar de dragul simplităţii, acestea nu sunt prezentate)

    + ----  Hardware  ----   + ----  Software  ---- +
    |                        |                      |
    | [USB Dev] -+-> {EHCI} -+--->  ( EHCD )        |
    |            |           |                      |  Utilizator
    |            `-> {UHCI} -+--->  ( UHCD )        |
    |                        |                      |
    + ----  Hardware  ----   + ----  Software  ---- +

Un dispozitiv USB poate folosi ori un driver general sau unul deja prezent în sistem şi acest lucru se bazează pe conceptul de clasă de dispozitive. Aceasta înseamnă că dacă un dispozitiv aparţine unei oarecare clase, atunci alte dispozitive aparţinând aceleiaşi clase pot funcţiona folosind acelaşi driver dispozitiv. Unele din aceste clase sunt clasa USB HID (Human Interface Devices - Dispozitivele Interfaţă Umană), care acoperă dispozitivele de intrare cum sunt tastaturile şi dispozitivele mouse, clasa de dispozitive USB Mass Storage, care acoperă dispozitive cum sunt unităţile stocare pen-drive, camerele digitale, dispozitive de redare audio etc şi clasa USB CDC (Communication Devices Class - Clasa Dispozitivelor de Comunicaţie), care, în esenţă, acoperă dispozitivele modem USB şi dispozitivele similare.

Ce se află în maşina dvs.?

Este foarte simplu să aflaţi dacă maşina dvs. are sau nu suport USB 2.0. Vom folosi comanda lspci în acest scop.

Notă: Comanda lspci este parte a pachetului sys-apps/pciutils. Dacă nu aveţi acest pachet instalat, instalaţi-l cu emerge pciutils. Luaţi în considerare că trebuie să aveţi drepturi root cât timp rulaţi comanda lspci.

Cod 1.2: Diverse rezultate ale comenzii lspci

(Într-un sistem ce îndeplineşte doar standardul USB 1.1, reţineţi doar UHCI)

# lspci -v | grep USB
0000:00:04.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB (rev 01) (prog-if 00 [UHCI])

(Într-un sistem ce îndeplineşte standardul USB 2.0, reţineţi EHCI şi UHCI)

00:1d.0 USB Controller: Intel Corp. 82801DB USB (Hub #1) (rev 01) (prog-if 00 [UHCI])
00:1d.1 USB Controller: Intel Corp. 82801DB USB (Hub #2) (rev 01) (prog-if 00 [UHCI])
00:1d.2 USB Controller: Intel Corp. 82801DB USB (Hub #3) (rev 01) (prog-if 00 [UHCI])
00:1d.7 USB Controller: Intel Corp. 82801DB USB EHCI Controller (rev 01) (prog-if 20 [EHCI])

Deci, folosind comanda lspci, putem afla dacă sistemul suportă USB 2.0. Este un lucru folositor, pentru că vom activa opţiunile corespunzătoare în kernel.

2.  Configurarea Kernel-ului

Procurarea unui kernel

Notă: Începând cu versiunea 2005.0, Gentoo Linux foloseşte arborele 2.6 drept kernel implicit. Doar dacă specificaţi folosirea profilului 2.4, gentoo-sources va fi un kernel generaţia 2.6 pe cele mai multe arhitecturi. Verificaţi versiunea kernel-ului şi apoi procedaţi cu o configurare corespunzătoare.

În primul rând instalaţi sursele kernel-ului ales de dvs. Aici vom folosi gentoo-sources Pentru mai multe informaţii referitoare la diferite surse disponibile în arborele Portage, verificaţi Ghidul pentru Kernel în Gentoo Linux.

Cod 2.1: Instalarea surselor kernel-ului

#  emerge gentoo-sources

Acum, să mergem mai departe cu sarcina configurării kernel-ului.

Cod 2.2: Înaintând către sursă

#  cd /usr/src/linux
#  make menuconfig

Notă: Exemplul de mai sus presupune că link-ul simbolic /usr/src/linux indică sursele kernel-ului pe care doriţi să le folosiţi. Asiguraţi-vă de acest lucru înainte de a proceda.

Opţiuni de configurare pentru un kernel 2.6.x

Acum ne vom uita la anumite opţiuni pe care va trebui să le activăm în kernel-ul 2.6, pentru a asigura un suport corespunzător pentru dispozitivele noastre. Dacă folosiţi un kernel 2.4, urmaţi Opţiuni de configurare pentru un kernel 2.4.x .

Notă: Exemplele din acest document vor prezenta opţiuni de configurare pentru un suport USB de bază, care este necesar în mod obişnuit, de exemplu un dispozitiv de stocare USB (cele mai multe camere şi dispozitive pendrive). Dacă aveţi un dispozitiv USB specific ce trebuie configurat, consultaţi manualul dispozitivului dvs. sau căutaţi online pentru a afla dacă dispozitivul dvs. are suport construit în kernel sau diverse alte driver-e ce pot fi folosite. Luaţi aminte că pentru uşurinţă, toate exemplele au diversele opţiuni compilate în kernel. Dacă doriţi să aveţi un kernel modular, asiguraţi-vă că vă notaţi diversele module şi modificaţi fişierele dvs. de configurare corespunzător.

Cod 2.3: opţiuni de compilare pentru kernel-urile 2.6

Device Drivers  --->
  SCSI device support  --->

(Cu toate că SCSI va fi activat automat când selectăm USB Mass Storage,
va trebui să activăm opţiunea disk support.)
---   SCSI support type (disk, tape, CD-ROM)
<*>   SCSI disk support

(Apoi vă întoarceţi la pasul anterior şi mergeţi la USB support)
USB support  --->

(Acesta este hub-ul rădăcină şi este necesar pentru suport USB.
Dacă doriţi să-l compilaţi ca modul, va avea numele usbcore.)
<*> Support for Host-side USB

(Activaţi această opţiune pentru a vedea dispozitivele dvs. USB în /proc/bus/usb.
Opţiunea este recomandată.)
 [*]   USB device filesystem

(Selectaţi cel puţin unul din aceste controlere HCD.
Dacă sunteţi nesiguri, alegerea tuturor este perfectă.)
--- USB Host Controller Drivers
<*> EHCI HCD (USB 2.0) support
< > OHCI HCD support
<*> UHCI HCD (most Intel and VIA) support

(Mergând un pic mai jos, ajungem la opţiunile CDC şi mass storage.)
< > USB Modem (CDC ACM) support
<*> USB Printer support
<*> USB Mass Storage support
 [*]   USB Mass Storage Write-Protected Media Detection (EXPERIMENTAL)

(Apoi opţiunea HID. Trebuie să selectaţi suportul pentru dispozitive de intrare HID, dacă aveţi
un dispozitiv USB ca tastatura, mouse, joystick sau alt dispozitiv de intrare USB)
--- USB Input Devices
<*> USB Human Interface Device (full HID) support
 [*]   HID input layer support

(Dacă aveţi o placă de reţea USB cum este RTL8150, veţi avea nevoie de această opţiune)
USB Network Adapters  --->
    <*> USB RTL8150 based ethernet device support (EXPERIMENTAL)

(Dacă aveţi un convertor port serial în USB cum ar fi Prolific 2303,
veţi avea nevoie de această opţiune)
USB Serial Converter support  --->
    <*> USB Serial Converter support
    <*> USB Prolific 2303 Single Port Serial Driver (NEW)

Acum că opţiunile dvs. sunt stabilite, puteţi (re)compila kernel-ul şi suportul USB ar trebui să fie funcţional odată ce aţi repornit cu noul kernel. Acum puteţi citi Demonstraţie a lucrului cu USB şi să vedeţi dacă totul funcţionează cum trebuie.

Opţiuni de configurare pentru un kernel 2.4.x

Vom trece în revistă opţiunile ce vor trebui activate într-un kernel 2.4, pentru a asigura suport USB corespunzător pentru dispozitivele noastre. Dacă folosiţi un kernel 2.6, citiţi Opţiuni de configurare pentru un kernel 2.6.x.

Notă: Exemplele din acest document vor prezenta opţiuni de configurare pentru un suport USB de bază, care este necesar în mod obişnuit, de exemplu un dispozitiv de stocare USB (cele mai multe camere şi dispozitive pendrive). Dacă aveţi un dispozitiv USB specific ce trebuie configurat, consultaţi manualul dispozitivului dvs. sau căutaţi online pentru a afla dacă dispozitivul dvs. are suport construit în kernel sau diverse alte driver-e ce pot fi folosite. Luaţi aminte că pentru uşurinţă, toate exemplele au diversele opţiuni compilate în kernel. Dacă doriţi să aveţi un kernel modular, asiguraţi-vă că vă notaţi diversele module şi modificaţi fişierele dvs. de configurare corespunzător.

Cod 2.4: opţiuni de compilare pentru kernel-urile 2.4

(Următoarea configuraţie este doar pentru cei care au dispozitive de intrare USB.
Suportul principal pentru dispozitive de intrare va fi cerut mai târziu de USB HID.)
Input core support  --->
   <*> Input core support
   < >   Keyboard support
   < >   Mouse support
   < >   Event interface support

USB support  --->

(Acesta este hub-ul rădăcină şi este cerut pentru suportul USB.
Dacă doriţi să îl compilaţi ca modul, va avea numele usbcore.o)
<*> Support for USB

(Activaţi această opţiune pentru a vedea dispozitivele dvs. USB în /proc/bus/usb.
Opţiunea este recomandată.)
 [*]   Preliminary USB device filesystem

(Selectaţi cel puţin unul din aceste controlere HCD.
Dacă sunteţi nesiguri, alegerea tuturor este perfectă.)
--- USB Host Controller Drivers
<*>   UHCI Alternate Driver (JE) support
< >   OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support

(Aceasta este secţiunea cu dispozitive. Selectaţi doar ce aveţi nevoie.)
--- USB Device Class drivers
< >   USB Audio support
<*>   USB Mass Storage support
< >   USB Modem (CDC ACM) support
<*>   USB Printer support

(Urmată de secţiunea HID. Aceasta este necesară dacă aveţi dispozitive de intrare bazate pe USB.)
--- USB Human Interface Devices (HID)
<*>   USB Human Interface Device (full HID) support
 [*]     HID input layer support

(Dacă aveţi un convertor  port serial - USB cum ar fi Prolific 2303,
veţi avea nevoie de această opţiune)
USB Serial Converter support  --->
    <*> USB Serial Converter support
    <*> USB Prolific 2303 Single Port Serial Driver (NEW)

Acum că toate opţiunile sunt stabilite, puteţi (re)compila kernel-ul, iar suportul USB ar trebui să fie funcţional odată ce aţi repornit sistemul cu noul kernel.

3.  Demonstraţie a lucrului cu USB

dmesg este prietenul dvs.!

A venit vremea să ne jucăm cu aceste dispozitive USB :) Deci să îi dăm drumul. În acest capitol, vom vedea cum răspunde sistemul unor diverse dispozitive USB. Vom începe prin introducerea în sistem a unui dispozitiv de stocare a memoriei Pen Drive, 512 MB. Puteţi folosi şi alte dispozitive similare. Vom folosi în principal dmesg pentru a vedea ce se întâmplă şi cum răspunde sistemul acestui dispozitiv.

Notă: dmesg oferă în general o mulţime de informaţii, înaintea celor de care avem nevoie, pentru că citeşte din memoria buffer a kernel-ului, care conţine toate mesajele de iniţializare de asemenea. Ieşirile, în exemplele următoare, au doar porţiunile relevante şi spaţii în plus între ele pentru a obţine o vizualizare mai bună. Dacă este nevoie, folosiţi parametrii dmesg | more sau dmesg | less pentru a vedea mai bine informaţiile de ieşire ale sistemului dvs.

Cod 3.1: informaţii rezultat ale dmesg pentru un Memory Stick

(Conectaţi stick-ul într-un port USB disponibil şi apoi..)
# dmesg | less

(Dispozitivul este încărcat ca un dispozitiv USB 1.1 şi i se alocă o adresă.
De asemenea se afişează şi tipul dispozitivului controller folosit)
usb 1-1: new full speed USB device using uhci_hcd and address 2

(emularea SCSI automat este activată)
scsi0 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 2

(Acum sunt afişate informaţii referitoare la dispozitiv şi modelul acestuia)
usb-storage: waiting for device to settle before scanning
  Vendor: JetFlash  Model: TS512MJF2A        Rev: 1.00
  Type:   Direct-Access                      ANSI SCSI revision: 02
SCSI device sda: 1003600 512-byte hdwr sectors (514 MB)

(Protecţia la scriere este cod EXPERIMENTAL în ultimele versiuni de kernel)
sda: Write Protect is off
sda: Mode Sense: 0b 00 00 08
sda: assuming drive cache: write through
SCSI device sda: 1003600 512-byte hdwr sectors (514 MB)
/dev/scsi/host0/bus0/target0/lun0: p1
Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0
Attached scsi generic sg0 at scsi0, channel 0, id 0, lun 0,  type 0
usb-storage: device scan complete
(În acest moment, dispozitivul este accesibil prin mount-area /dev/sda1)

(Când dispozitivul este deconectat, sistemul reacţionează la acest lucru)
usb 1-1: USB disconnect, address 2

Odată ce dispozitivul este conectat şi montat, îl puteţi accesa ca pe un disc normal. Comenzi uzuale ca cp, mv, rm etc funcţionează corect. Aţi putea crea, de asemenea, un sistem de fişiere pe stick-ul USB sau să îl formataţi.

Cod 3.2: Accesarea stick-ului de memorie

# mount /dev/sda1 /mnt/usb
# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda8             9.4G  7.5G  1.9G  80% /
/dev/hda9              11G  8.1G  2.4G  78% /usr
none                  189M     0  189M   0% /dev/shm
/dev/sda1             490M   34M  457M   7% /mnt/usb

Notă: Camerele digitale pot fi accesate în acelaşi mod ca dispozitivele de memorie. Am o cameră Nikon Coolpix 5200 şi acesta este modul în care o accesez. Camerele din ziua de astăzi deţin două moduri de a transfera fotografiile; comportarea ca un dispozitiv de stocare USB şi prin modul PTP (Picture Transfer Protocol). este setată să se comporte ca un dispozitiv de stocare USB şi procedura este exact aceeaşi, din această cauză nu am explicat în detaliu aceleaşi lucruri. Luaţi aminte că această metodă nu poate funcţiona în toate cazurile şi cu toate camerele digitale care au suport USB.

Cum va apare un dispozitiv mouse USB în cazul în care aveţi unul? Va fi afişat ca un dispozitiv HID.

Cod 3.3: Dispozitiv Mouse Optic USB

# dmesg | grep USB
drivers/usb/input/hid-core.c: v2.0:USB HID core driver
usb 1-1: new low speed USB device using address 2
input: USB HID v1.10 Mouse [Logitech USB-PS/2 Optical Mouse] on usb-0000:00:07.2-1

O altă comandă grozavă ce poate fi folosită pentru a vedea starea porturilor dvs. USB este lsusb. Este parte a pachetului sys-apps/usbutils şi va fi prezentarea acesteia este acoperită în următorul capitol.

4.  Spaţiu Utilizator USB

Unelte grozave

Până acum am văzut cât de mult suport există pentru USB, din punct de vedere al kernel-ului/sistemului Linux. Vom arunca o privire asupra suportului asigurat de Gentoo pentru USB, în spaţiul utilizator.

Una din cele mai folositoare unelte este lsusb. Aceasta afişează toate dispozitivele USB conectate în sistem. Instalarea este rapidă.

Cod 4.1: Instalarea usbutils

# emerge usbutils

Odată instalat, rulaţi lsusb pentru a primi simple informaţii referitoare la dispozitivele USB ataşate maşinii dvs.

Notă: În cele mai multe cazuri, trebuie să aveţi drepturi root pentru a rula lsusb.

Atenţie: lsusb citeşte informaţiile referitoare la dispozitivele USB din /proc/bus/usb. Dacă nu aţi activat această opţiune în kernel, sunt şanse ca lsusb să nu funcţioneze deloc. Asiguraţi-vă că aveţi activat în kernel-ul dvs. suportul pentru sistemul de fişiere /proc şi că usbfs este mount-at în /proc/bus/usb (ceea ce ar trebui să se întâmple automat).

Cod 4.2: lsusb la lucru

# lsusb
(Acesta este un stick de memorie de 512 MB de la Transcend)
Bus 001 Device 003: ID 0c76:0005 JMTek, LLC. USBdisk
(Acesta este dispozitivul mouse optic)
Bus 001 Device 002: ID 046d:c00e Logitech, Inc. Optical Mouse
(Acesta este hub-ul rădăcină)
Bus 001 Device 001: ID 0000:0000

Dacă sunteţi de genul celor ce adoră să vadă multe informaţii, aveţi opţiunea rulării lsusb -v. Încercaţi-o şi vedeţi cantitatea de informaţii pe care o oferă. O altă bună opţiune se referă la faptul că lsusb arată ierarhia fizică curentă USB ca un arbore şi astfel face mai uşor de înţeleasă harta exactă a dispozitivelor. Comanda este lsusb -t. De exemplu,

Cod 4.3: lsusb arătând ierarhia USB

# lsusb -t
Bus#  1
`-Dev#   1 Vendor 0x0000 Product 0x0000
  |-Dev#   2 Vendor 0x046d Product 0xc00e
  `-Dev#   3 Vendor 0x0c76 Product 0x0005

Puteţi uşor corela rezultatele lsusb şi lsusb -t, ce ajută depanarea ca şi înţelegerea modului de funcţionare al USB.

Conectare Hot sau Cold ??

Gentoo foloseşte două pachete, sys-apps/hotplug şi sys-apps/coldplug pentru a realiza ceva magie cu dispozitivele hot-pluggable. Ca în cazul oricărei magii, există o logică simplă în spatele acesteia, de asemenea. Vom vedea acum ce este, şi să sperăm că în acest proces vom fi apţi să înţelegem mai bine aceste două pachete gemene.

Firmware-ul poate fi definit ca software în hardware, ce este încărcat şi executat, dar care nu poate fi modificat uşor. Multe dispozitive au firmware încorporat pentru siguranţa corectei funcţionări şi adesea firmware-ul poate conţine cod critic, pentru a avea siguranţa că hardware-ul va funcţiona aşa cum s-a prevăzut. Firmware-ul este prezent într-o largă varietate de componente de calculator, de la chip-uri ROM până la avansate card-uri USB şi PCMCIA. Când un dispozitiv este conectat, firmware-ul (care în unele cazuri poate fi chiar driver-ul) este citit şi încărcat în memorie după care dispozitivul poate fi folosit de sistem.

Pentru a scurta lunga poveste, Gentoo foloseşte sys-apps/hotplug pentru lucrul cu firmware-ul în cazul dispozitivelor hot-pluggable. sys-apps/hotplug va folosi firmware-ul corespunzător pentru a face respectivul dispozitiv utilizabil. Firmware-ul ar trebui pus în directorul /lib/firmware şi încărcat de acolo. Rezolvarea este simplă; obişnuita comandă emerge va face acest lucru.

Cod 4.4: Instalarea hotplug

# emerge hotplug

Acum întrebarea evidentă ar fi, ce este coldplug şi de ce este necesar? sys-apps/coldplug are acelaşi rol ca hotplug, dar îl îndeplineşte pentru dispozitivele hot-pluggable care sunt deja conectate în momentul pornirii. Un bun exemplu în acest caz ar fi un card de reţea USB. Înainte, hotplug era pachetul responsabil cu lucrul în ambele situaţii, dar apoi a fost împărţit în hotplug şi coldplug, coldplug efectuând tot ce este necesar. Instalaţi-l dacă aveţi dispozitive hot-pluggable pe care trebuie să le activaţi la pornire.

Cod 4.5: Instalarea coldplug

# emerge coldplug
(Şi îl puteţi adăuga în nivelul de iniţializare boot)
# rc-update add coldplug boot
 * coldplug added to runlevel boot
 * rc-update complete.

Notă: Script-ul de iniţializare de mai sus are acelaşi rol ca şi cel pe care îl avea cel al hotplug (pentru dispozitive hot-pluggable deja ataşate). Script-ul curent /etc/init.d/hotplug nu face altceva decât să verifice dacă opţiunea CONFIG_HOTPLUG este activată pentru kernel-ul curent.

5.  Şi mulţumiri către...

Referinţe

Un număr bun de documente online m-au ajutat în timpul redactării acestui material, şi iată câteva care sunt de înalt nivel tehnic dar cu adevărat interesante. Cred că acestea merită creditul nostru. Deci, iată-le!

Alte Referinţe Interesante



Imprimare

Actualizat la 14 Ianuarie 2006

Versiunea originală a acestei traduceri nu mai este întreţinută

Sumar: Acest document ajută utilizatorul în configurarea USB pe un sistem Gentoo precum şi a diverselor dispozitive USB.

Shyam Mani
Autor

Robert Datcu
Translator

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.