USB-Device per fstab beim Booten einhängen

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
Benutzeravatar
Warlord
Beiträge: 128
Registriert: 10.03.2005 12:18:18
Wohnort: Norddeutschland

USB-Device per fstab beim Booten einhängen

Beitrag von Warlord » 08.02.2010 16:17:32

Hi zusammen, 8)

ich habe ein Problem mit meiner USB-Platte: ich kann sie nicht beim Bootvorgang über den Eintrag in /etc/fstab automatisch mounten. Zu dem Zeitpunkt ist die Platte einfach noch nicht erkannt worden.

Mein System bootet von Flash, welcher über libata erkannt wird - kein Problem. Zusätzlich enthält das Embedded-System noch ein SSD-Modul, welches intern per USB direkt auf die Platine gesteckt ist.

Auszugsweise sieht das Booten so aus:

Code: Alles auswählen

[    1.390486] libata version 3.00 loaded.
[    1.398488] Uniform Multi-Platform E-IDE driver
[    1.398488] ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
[    1.398488] ICH7: IDE controller (0x8086:0x27df rev 0x01) at  PCI slot 0000:00:1f.1
[    1.398488] ACPI: PCI Interrupt 0000:00:1f.1[A] -> GSI 18 (level, low) -> IRQ 18
[    1.398488] ICH7: not 100% native mode: will probe irqs later
[    1.398488]     ide0: BM-DMA at 0xffa0-0xffa7
[    1.398488]     ide1: BM-DMA at 0xffa8-0xffaf
[    1.398488] Probing IDE interface ide0...
[    1.634491] hda: 2048MB ATA Flash Disk, ATA DISK drive
[    2.598503] hda: host max PIO4 wanted PIO255(auto-tune) selected PIO4
[    2.598503] hda: MWDMA2 mode selected
[    2.598503] Probing IDE interface ide1...
[    3.162506] ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
[    3.162506] ide1 at 0x170-0x177,0x376 on irq 15
[    3.274480] hda: max request size: 128KiB
[    3.274480] hda: 4000752 sectors (2048 MB) w/1KiB Cache, CHS=3969/16/63
[    3.274480] hda: cache flushes not supported
[    3.274480]  hda: hda1

[    6.011651] usbcore: registered new interface driver usbfs
[    6.011761] usbcore: registered new interface driver hub
[    6.011881] usbcore: registered new device driver usb
[    6.032881] input: Video Bus as /class/input/input2
[    6.040667] USB Universal Host Controller Interface driver v3.0
[    6.040801] ACPI: PCI Interrupt 0000:00:1d.0[A] -> GSI 23 (level, low) -> IRQ 23
[    6.040938] PCI: Setting latency timer of device 0000:00:1d.0 to 64
[    6.040944] uhci_hcd 0000:00:1d.0: UHCI Host Controller
[    6.041191] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 1
[    6.041318] uhci_hcd 0000:00:1d.0: irq 23, io base 0x0000ac00

[    6.639730] scsi0 : ata_piix
[    6.645465] scsi1 : ata_piix
[    6.647883] ata1: SATA max UDMA/133 cmd 0xa400 ctl 0xa080 bmdma 0x9c00 irq 19
[    6.647883] ata2: SATA max UDMA/133 cmd 0xa000 ctl 0x9c80 bmdma 0x9c08 irq 19
[    6.942774] usb 1-1: device not accepting address 2, error -71
[    6.999300] hub 1-0:1.0: unable to enumerate USB device on port 1
[    7.509831] EXT3 FS on hda1, internal journal
[    7.667493] loop: module loaded
[    7.688340] usb 5-2: new high speed USB device using ehci_hcd and address 3
[    7.694299] Initializing USB Mass Storage driver...
[    7.820583] usb 5-2: configuration #1 chosen from 1 choice
[    7.824746] usb 5-2: New USB device found, idVendor=8086, idProduct=f1a5
[    7.824823] usb 5-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    7.824897] usb 5-2: Product: Value SSD
[    7.824964] usb 5-2: Manufacturer: Intel
[    7.825032] usb 5-2: SerialNumber: 410000000000000064217829
[    8.065598] usb 5-3: new high speed USB device using ehci_hcd and address 4
[    8.198843] usb 5-3: configuration #1 chosen from 1 choice
[    8.199003] hub 5-3:1.0: USB hub found
[    8.199003] hub 5-3:1.0: 4 ports detected
[    8.300214] usb 5-3: New USB device found, idVendor=05e3, idProduct=0606
[    8.300289] usb 5-3: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[    8.300360] usb 5-3: Product: USB2.0 Hub
[    8.303003] scsi2 : SCSI emulation for USB Mass Storage devices
[    8.303003] usb-storage: device found at 3
[    8.303003] usb-storage: waiting for device to settle before scanning
[    8.303004] usbcore: registered new interface driver usb-storage
[    8.303004] USB Mass Storage support registered.
[    8.331081] Driver 'sd' needs updating - please use bus_type methods
[    8.552358] usb 1-1: new low speed USB device using uhci_hcd and address 4
[    8.761418] usb 1-1: configuration #1 chosen from 1 choice
[    8.800601] usb 1-1: New USB device found, idVendor=413c, idProduct=2105
[    8.800601] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    8.800601] usb 1-1: Product: Dell USB Keyboard
[    8.800601] usb 1-1: Manufacturer: Dell
[    9.000569] usb 5-3.3: new low speed USB device using ehci_hcd and address 5
[    9.097983] usb 5-3.3: configuration #1 chosen from 1 choice
[    9.098578] usb 5-3.3: New USB device found, idVendor=0461, idProduct=4d22
[    9.098655] usb 5-3.3: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[    9.102776] usb 5-3.3: Product: USB Optical Mouse
[    9.104304] usbcore: registered new interface driver hiddev
[    9.143134] input: Dell Dell USB Keyboard as /class/input/input4
[    9.163172] input,hidraw0: USB HID v1.10 Keyboard [Dell Dell USB Keyboard] on usb-0000:00:1d.0-1
[    9.164303] input: USB Optical Mouse as /class/input/input5
[    9.194233] input,hidraw1: USB HID v1.11 Mouse [USB Optical Mouse] on usb-0000:00:1d.7-3.3
[    9.194532] usbcore: registered new interface driver usbhid
[    9.194602] usbhid: v2.6:USB HID core driver

[   13.334202] usb-storage: device scan complete
[   13.335783] scsi 2:0:0:0: Direct-Access     Intel    Value SSD        2.00 PQ: 0 ANSI: 2
[   13.338760] sd 2:0:0:0: [sda] 8052736 512-byte hardware sectors (4123 MB)
[   13.339277] sd 2:0:0:0: [sda] Write Protect is off
[   13.339277] sd 2:0:0:0: [sda] Mode Sense: 45 00 00 08
[   13.339277] sd 2:0:0:0: [sda] Assuming drive cache: write through
[   13.340256] sd 2:0:0:0: [sda] 8052736 512-byte hardware sectors (4123 MB)
[   13.342871] sd 2:0:0:0: [sda] Write Protect is off
[   13.342871] sd 2:0:0:0: [sda] Mode Sense: 45 00 00 08
[   13.342871] sd 2:0:0:0: [sda] Assuming drive cache: write through
[   13.342871]  sda: sda1 sda2
[   13.343409] sd 2:0:0:0: [sda] Attached SCSI disk
Man sieht wunderbar, wie sich das USB initialisiert. So wird bei Sekunde 7,8 bereits die Intel-SSD gefunden, es dauert aber bis 13,3 bis sie als sda erkannt wurde.

/etc/fstab sieht so aus:

Code: Alles auswählen

/dev/hda1       /               ext3    errors=remount-ro 0       1
/dev/sda1       /data           ext3    defaults          0       2
Später kann ich als Root die Platte ganz normal mounten.

Wenn ich die Zeile auf noauto abändere und den FSCK-Pass rausnehme, bootet er auch durch:

Code: Alles auswählen

/dev/sda1       /data           ext3    noauto,rw       0       0
Allerdings :twisted: will will will :twisted: ich, daß die Platte beim Booten gemountet wird. Kann ich den Kernel irgendwie dazu bringen, das USB früher komplett zu initialisieren? Die Rootdelay-Option bringt leider gar nichts. Er wartet dann halt einfach und rennt entsprechend später in die Grütze.

Würde es was bringen, wenn ich den ganzen USB-Krempel fest in den Kernel einbaue?

Die ganzen Tips aus Google et al, habe ich auch durch: mit by-ID by-Label, etc. - alles geht nicht - schlicht wegen des zeitlichen Ablaufs... :-(

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: USB-Device per fstab beim Booten einhängen

Beitrag von gms » 08.02.2010 19:15:53

es wird wahrscheinlich genügen, wenn du ein "mount /data" in die "/etc/rc.local" hinzufügst

Als Alternative gibts natürlich auch Lösungen über Udev, ist der auf dem Embedded System installiert ?

Gruß
gms

Benutzeravatar
Warlord
Beiträge: 128
Registriert: 10.03.2005 12:18:18
Wohnort: Norddeutschland

Re: USB-Device per fstab beim Booten einhängen

Beitrag von Warlord » 09.02.2010 08:19:05

Also in rc.local klappts nur, wenn ich davor noch ein sleep 10 mache - und somit 10 weitere Sekunden zum Bootvorgang hinzufüge... :-(
gms hat geschrieben: Als Alternative gibts natürlich auch Lösungen über Udev, ist der auf dem Embedded System installiert ?
Das habe ich auch schon gedacht, ich weiß nur nicht wie die Regel heißen könnte... wie kann ich denn per udev ein Device mounten? Ich habe bisher immer nur Device-Nodes damit erzeugt.

Benutzeravatar
Warlord
Beiträge: 128
Registriert: 10.03.2005 12:18:18
Wohnort: Norddeutschland

Re: USB-Device per fstab beim Booten einhängen

Beitrag von Warlord » 09.02.2010 13:24:30

So, habe jetzt mal einen Kernel komplett selbst gebaut und den ganzen USB-Kram fest einkompiliert:

Jetzt zeigt die rootdelay-Option Wirkung, und ich kann die Verzeichnisse auf dem USB-DOM korrekt einbinden.

Finde ich aber echt blöd, daß die USB-Erkennung so lahm ist. SATA-DOMs sind da also deutlich im Vorteil!

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: USB-Device per fstab beim Booten einhängen

Beitrag von cosmac » 09.02.2010 13:57:51

hi,

das Modul usb-storage kennt einen Parameter "delay_use=$SEKUNDEN", der Default sind 5 Sekunden. Im dmesg-Listing war das die Zeit von Sekunde 8.303 bis 13.3. Wenn alle verwendeten USB-Speicher schnell genug sind, könnte man auch 1 Sekunde angeben. Als Kernel-Parameter müsste das so ähnlich aussehen (ungetestet):

Code: Alles auswählen

usb-storage.delay_use=1
Wenn du sowieso einen eigenen Kernel verwendest, könntest du alle nötigen Treiber fest einbauen und so auf die initrd verzichten. Das spart ein wenig Boot-Zeit.
Beware of programmers who carry screwdrivers.

Benutzeravatar
Warlord
Beiträge: 128
Registriert: 10.03.2005 12:18:18
Wohnort: Norddeutschland

Re: USB-Device per fstab beim Booten einhängen

Beitrag von Warlord » 09.02.2010 15:34:24

cosmac hat geschrieben: das Modul usb-storage kennt einen Parameter "delay_use=$SEKUNDEN", der Default sind 5 Sekunden.
BOOYA!!! :THX:

Das war doch mal ne Info, die mich ganz nach vorne bringt!!! :mrgreen:

Ich starte den selbstgebackenen Kernel jetzt mit

Code: Alles auswählen

rootdelay=2 usb-storage.delay_use=1
und es klappt.

Alles weitere sind Feinheiten, die ich vllt. später mal tune.

Antworten