PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mk2fs und CF-Karte


BofD
2006-09-20, 13:15:31
Hallo,
ich versuche gerade ein ext2 Dateisystem auf einer CompactFlash-Karte einzurichten. Das Erstellen einer Partition geht ohne Probleme mit cfdisk, aber mke2fs /dev/hde1 bringt nur eine Fehlermeldung.
# mke2fs /dev/hde1
mke2fs 1.38 (30-Jun-2005)
mke2fs: No such file or directory while trying to determine hardware sector size
Hab das Ganze mit drei verschiedenen Karten ausprobiert(2x8MB 1x128MB). Also wo liegt die Lösung?

Komisch ist auch, dass mke2fs /dev/hde funktioniert und die Karte auch richtig gemountet werden kann. Ich brauche das Dateisystem aber zwingend auf der Partition /dev/hde1.

Wuzel
2006-09-20, 14:13:15
Hallo,
ich versuche gerade ein ext2 Dateisystem auf einer CompactFlash-Karte einzurichten. Das Erstellen einer Partition geht ohne Probleme mit cfdisk, aber mke2fs /dev/hde1 bringt nur eine Fehlermeldung.
# mke2fs /dev/hde1
mke2fs 1.38 (30-Jun-2005)
mke2fs: No such file or directory while trying to determine hardware sector size
Hab das Ganze mit drei verschiedenen Karten ausprobiert(2x8MB 1x128MB). Also wo liegt die Lösung?

Komisch ist auch, dass mke2fs /dev/hde funktioniert und die Karte auch richtig gemountet werden kann. Ich brauche das Dateisystem aber zwingend auf der Partition /dev/hde1.

Also die Karte läuft vollkommen I.O. unter /dev/hde ?
Und du willst sie nun als /dev/hde1 haben? <- gibt es da einen grund?

Du kannst mittels Udev-rules dein Gerät unter einem namen/link deiner wahl in /dev reinsetzen - in den Manuals deiner Dist. müsste unter Udev alles relevante zu finden sein.

BofD
2006-09-20, 15:08:13
Und du willst sie nun als /dev/hde1 haben? <- gibt es da einen grund?
Der Grund ist, dass ich Linux auf einem anderen Computer zum laufen bringen will, der keine Bootloader unterstützt, sondern immer nur einen Kernel bootet, der in einem bestimmten Verzeichnis liegt und einen bestimmten Namen hat. Daraus folgt aber auch, dass ich keine boot-Optionen an den Kernel übergeben kann, also auch kein root-Verzeichnis. Der Kernel nimmt immer /dev/hda1(CF-karte wird dort als erstes IDE-Gerät erkannt) als root.

Du kannst mittels Udev-rules dein Gerät unter einem namen/link deiner wahl in /dev reinsetzen - in den Manuals deiner Dist. müsste unter Udev alles relevante zu finden sein.
Diese Möglichkeit würde das Problem zwar auf dem Rechner beheben auf dem ich die CF beschreiben will, aber beim booten des anderen Rechners bestünde das Problem immernoch, weil ja das editieren der Udev-rules nichts an der CF-Karte an sich ändert(wenn ich das richtig verstanden habe).

Harleckin
2006-09-20, 15:41:34
Was für eine Zielplattform verwendest du?

Schreib auf die CF-Karte erstmal eine passende Partionstabelle (EFI, Sun, MSDOS) mittels 'cfdisk', 'parted', 'fdisk' oder ähnlichen.

BofD
2006-09-20, 19:42:30
Also ich glaub ich muss mal etwas weiter ausholen:
Ich habe hier einen IBM ThinClient(i386er (glaub ich) 233MHz), der die CF-Karte als Festplatte verwendet. Auf dem soll Linux laufen(irgendwann als VPN-Server gedacht). Auf jeden Fall hat der Rechner so einige Einschränkungen. Zum Beispiel kann man keinen komprimierten Kernel verwenden und eben kein Bootmanager. Der einzige lauffähige Kernel den ich habe will allerdings das root-Dateisystem als ext2 auf /dev/hda1.
Also sehe ich da zwei Lösungsansätze: 1) Dateisystem irgendwie auf /dev/hda1 bekommen oder 2) einen neuen Kernel kompilieren, der das root-Dateisystem auf /dev/hda erwartet(geht so was überhaupt?)
Ansatz 1 scheint wesentlich leichter zu sein, wenn es klappen würde. Also ich starte(auf dem "Host"-Rechner mit eingesteckter CF) cfdisk /dev/hde. Der zeigt mir brav die Partitionen an. Alles gut. Ich lösche alle Partitionen und erstelle dann eine neue mit voller MB Zahl und mit dem Type 83 (Linux). Dann auf Write und bestätigen. Keine Fehlermeldung bis dahin, aber nach beenden des Programms und dem Versuch mit mke2fs kommt dann wieder dieser Fehler.

Harleckin
2006-09-21, 11:44:09
Bist du dir sicher das "/dev/hde" überhaupt das richtige Gerät ist?

Was spricht 'dmesg' nachdem die Karte initialisiert wurde?

Ich dacht immer das CF-Karten als SCSI-Platten behandelt werden und somit als "/dev/sd?" oder "/dev/sg?" ansprechbar wären.

$ cat /proc/scsi/scsi
$ fdisk -l

Wuzel
2006-09-21, 13:42:00
Also ich glaub ich muss mal etwas weiter ausholen:
Ich habe hier einen IBM ThinClient(i386er (glaub ich) 233MHz), der die CF-Karte als Festplatte verwendet. Auf dem soll Linux laufen(irgendwann als VPN-Server gedacht). Auf jeden Fall hat der Rechner so einige Einschränkungen. Zum Beispiel kann man keinen komprimierten Kernel verwenden und eben kein Bootmanager. Der einzige lauffähige Kernel den ich habe will allerdings das root-Dateisystem als ext2 auf /dev/hda1.
Also sehe ich da zwei Lösungsansätze: 1) Dateisystem irgendwie auf /dev/hda1 bekommen oder 2) einen neuen Kernel kompilieren, der das root-Dateisystem auf /dev/hda erwartet(geht so was überhaupt?)
Ansatz 1 scheint wesentlich leichter zu sein, wenn es klappen würde. Also ich starte(auf dem "Host"-Rechner mit eingesteckter CF) cfdisk /dev/hde. Der zeigt mir brav die Partitionen an. Alles gut. Ich lösche alle Partitionen und erstelle dann eine neue mit voller MB Zahl und mit dem Type 83 (Linux). Dann auf Write und bestätigen. Keine Fehlermeldung bis dahin, aber nach beenden des Programms und dem Versuch mit mke2fs kommt dann wieder dieser Fehler.

386'er mit 233 :eek:

Ne, Spass ..

Also, so gut wie jeder brauchbarer TC kann vom Netz booten, der IBM mit sehr grosser sicherheit. Geh hin, häng das ding ins Netz, instalier auf einer Mühle Lin und das ganze gerödel und boote den Thin übers netz und instalier dann direkt darauf ...

Gibt massig HT's im Netz wie das funzt.

Das mit dem booten verstehe ich auch nicht so ganz, ein BM kann man eigentlich immer und überall draufhauen, egal ob CF, HD, oder SD.

BofD
2006-09-21, 14:11:16
Bist du dir sicher das "/dev/hde" überhaupt das richtige Gerät ist?

Was spricht 'dmesg' nachdem die Karte initialisiert wurde?

Ich dacht immer das CF-Karten als SCSI-Platten behandelt werden und somit als "/dev/sd?" oder "/dev/sg?" ansprechbar wären.

$ cat /proc/scsi/scsi
$ fdisk -l

/dev/hde ist schon richtig. Ich benutze den internen Kartenleser vom Laptop, der als PCMCIA-IDE-Kontroller behandelt wird.

Hab mir mal die dmesg Ausgabe angesehen und da steht was von nicht gefundener Partitionstabelle. Weil mir das dann alles zu bunt wurde hab ich einfach mal eine LiveCD eingeschmissen und dort lief alles wunderbar.

Der ThinClient hat irgend so ein komischen Prozessor. cat /proc/cpuinfo sagt das ist ein "Cyrix MediaGXtm MMXtm Enhanced". Im Moment bootet der von einer 16MB CF und mountet danach eine externe 2,5" Festplatte nach /usr. Ich bin erstaunt wie sauber und schnell das ganze System läuft(und das bei 233MHz und 160MB Ram, alles ganz klein und passiv gekühlt).

Das Booten über Netzwerk funktioniert im Prinzip auch, aber als ich das mal versucht habe hat der nur den Kernel gebootet und konnte dann das Dateisystem nicht mounten. Unter anderem auch weil auch hier kein BM einsetzbar war. Bei dem syslinux BM hat der TC zum Beispiel gemeckert, dass er keine ausführbare Binärdatei findet.

Wuzel
2006-09-21, 16:28:42
/dev/hde ist schon richtig. Ich benutze den internen Kartenleser vom Laptop, der als PCMCIA-IDE-Kontroller behandelt wird.

Hab mir mal die dmesg Ausgabe angesehen und da steht was von nicht gefundener Partitionstabelle. Weil mir das dann alles zu bunt wurde hab ich einfach mal eine LiveCD eingeschmissen und dort lief alles wunderbar.

Der ThinClient hat irgend so ein komischen Prozessor. cat /proc/cpuinfo sagt das ist ein "Cyrix MediaGXtm MMXtm Enhanced". Im Moment bootet der von einer 16MB CF und mountet danach eine externe 2,5" Festplatte nach /usr. Ich bin erstaunt wie sauber und schnell das ganze System läuft(und das bei 233MHz und 160MB Ram, alles ganz klein und passiv gekühlt).

Das Booten über Netzwerk funktioniert im Prinzip auch, aber als ich das mal versucht habe hat der nur den Kernel gebootet und konnte dann das Dateisystem nicht mounten. Unter anderem auch weil auch hier kein BM einsetzbar war. Bei dem syslinux BM hat der TC zum Beispiel gemeckert, dass er keine ausführbare Binärdatei findet.

Also ich habe immer die sache mit dem PCI Adapter hier draufgehauen, ist hier sd*x, grub als BM - karte in den TC, loss ging's - in der grub console dann die devices editiert und gut war.

Du hast IMMER einen BL oder BM - nur die neuen EFI Geschichten können so ohne weiteres einen Kernel ohne BL oder BM hochziehen (theoretisch, praktisch noch nicht gesichtet).
Das einzige Problem was es gibt, das man grub eventuell patchen muss oder einen exotischen BL/BM hernehmen muss. Auch gibt es ein paar Boxen die zuerest von einer art ROM ein prob. mini System anfahren, das ist ganz übel - würde mich aber wundern, wenn es sich bei deinem TC um so ein ding handelt - findet man zumeist nur auf ED's.

BofD
2006-09-21, 22:38:14
Das einzige Problem was es gibt, das man grub eventuell patchen muss oder einen exotischen BL/BM hernehmen muss. Auch gibt es ein paar Boxen die zuerest von einer art ROM ein prob. mini System anfahren, das ist ganz übel - würde mich aber wundern, wenn es sich bei deinem TC um so ein ding handelt - findet man zumeist nur auf ED's.
Die genaue Bezeichnung von dem TC ist "IBM Netvista N2200 8363". Wenn man den TC startet, dann kann man in ein (nennen wir es mal) Bios kommen in dem man alles mögliche Einstellen kann. Unter anderem auch wo sich der Kernel befindet(Flash oder TFTP). Ich denke mal, dass der TC beim booten nicht wie ein PC nach einer gültigen Signatur im MBR sucht, sondern einen "eingebauten" Bootloader besitzt. Ich bräuchte also irgend ein BL der sich wie ein Kernel laden lässt(muss ja nicht mal Linux sein).
An BLs habe ich jetzt nur lilo, syslinux & pxelinux probiert. lilo schreibt ja nur in den MBR und wird deshalb völlig ignoriert und syslinux kann der nicht ausführen. Wie macht grub das denn? Schreibt grub auch in den MBR?

Wuzel
2006-09-22, 03:01:27
Die genaue Bezeichnung von dem TC ist "IBM Netvista N2200 8363". Wenn man den TC startet, dann kann man in ein (nennen wir es mal) Bios kommen in dem man alles mögliche Einstellen kann. Unter anderem auch wo sich der Kernel befindet(Flash oder TFTP). Ich denke mal, dass der TC beim booten nicht wie ein PC nach einer gültigen Signatur im MBR sucht, sondern einen "eingebauten" Bootloader besitzt. Ich bräuchte also irgend ein BL der sich wie ein Kernel laden lässt(muss ja nicht mal Linux sein).
An BLs habe ich jetzt nur lilo, syslinux & pxelinux probiert. lilo schreibt ja nur in den MBR und wird deshalb völlig ignoriert und syslinux kann der nicht ausführen. Wie macht grub das denn? Schreibt grub auch in den MBR?

Ähm , ich habe nur auf die schnelle http://puppylinux.abcde.biz/n2200/ gefunden, hier scheint man keine grösseren Probleme zu heben ein Lin zu booten. Ich werde morgen mich aber einmal auf die genauere Suche machen, was genau beim booten bzw, BL/BM zu beachten ist. Gibt's ja nicht, das das ganze nicht laufen sollte ..

http://www.bluetrait.com/archive/2005/08/07/installing-linux-2200-onto-the-ibm-netvista-n2200-8363

EDIT: Link hinzugefügt