fdsik: Class / Geom not found,TinyBSD image auf USB klappt nicht

Flex6

Well-Known Member
Hallo!
Ich hab glaube mehrere Probs,
1. fdisk, und erstelle eine Partition auf dem Stick erscheint am Ende von fdsik die Fehlermeldung:
fdisk: Class not fount. und das macht sich auch bemerkbar in dem die Meldung Geom not match erscheint beim einstecken des Sticks und ich mit dd nicht das Image von tinybsd auf den stick krieg. TinyBSD ertsellt das Image so/hängt es ein:
dd if=/dev/zero of=${VNODEFILE} count=${SECTUNIT}

MD=`mdconfig -a -t vnode -f ${VNODEFILE} -x ${SECTRACK} -y ${TRACKCYL}`

diskinfo -v /dev/${MD}

fdisk -I /dev/${MD}
fdisk /dev/${MD}
cp -p /boot/boot0 ${WORKDIR}/boot/boot0
bsdlabel -w -B /dev/${MD}
newfs -O2 -U /dev/${MD}a
mount /dev/${MD}a ${IMGMNT}
es partitioniert auch auf Partion 1, Partition 2,3,4 ist "unused", und auf dem Stick ebenfalls, beide sind gleich. Image hat die Größe des Sticks. Ich hab auch bißchen in den Listen gesucht und man hat schon bei 8.0 das Problem von TinyBSD und fdisk angesprochen aber nicht gelöst. Das Problem exestiert aber noch und es gibt auch unter google ein Sack voll Einträge. Dazu ist bei der ganzen Sache bsdlabel auch nicht unproblematisch und spinnt etwas. Generell ist so das dd das Image nicht auf den Stick kriegt, das Lämchen am Stick blinkt sich tod, hänge ich das Image nach md0 ein ist das Sache von 4Sekunden und auch übertragene Byte-Zahl stimmt.

2. mit dem Stick hab ich gesetzt:
kern.geom.debugflags=16 hab ich gesetzt,
das in die loader.conf:
geom_bsd_load="YES"
geom_label_load="YES"
geom_mbr_load="YES"

aber nicht geholfen.
normal soll das Image nur mit dd if=image.name of=/zu/Device übertragen werden.
Vielleicht hat jemand ein Idee, eventeull alles durch gpart ersetzen oder so.
 
Zuletzt bearbeitet:
da müsste ich nun nachsehen, was TinyBSD denn ist. Das will ich nicht, drum lass mich einfach fragen:
Hast du schon ein fertiges Image für einen Stick?
Dann kannst du das ohne alle Vorarbeit mit dd if...of auf deinen Stick bringen (wenn Ziel > Quelle) und fertig ist.
Hst du kein Image für einen Stick, aber vielleicht ein iso-Image?
Dann kannst du das mounten (mdconfig....), einen Stick einsetzen und mittels bsdlabel -w -B und mit newfs vorbereiten und bootbar machen und evtl ein Label setzen und dann einfach von dem gemounteten iso nach dem gemounteten Stick die Dateien kopieren (rsync).
Hast du kein Image und musst dieses erst irgendwie aus deinem laufenden System erstellen, dann hast du dazu bestimmt eine Anleitung. Jenachdem, was du da baust, wäre nämlich die Vorgehensweise unterschiedlich.
In deinem Script von oben wird ein MD-Gerät erstellt und wie ein Stick angelegt und darauf dann ein System erzeugt. Wenn dieses steht, dann kannst du daraus mittels dd einen Klon erzeugen, der dann quasi dein Image für einen Stick darstellt. Natürlich (denke ich mir) könntest du ja auch direkt alles passend auf den Stick bringen und brauchst dazu dann kein MD-Gerät.
Ich habe das so ähnlich wie oben gemacht, als ich von dem bootonly.iso ein Image für einen Stick erzeugte. Da wollte ich als MD-Gerät einen Ersatz-Stick haben, dessen Größe etwa gleich groß zum Iso-Image war. Hätte ich einen vorhandenen Stick benutzt und die Daten des Iso-Image gleich darauf gelegt, dann wäre anschließend mein (dd)-Klon ja so groß gewesen, wie mein benutzter Stick und das wäre zu viel zum Hochladen gewesen. Deshalb ging ich den Umweg über das MD-Gerät. Doch ich sehe derzeit gerade nicht, warum du das solltest.
 
danke.
Ich hab ein fertiges image.Aus dem Log von TinyBSD ist wohl hier der Hund begraben.
/dev/md0
512 # sectorsize
262144000 # mediasize in bytes (250M)
512000 # mediasize in sectors
0 # stripesize
0 # stripeoffset
250 # Cylinders according to firmware.
64 # Heads according to firmware.
32 # Sectors according to firmware.

fdisk: invalid fdisk partition table found
fdisk: Geom not found: "md0"
******* Working on device /dev/md0 *******
******* Working on device /dev/md0 *******
parameters extracted from in-core disklabel are:
cylinders=250 heads=64 sectors/track=32 (2048 blks/cyl)

wenn ich diskinfo -v /dev/da0 (also mein Stick habe ich die gleichen Werte von Cylinder/Sector/Head und mediasize wie das Image. Probs ist auch, ich benutz sysinstall und fdisk zeigt andere Werte und erstellt auch andere wie bsdlabel -w -B, und beim schreiben auf den Stick der Partitionstabelle kommt irgendeine Fehlermeldung: ufs warning. lösche ich alles auf den Stick und benutz bsdlabel legt es in der richtigen Größe das Label an, ich krieg aber trotzdem das Image mit dd nicht drauf.

#
hab ich den Braten doch noch in die Röhre bekommen:
den Stick richtig löschen, erste Probs, fdisk kann schlecht eingebrannte Einträge entfernen,
ich hab so gemacht:
1. dd if=/dev/zero of=/dev/mein Stick bs=20480 count=100
2. bsdlabel -w -B /dev/mein Stick
3. bsdlabel -e /dev/mein Stick, Eintrag unter fstype 4.2BSD und speichern
4. newfs -O2 -U /dev/mein Stick
5. image mit: dd if=mein image of=/dev/mein Stick bs=64k draufgebraten.
Kernel bleibt zwar beim noch booten stehen aber das ist andere Sache.
 
Zuletzt bearbeitet:
mach ich hier weiter,
der Kernel bleibt beim booten stehen.
Loading /boot/boot/kernel bißchen bla bla
can't open '/boot/beastie.4th' no search file or directory -> ist aber da und liegt unter /boot/beastie.4th
Hit Enter bißchen bla bla
/boot/kernel/acpi.ko text=paar Zahlen , und in der nächsten Zeil bleibt stehen.
/ Ende
 
Zuletzt bearbeitet:
ok.
Zunächst mal dazu.

dd if=/dev/zero of=/dev/mein Stick bs=20480 count=100
beschreibt einen Teil deines Sticks mit Nullen. Damit sind solche Einträge, wie etwa der MBR gelöscht. kurz, der Stick wird "genullt".

dd if=mein image of=/dev/mein Stick bs=64k
bringt dein Image auf den Stick, basta!
Alles andere, was du dazwischen gemacht hast, hättest du dir sparen können.
Dieses Image wird Bitweise so auf den Stick gebracht, wie es von einem bestehenden System erzeugt wurde. Du hast also einen Klon eines bestehenden Systems, inklusive Größe und Dateisystem. Wenn dein Stick 8G groß ist und dein Image von einem 512M Stick erzeugt wurde, wird dein Stick nun auch als 512M erscheinen, denn es wurde eben alles mit übertragen. Auch der MBR mit Partitionstabelle.
Alle Partitionen und Filesystem, die du erzeugt hast, sind verloren.

Mehr Flexibillität könnte es bringen, wenn du dein Image lokal auspackst (gegebenenfalls per dd auf ein MD-Gerät und dann mounten), deinen Stick mit einem Dateisystem bootbar anlegst und dann die Daten wieder kopierst (rsync), wie ich das für das .iso-Image schon mal erwähnte. Dazu musst du aber ziemlich genau wissen, was du willst und tust.
Das Nullen des Sticks vor dem eigentlichen dd ist ncht unbedingt nötig, weil ja dein Image den Stick nun neu anlegt. Es schadet aber sicher auch nicht.
 
mach ich hier weiter,
der Kernel bleibt beim booten stehen.
Loading /boot/boot/kernel bißchen bla bla
can't open '/boot/beastie.4th' no search file or directory -> ist aber da und liegt unter /boot/beastie.4th
Hit Enter bißchen bla bla
/boot/kernel/acpi.ko text=paar Zahlen , und in der nächsten Zeil bleibt stehen.
/ Ende

can't open '/boot/beastie.4th' no search file or directory -> ist aber da und liegt unter /boot/beastie.4th

wie siehst du das?
mountest du den Stick und siehst dir alles an?
Vergleich mal, ob die Dateien wirklich da sind und auch gleich mit deinem System sind und die gleichen rechte haben.
Meist, wenn so ein Verhalten sich zeigt, ist entweder das benutzte Image oder der verwendete Stick defekt. Überprüf also auch mal dein Image und den Stick.
Wenn TinyBSD auch eine entsprechende Auswahl beim Booten bietet, kannst mal ohne ACPI versuchen zu booten.
Es könnte auch sein, dass dein Image nicht zu deiner Rechner-Architektur passt, auf der du es nun booten möchtest. Dann passieren mitunter ähnliche Dinge.
 
Hallo, eventuell noch die /etc/fstab anpassen. Der Rest müsste eigentlich stimmen.
Siehe z.B. http://forums.freebsd.org/showthread.php?t=11107

Code:
dd if=/dev/zero of=/dev/da0 bs=1k count=1
bsdlabel -Bw da0 auto
newfs -L FreeBSD /dev/da0a
mdconfig -a -t vnode -f X.Y-IMGFILE -u 0 && mount -r -t cd9660 /dev/md0 /mnt/iso
mount /dev/da0a /mnt/USB-Stick

copy all files from your mounted cd in to your USB-Stick, after that you need to create a fstab for your USB-Stick

[B]vi /mnt/USB-Stick/etc/fstab and put following in:
/dev/ufs/FreeBSD / ufs ro 0 0[/B]

Desweiteren verhalten sich manche Sticks wirklich echt bockig. Wenn möglich doch mal nen anderen probieren?
 
ja, aber: die Aufgabenstellung ist jeweils verschieden.
Vollkommen klar: wenn ein System direkt auf einen Stick gebracht wird oder ein gemountetes System auf einen entsprechend vorbereiteten kopiert wird, dann muss nachher die fstab (und möglicherweise noch ein paar mehr, rc.conf zum Beispiel) angepasst werden, wenn davon gebootet werden soll.

Wenn aber ein Image vorliegt, das mit dd auf den Stick geschrieben wird, dann nicht. Also, wenigstens nicht im ersten Schritt und nicht die fstab. Booten sollte das Image, oder es funktioniert halt nicht. Die rc.config und andere können dann auch im laufenden System angepasst werden. Die fstab stimmt aber, weil sie ja für dieses Image gültig war.

Wenn ein iso-image vorliegt und nun dieses auf einen Stick gebracht werden soll, kann das natürlich auch gelten. Das hängt von dem Image ab. Das bootonly.iso oder livefs.iso zum Beispiel enthält gar keine /etc/fstab. Trotzdem kann es von einem Stick booten, der entsprechend vorbereitet wurde. Es geht aber nicht, ein iso einfach per dd auf einen Stick zu schreiben (? meiner Meinung nach) und dann davon booten zu wollen.
 
Im Image ist unter /boot alles da, loader.rc,beastie.4th , sagt aber aber die Dateien fehlen, nach laden von acpi.ko bleibt der Kernel stehen und nichts geht mehr.

mit dem übertragen des Images,der Stick muß vorbereitet sein sonst geht die Übertragung schief, habs selbst noch ohne diese und jene Option probiert und das hat nicht geklappt. Fehler war vielleicht, ich hätte ihn nach jeder schiefgegangenen Übertragung mit FAT vormatieren sollen. Probier ich mal noch.

Ich brauch erstmal Kaffee.
 
Zuletzt bearbeitet:
Wahrscheinlich reden wir irgendwie aneinander vorbei.
Eine kurze Suche nach TinyBSD habe ich dann mal durchgeführt. Dabei fand ich kein fertiges Image, sondern eine Anweisung, wie ein solches Image aus den Quellen selbst gebaut werden kann. Beim ersten Durchlesen habe ich das nicht verstanden, es ist nicht ganz unaufwändig.

Deshalb nochmal nachgefragt:
Woher hast du dein Image?
Was für ein Image ist das denn, wie kannst du es denn mounten?
Diese Fragen lösen vielleicht nicht dein Problem, aber ich verstehe es damit vielleicht besser, was du eigentlich gemacht hast. Denn, glaub mir, dd if=irgendwas of=/dev/dein_stick macht dir deine vorher gebaute Partitionierung und dein Dateisystem kaputt. Die Information zu deinen Partitionen liegt (bei MBR, davon gehe ich mal aus) in den ersten 512Byte und wenn du diese überschreibst (genau das macht dd), ist sie futsch.

Wenn dein Problem so genau immer bei acpi.ko auftritt, hast du vielleicht eine HW, die nicht acpi verträglich ist. Du kannst das im Bios mal nachsehen und vielleicht umstellen und dann natürlich bei deinem System ohne acpi booten.
Du kannst vielleicht mal einen anderen Stick probieren?

Ich glaube nicht, dass FAT formatieren besser ist, als mit Nullen zu beschreiben.

Ich kopiere hier mal noch einen Text, dem ich auch schon mal gefolgt bin und mit dessen Hilfe ich eine eingebaute CF-Kart oder einen USB-Stick aus meinem AMD64 mit einem i386 FreeBSD bestückt hatte. Das war bei mir vermutlich noch mit FreeBSD 6.3, aber alles Wesentliche sollte unverändert geblieben sein. (da steht auch schon eine Bemerkung zu TinyBSD, sieh an).
Das soll keine Alternative für dich sein, aber vielleicht eine Möglichkeit, mit einem anderen Verfahren zu testen, ob damit vielleicht dein Stick funktioniert.
Eine weitere Alternative könnte dann noch das memstick-Image sein, wenn dein Stick groß genug ist. mein Klon des bootonly für den Stick habe ich hier stehen: http://weispit.eu/8.2-RELEASE_bootonly.stk und das sollte mit dd if=/pfad/zu/bootonly.stk of=/dev/dein_stick bs=16384 ein etwa 50MB bootbares System auf einen Stick bringen. Die md5 und sha Summen habe ich dort auch gelistet. Ich habe dieses 8.2-RELEASE noch nicht getestet. Wie gesagt, das soll nur mal Möglichkeiten zeigen, um die generelle Funktion des Sticks zu testen. Ich werde meinen Test gleich nachholen, denn ich möchte natürlich nicht, dass du evtl mit einem nicht funktionierenden Image spielst.
Wenn es ja wirklich irgendwo klemmt, hilft nur systematisches Vorgehen oder wildes Herumprobieren. Die Erfolgsaussichten liegen langfristig höher bei systematischem Vorgehen.
Building bootable FreeBSD/i386 images
From time to time I hear people complain at how hard it is to build an image from the FreeBSD sources. This week, I'll explain how I built a bootable i386 image on a USB flash device and also make some observations about the results.

Recently, I needed to create a bootable i386 image. The easiest way was to build one on my amd64. Here's what I did. I setup my environment for the build (steps 1-3), built FreeBSD/i386 userland and kernel (steps 4 and 5), prepared the flash (steps 6-11), installed userland and the kernel (steps 12 and 13), added the extra files needed for boot (steps 14-18). The detailed commands follow:

setenv MAKEOBJDIRPREFIX /blah
setenv TARGET i386
setenv TARGET_ARCH i386
make buildworld
make buildkernel KERNCONF=GENERIC
fdisk -I da0
fdisk -B da0
bsdlabel -w da0s1 auto
bsdlabel -B da0s1
newfs /dev/da0s1a
mount /dev/da0s1a /mnt
make installworld DESTDIR=/mnt
make installkernel DESTDIR=/mnt KERNCONF=GENERIC INSTALL_NODEBUG=t
make distrib-dirs DESTDIR=/mnt
make distribution DESTDIR=/mnt
echo /dev/da0s1a / ufs rw 1 1 > /mnt/etc/fstab
echo ifconfig_DEFAULT=DHCP > /mnt/etc/rc.conf
echo hostname=demo >> /mnt/etc/rc.conf

I put all this on an SD card and inserted that into an usb adapater and booted the laptop with it. FreeBSD's base system isn't too big these days, only 205MB for a full system.

% df /mnt
Filesystem 1024-blocks Used Avail Capacity Mounted on
/dev/da0s1a 484822 205570 240468 46% /mnt

This can easily be trimmed, but with a 512MB SD card for $5 at Office Max, there's little point in trimming for the project I needed the flash for. I just needed something that I could boot to transition my FreeBSD/amd64 laptop to a FreeBSD/i386 laptop.

If one needed to reduce the amount of space used by an installation, then there's a number of options than can be used to reduce the footprint of the system. In my experience, it is best to build everything without these options, then use the WITHOUT_* options on the installworld step to keep the image size down. It is easy to cut FreeBSD's footprint in half with these options. In addition, the kernel is 28MB with all its modules, and this can easily be reduced below 5MB in most cases.

nanobsd can be used to automate this process, as can TinyBSD. I'll save for another column the techniques I have used in the past to reach 16MB.
Posted by Warner Losh
 
ok, das kleine bootonly scheint zu funktionieren.

Code:
da0: <Ut163 USB2FlashStorage 0.00> Removable Direct Access SCSI-2 device
da0: 40.000MB/s transfers
da0: 963MB (1974271 512 byte sectors: 64H 32S/T 963C)
GEOM: da0: media size does not match label.
pit@syo ~:-> su
Password:
senyo# dd if='/home/pit/FTP-SPIEGEL/8.2-RELEASE_bootonly.stk' of=/dev/da0 bs=16384
3200+0 records in
3200+0 records out
52428800 bytes transferred in 163.452883 secs (320758 bytes/sec)
danach habe ich einen MSI-Wind Netbook von diesem Stick gebootet und schließlich die Installation abgebrochen. Das ist also i386er HW und das sollte gelingen.
Der Stick wird bei mir nicht von HAL automatisch erkannt und eingebunden. Die Ausgabe von dmesg zeigt auch etwas, wie GEOM: da0: media size does not match label. Vielleicht deshalb. Manuell habe ich noch nicht versucht, diesen Stick zu mounten. Hmmh, warum eigentlich nicht?
Code:
senyo# pwd
/usr/home/pit
senyo# mount /dev/da0a usb
senyo# ls usb
.snap           boot            boot.catalog    cdrom.inf
senyo# mount | grep da0a
/dev/da0a on /usr/home/pit/usb (ufs, local)
geht also auch.
Lass es mich nochmal sagen: das soll nur zeigen, wie ein Image für einen Stick auf einen Stick geschrieben wird und dann davon bootet. Der Stick muss nicht vorbereitet werden. Wenn das bei dir nicht geht, hast du vermutlich ein HW Problem. Entweder Stick, oder PC.

Wenn es aber geht, ist das ein guter Ansatz bei deinem eigentlichen Problem weiter zu machen.
 
ja, danke
Ich probiere diesen Weg mal aus. Eigentlich ist deine vorgeschlagenen Methode die einfachste. von allen.
Gruß
Jens
 
ok.
Zunächst mal dazu.

dd if=/dev/zero of=/dev/mein Stick bs=20480 count=100
beschreibt einen Teil deines Sticks mit Nullen. Damit sind solche Einträge, wie etwa der MBR gelöscht. kurz, der Stick wird "genullt".

dd if=mein image of=/dev/mein Stick bs=64k
bringt dein Image auf den Stick, basta!
Alles andere, was du dazwischen gemacht hast, hättest du dir sparen können.
Dieses Image wird Bitweise so auf den Stick gebracht, wie es von einem bestehenden System erzeugt wurde. Du hast also einen Klon eines bestehenden Systems, inklusive Größe und Dateisystem. Wenn dein Stick 8G groß ist und dein Image von einem 512M Stick erzeugt wurde, wird dein Stick nun auch als 512M erscheinen, denn es wurde eben alles mit übertragen. Auch der MBR mit Partitionstabelle.
Alle Partitionen und Filesystem, die du erzeugt hast, sind verloren.
.

Das geht auch anders, wenn anstelle des dd - Images ein dump benutzt wird.
Vorraussetzung ist ein md image (mit ufs, weil zfs kein dump kann ), auf dieses md image mit enstprechenden DESTDIR=... optionen das OS installiert, umount, dump md(n) > dumpfile. Ergibt ein wiederverwendbares Image. Das Ganze dann mittels restore auf den Usbstick. So bleibt die Grösse des Sticks erhalten. (Irgendwann auf fbsd-stable gelesen und erfolgreich getestet )
hth
 
und deshalb hatte ich unter anderem ja auch gefragt, was für ein Image das denn ist und ob es überhaupt für einen Stick gedacht ist.
Die Methode, die du erwähnst, kenne ich zwar nicht und zu meiner Schande muss ich gestehen, dass ich dump / restore noch nie benutzt habe, aber das, was du beschreibst, leuchtet mir ein.
 
Zurück
Oben