Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: niknett am 19. October 2007, 13:21
-
ich hab mal aus dem magazin den kernel genommen. jetzt würde ich den gerne ausprobieren. das problem ich benutze linux und habe kein disketten laufwerk. ich dachte ich könnte vielleicht meinen usb-stick benutzen. und das ganze dann vielleicht in vmware ausführen, da ich nicht weiss was passiert wenn der Kernel nicht funktioniert und der auf meinem richtigen system läuft, ich habe das ganze system nämlich erst vor kurzem neu aufgesetzt und keine lust alles wieder neu zu machen.
Könnt ihr mir sagen ob das überhaupt geht und wenn wie das geht.
-
mhh.. bei Nero kann man ein DIskettenimage auch auf CD's brennen... ob das allerdigns in der NERO-Version für Linux auch drin ist... nachgucken, ausprobieren!
MfG
-
aber der Bootloader für eine CD ist doch komplett ein anderer, als der für eine Diskette.,.
aber mich würde es auch brennend interessieren, wie man einen USB-Stick mit seinem eigenem OS zum laufen bekommt, da bei meinem Notebook das DVD-Laufwerk futsch ist und der auch keine Diskette hat... bisher muss ich deshalb mein OS immer auf meinem alten PC testen..
Was mich vorallem interessieren würde, mit welchen Programm kann ich denn den Bootloader auf den USB-Stick kopieren....
Eigentlcih wollte ich das ja mal selber recherchieren, aber da sich das gerade hier anbietet :-D
-
das mit dem nero könnte ich ausprobieren. da hätte ich nur noch das problem mit dem image, ich weiss nicht wie man das herstellt.
ich habe meinen eigenen bootloader kopiert aus irgendeinem tutorial, warum kann ich das dann nicht auf eine normale cd oder usb-stick machen?
-
@Maxi, nein, NERO kann Disketten-Images auf CD brennen und emuliert praktisch eine Diskette... es ist zwar eigl verschwendung von CD's da nur 1,44/700Mb genutzt werden, aber wenn man ne CD nimmt die man weider löschen und neu beschreiben kann(RW, RAM?)
MfG
-
also dann müsste ich nur noch wissen wie man so ein image erstellt. danke schonmal. man muss natürlich nur noch nero finden.
-
Funst aber nur mit den "int 13h", soll heißen im RM. Also sobald du im PM/LM bist geht es nicht mehr. ^^ Also nicht dass ihr mir den FDC ansprechen wollt. *duck*
bitmaster
-
mit dd? (also das image)
MfG
btw bitmaster, klar. aber ich nehme mal gaaanz stark an das er im RM ist
-
was funst aber nur mit den int 13h? was ghet nur im rm?
ja aber ich finde keine dokumentation wie man dd benutzt.
#edit: das nero gibts jetzt nur gegen geld :cry:
-
für die dies interessiert, booten via USB-Stick funktioniert identisch mit booten von Festplatten, jedenfalls der RM-Part. ab Protected Mode müssen dann natürlich schleunigst eigene Treiber her...
Prinzipiell, Bootloader installieren normal via dd oder grub-install, bloß /dev/sda (oder wie euere USB-Laufwerke heißen) statt hda oder fd0 *g*
Für den Kernel aus Ausgabe 1 ist das alles irrelevant, der braucht ja kein I/O für Laufwerke. dd if=kernel.bin of=/dev/sda , booten, fertig. (achtung, zerstört natürlich jede Partitionstabelle und jedes Dateisystem!)
-
Der Interrupt 0x13 der in allen Bootloadern benutzt wird, um deinen Kernel von der Diskette in den Speicher lädt, damit dieser ausgeführt werden kann.
Dieser Interrupt weiss von welchem Laufwerk du gestartet bist, da er Interrupt vom BIOS angeboten wird. Und darum liest er so gut, von USB-Stick, wie vom Floppy....
Wenn du im Kernel in den PM (32 Bit Mode) springst (und das musst du wenn du was anständiges machen willst) dann kannst du keine BIOS-Ints mehr verwenden (weil die ja für 16Bit geschrieben sind) und musst deinen eigenen Treiber schreiben....Dein Floppy-Treiber kann dann keine USB-Sticks verwenden und ein USB-Treiber ist vielleicht noch ein bisschen schwer für den Anfang.
Das nützt dich nur nichts wenn dein BIOS nicht von USB-Devices starten kann...Und das können viele Notebook-BIOS nicht! Darum, zuerst mal das nachschauen.
Warum bentutzt du nicht einfach Bochs? (Oder Qemu) Das ist viel weniger umständlich als immer eine neue CD /Floppy zu machen und den Rechner neu zu starten...
Wenn du dann mal ein Release machst, dann kannst du das sicher auch auf deinem PC testen...
Nikett: wenn dein PC USB-Unterstützt kannst du auch ein externes Floppy kaufen....Ist billig und erspart viele Mühseligkeiten...(Dann kannst du das Image per Rawwrite dadrauf packen)
Übrigens einfach ins Laufwerk ziehen geht nicht, da sonst dein Bootloader ja das jeweilige Dateisystem kennen müsste...(Deshalb einen Image-Schreiber verwenden)
-
Wenn du dann mal ein Release machst, dann kannst du das sicher auch auf deinem PC testen...
Ich würd anfangs schon etwas öfter testen, da es einfach Fehler gibt, die man nur auf echter Hardware findet.
#edit: das nero gibts jetzt nur gegen geld
k3b ist ein sehr gutes Brennprogramm für Linux.
-
ja das man das einfach ins laufwerk ziehen kann ist mir klar, das muss ja im ersten sektor liegen und 512 mb groß sein. daher brauche ich ja auch ein image und ein programm das dieses image erstellt.
-
Das Stichwort lautet hier Eltorito. Und am einfachsten bekommst du das image wohl mit mkisofs. Google wird dir dazu einiges erzählen können ;-)
-
ok danke für die hilfe. ich würde jetzt eine cd/dvd mit einem image brennen un dann den computer neustarten. aber wie mache ich das mit einem image das der bootloader auch im ersten sektor ist.
-
ich hab jetzt mit mkisofs ein image erstellt und das mit k3b auf eine cd gebrannt, doch als ich den computer neugestartet hab hat er wieder von Festplatte gebootet, er ist aber eigentlich eingestellt von cd zu booten.
liegt das am image oder woran könnte es liegen?
ich habe jetzt mal versucht über qemu den kernel zum laufen zu bringen, aber mir wird immer gesagt das die images keine bootfähigen images sind. Wie mache ich sie bootfähig?
-
Hier (http://www.cip.physik.uni-muenchen.de/cipdoc/node92.html) wird zB beschrieben, wie man mit mkisofs aus einem floppy-image ein ISO Image macht. Dieses kannst dann mit k3b auf CD brennen.
btw. du musst deinem BIOS natürlich auch sagen, dass es von CD booten soll (aber ich denke das weißt du selbst) 8-)
-
das problem ist ich weis auch nicht wie ich ein floppy image erstelle. mkisofs hat eine Option das sie ein image erstellt, das dann bootfähig ist, ich weiss bloss nicht wie und das wird irgendwie nirgends richtig erklärt.
natürlich hab ich meinem bios gesagt von wo es booten soll :-)
-
Benutzt du grub?
-
soweit ich verstanden habe will er nur Bootloader+Kernel zu nem Image zusam,menfügen?
MfG
-
ich benutz noch kein grub aber ich denke ich werde das iregendwann dzaufügen, jetzt möchte ich aber einfach nur wissen wie das ganze überhaupt aussieht und wie ich bootloader und kernel zu einem bootfähigen image zusammenbekomme.
-
ohne fs, also bootloader und kernel in direkter abfolge auf dem image, ca so
cat bootloader.bin kernel.bin > osimage.bin
die osimage.bin sollte als floppyimage schon tun, ggf. in eines hineinkopieren damit die größe passt. um aus dem floppyimage ne iso zu machen, man mkisofs, oder vorherige beiträge.
-
muss ich die dateien mit bin ansprechen, weil bei mir haben die keine dateiendung.
des soll doch garantiert .img statt .bin bei osimage.bin heißen, oder?
#edit: ich glaub jetzt gehts, er vesucht jetzt jedenfalls im qemu zu booten. jedenfalls kommt nicht mehr die meldung no bootable image.
ich machs jetzt noch zu ner iso datei und dann brenn ichs mal. und probiers auf echter hardware aus.
-
Die Dateiendungen sind rein informativ für dich, die interessieren im Grunde niemanden. Du kannst auch osimage.toastbrot nehmen.
-
ich weiss nicht wie ichs zu ner iso image mache. kann mir jemandmal eben schnell ein befehl geben mit mkisofs, bitte, die meisten befehle die im internet stehen funktionieren nicht.
-
mkisofs -b osimage.bin -o cdrom.iso /tmp/
Achtung! osimage.bin muss wirklich die größe von nem Floppyimage haben, also 1200, 1440 oder 2880 kb. Vermutlich hauen deine bisherigen Kommandos deswegen nicht hin. Frag mich jetzt aber nicht wie man die Datei definitiv auf diese Größen bekommt, das hat bei mir via dd nie hingehauen, ka wieso. Was definitiv geht, wäre dd if=/dev/zero of=floppy.img bs=512 count=2880 , sowie anschließendes öffnen eines hexeditors und hineinkopieren der osimage.bin (einfach den Anfang der Datei überschreiben). Dann sollte die floppy.img anschließend wunderbar zu verwenden sein.
-
Schritt zwei durch dd if=foo.bin of=floppy.img conv=notrunc ersetzen.
-
yeah
es funktioniert jetzt in qemu, jetzt muss ich nur noch in eine iso umwandeln. das problem ist ich brauche ziemlich lange bis ich alles umgeschrieben habe in dem hexeditor.I: -input-charset not specified, using utf-8 (detected in locale settings)
genisoimage: Missing pathspec.
Usage: genisoimage [options] -o file directory ...
Use genisoimage -help
to get a list of valid options.
Report problems to debburn-devel@lists.alioth.debian.org.
kann mir dazu jemand etwas sagen, das kommt immer wenn ich mkisofs benutze. so wie ihr es mir oben beschrieben habt.
-
du gibst kein Verzeichniss mit Dateien an was alles auf das Image soll. einfach /tmp am ende... oder vorzugsweise gleich nen leeres verzeichniss.
mkisofs -b boot.img -o file.iso /tmp/
-
aber im img sind doch schon dateien, oder.
er sagt mir jetzt, dass die dateigröße nicht erlaubt ist.mkisofs -b floppy.img -o file.iso q/
I: -input-charset not specified, using utf-8 (detected in locale settings)
Unknown file type (unallocated) q/.. - ignoring and continuing.
Size of boot image is 2884 sectors -> genisoimage: Error - boot image 'q/floppy.img' has not an allowable size.
-
boot.img ist aber nur das Diskettenimage, welches zum Booten verwendet wird. Du musst natürlich noch ein Verzeichnis auswählen, welches die "sichtbaren" Dateien enthält angeben.
-
ok, jetzt weiss ich glaub wo mein fehler ist.
es funktioniert trotzdem noch nicht, er meint das das boot image zu groß ist.
-
wie hast du das den erstellt?
dd if=/dev/zero of=floppy.img bs=512 count=2880
dd if=boot.bin of=floppy.img conv=notrunc
funktioniert bei mir problemlos
-
siehe den output unten. deine image ist irgendwie 4 sektoren / 2 kb zu groß geworden. neu machen.
-
es hat funktioniert. wenn ich jetzt auf die iso datei doppelklick zeigt der mir eine boot.cat datei an und eine floppy.img, ist das richtig? ich brenns jetzt einfach mal.