• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Booten von SD-Karte [gelöst]

Spielwurm

Advanced Hacker
Ich habe bei meiner Zotac-Zbox das Betriebssystem auf einer SD-Karte installiert. Beim Starten erscheint vorschriftsmäßig Grub und lädt den Kernel von der Karte. Dann installiert der alle Treiber, darunter naürlich auch die USB-Treiber und danach erkennt er die Karte nicht mehr, er sucht sie und findet sie nicht. In der anschließenden Shell kann ich die Karte auch nicht mounten, es sei kein ext4-Dateisystem da drauf "oder der Superblock ist beschädigt".

An meinem Arbeitsrechner kann ich das Dateisystem überprüfen, es ist clean. Es muss also daran liegen, dass die Installation des USB-Treibers dazwischen funkt. Es hilft auch nicht, dass ich im BIOS einstelle, er soll die Karte als Festplatte "verkaufen". Gibt es eine Möglichkeit, beim Start Parameter zu übergeben, die mir helfen?

Oder liegt es am neuen Opensuse 12.1? Ich hatte schon mal einen Fehler in Sachen 11.4 und SCSI-Platten ...

Hartmut

PS: Die Installation via Netzwerk-Suse war ohne Probleme möglich, die SD-Karte wurde ohne Murren erkannt.
 

josef-wien

Ultimate Guru
Ohne etwas von 12.1 zu wissen, kann es nach den Symptomen sein, daß in der initrd der Treiber für Ext4 fehlt. Wenn
Code:
grep CONFIG_EXT4_FS= /einhängepunkt/von/boot/config-*
CONFIG_EXT4_FS=m ergibt und bei
Code:
gzip -cd /einhängepunkt/von/boot/initrd | cpio -ivt | grep ext4
nichts herauskommt, dann ist es so, und Du mußt in /einhängepunkt/von/etc/sysconfig/kernel ext4 ergänzen sowie in einer chroot-Umgebung eine neue initrd erstellen (suche nach mkinitrd chroot, robi hat das mehrmals erklärt).
 
OP
S

Spielwurm

Advanced Hacker
Leider nicht. Die eingebaute Festplatte ist als /home dabei und ext4 bespielt und sichtbar und durchsuchbar in der Shell.

Ersteres ergibt=y
und "zweiteres": -rwxr-xr-x 1 root root 190440 Oct 29 18:55 sbin/fsck.ext4

Hartmut
 
OP
S

Spielwurm

Advanced Hacker
Ich habe ein wenig geforscht:

die Shell, auf der ich lande, ist ein wenig unkomfortabel. Deswegen habe ich einen USB-Stick mit ext4 formatiert, fdisk draufkopiert und den Stick zusätzlich eingesteckt. Jetzt kann ich mit fdisk sehen, dass die SD-Karte nicht erscheint, der Installations-Stick mit dem Netinstall-ISO ist von /dev/sdc1 zu /dev/sdb1 (und /dev/sdb1p1 wg ISO) geworden. Der neue Stick ist /dev/sdc1. Jetzt habe ich die SD-Karte einfach mal gezogen und wieder eingesteckt und siehe da: dmesg meldet ein neues schnelles USB-Device, allerdings nicht als Mass-Storage-Device. Stecke ich einen USB-Stick rein, dann wird der mir als Mass-Storage gezeigt.

Nun ist die SD-Karte von der neuen Sorte UHCI (schreiben mit 30MB) und vielleicht liegt es daran. Also der nächste Test: eine "normale" SD-Karte mit ext4 fertigmachen, irgendeine Datei draufkopieren (damit ich alle unterscheiden kann) und anstelle der UHCI-Karte einstecken. Jedoch: auch die wird nur als neues schnelles USB-Device erkannt und nicht auch als Mass-Storage-Device.

Fazit: der Kernel setzt einen USB-Erkennungsdienst in Gang, der die SD-Karte außen vor lässt und damit zieht er sich selbst den Boden unter den Füßen weg. Was kann ich dagegen tun?

Hartmut
 

spoensche

Moderator
Teammitglied
Welche Module sind bei dir unter /etc/sysconfig/kernel in der Variablen MODULES_LOADED_ON_BOOT aufgeführt?

Spielwurm schrieb:
Was kann ich dagegen tun?

Was verwendest du für einen Cardreader, extern oder intern?

Poste mal die Ausgabe von
Code:
fdisk -l
und wenn du die Karte eingesteckt hast die Ausgabe von
Code:
dmesg | grep -i usb
 
Spielwurm schrieb:
Jetzt habe ich die SD-Karte einfach mal gezogen und wieder eingesteckt und siehe da: dmesg meldet ein neues schnelles USB-Device, allerdings nicht als Mass-Storage-Device. Stecke ich einen USB-Stick rein, dann wird der mir als Mass-Storage gezeigt.

Das ist bei mir allerdings genau so (2GB SD-Karte mit Fat32):

Code:
[50518.118084] usb 1-2: reset high speed USB device using ehci_hcd and address 7
[51426.710314] sd 4:0:0:0: [sdc] 3935232 512-byte logical blocks: (2.01 GB/1.87 GiB)
[51426.711462] sd 4:0:0:0: [sdc] Assuming drive cache: write through
[51426.713544] sd 4:0:0:0: [sdc] Assuming drive cache: write through
[51426.715736]  sdc: sdc1
 
OP
S

Spielwurm

Advanced Hacker
Kartenleser: intern

Die Ausgabe von fdisk: (ich beschreibe sie hier mal)

beim Laden des Kernels:
sda1: leere Festplatte für /home
sdb1: SD-Karte mit /
sdb2: SD-Karte mit /swap
sdc1: USB-Stick mit Netinstall

nach dem Laden:
sda1: leere Festplatte
sdb1: USB-Stick mit Netinstall
sdc existiert nicht mehr, auch nicht weitere, erst wenn ich einen weiteren Stick einstecke

Ausgabe von dmesg in Sachen USB:

das, was gropiuskalle schreibt

und es stimmt - mir fällt auf, dass am Arbeitsrechner die Karte auch nicht als "Mass-Storage-Device" gemeldet wird. Aber sie wird ohne Murren gemountet, wo also ist der Unterschied? Der Kartenleser scheint nicht mehr vorhanden zu sein!

Hartmut
 
OP
S

Spielwurm

Advanced Hacker
So, jetzt habe ich mühselig die Liste der geladenen Treiber geholt:

Code:
Module                  Size  Used by
nouveau               778194  1 
ttm                    80953  1 nouveau
drm_kms_helper         42489  1 nouveau
drm                   252967  3 nouveau,ttm,drm_kms_helper
i2c_algo_bit           13423  1 nouveau
mxm_wmi                12979  1 nouveau
video                  19653  1 nouveau
wmi                    19256  1 mxm_wmi
button                 13949  1 nouveau
processor              45192  0 
thermal_sys            25017  2 video,processor

Meiner Meinung nach müsste es einen Treiber für den Kartenleser geben und ohne den kann die Karte nicht weiterarbeiten. Oder liege ich falsch? Wenn ja, welcher? Und wenn ich richtig liege, könnte ich das problem dadurch entsorgen, indem ich in der /etc/sysconfig/kernel den Treiber eintrage und mit mkinitrd eine neue Startdatei erzeuge. Richtig?

Hartmut

PS: Aber warum werden die normalen USB-Sticks erkannt?
 
OP
S

Spielwurm

Advanced Hacker
Und noch mehr Forschung:

Betriebsystem auf Festplatte gezogen und gestartet. Dann ein lsmod in Textdatei-vorher.txt, Karte einstecken, lsmod > Textdatei-nachher.txt und beide vergleichen. Es fehlen also die Module uas und ums-realtek.

Jetzt zwei Fragen an Fachleute: trage ich das zweite Modul mit einem Bindestrich oder einem Unterstrich ein? Und: muss usbcore mit dazu?

Hartmut
 

spoensche

Moderator
Teammitglied
Du trägst das Modul mit einem "-" ein. Das Modul usbcore benötigst du nur, wenn der Kartenleser am USB-Bus hängt
 
OP
S

Spielwurm

Advanced Hacker
Deutet das darauf hin, dass der Kartenleser ein USB-Device ist?
Code:
182.284052] usb 1-5: new high speed USB device number 3 using ehci_hcd
182.410710] usb 1-5: New USB device found, idVendor=0bda, idProduct=0158
182.410719] usb 1-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
182.410726] usb 1-5: Product: USB2.0-CRW
182.410731] usb 1-5: Manufacturer: Generic
182.410735] usb 1-5: SerialNumber: 20071114173400000
checking bus 1, device 3: "/sys/devices/pci0000:00/0000:00:04.1/usb1/1-5"
bus: 1, device: 3 was not an MTP device
182.534278] usbcore: registered new interface driver uas
182.539313] scsi6 : usb-storage 1-5:1.0
182.539657] usbcore: registered new interface driver ums-realtek

Hartmut
 
OP
S

Spielwurm

Advanced Hacker
So, ich habe es geschafft. War ein hartes Stück Arbeit.

Die Schwierigkeit: obwohl ich schnell auf die SD-Karte am Arbeitsrechner zugreifen kann, konnte ich mit mkinitrd am Arbeitsrechner keine neue initrd herstellen. Ausweg: ich musste "mal eben schnell" das OS auf der Festplatte installieren, dann die Karte mounten, unter /dev einen Knoten sdb1 erstellen, dann chroot und mkinitrd. Anschließend neu starten mit geänderter Bootreihenfolge und Erfolg.

Und natürlich vor mkinitrd in die /etc/sysconfig/kernel die beiden Module an die richtige Stelle schreiben. Allerdings ist die Aussage von spönsche falsch: Module werden genau so eingetragen, wie modprobe sie braucht, wenn also ein Trennstrich angesagt ist, dann ist das der Unterstrich.

Noch ein Ergebnis für Entwickler: der Kernel lädt allerhand ums_*-Module, nur das für realtek nicht. Schade.

Hartmut
 
OP
S

Spielwurm

Advanced Hacker
Kapitel 2
Heute habe ich eine Kopie der Karte gemacht (mit dd) und die Kopie in den Server gesteckt. Sie startete einwandfrei. Danach habe ich auf der Kopie ein Update auf Opensuse 12.3 gemacht. Der Start danach endete mit einer Kernel-Panik. Ursache: kein Modul uas gefunden. Sch ... :zensur:

Nach einigem googlen folgendes gefunden:
http://forums.gentoo.org/viewtopic-t-951680-start-0.html und https://bugzilla.kernel.org/show_bug.cgi?id=51031.
Das sagt mir einiges, aber leider fand ich nicht, ob es einen Ersatz für das Modul uas gibt. Weiß einer von Euch Rat? :???:

Spielwurm
 
Oben