Hi, ich würde gerne in einem in Assembler programmierten Bootloader auf einen USB-Stick zugreifen. Der Bootloader wird vom BIOS (bitte keine Lösungen mit UEFI) von diesem USB-Stick, auf den ich zugreifen möchte, geladen. Nun möchte ich, egal ob im Realmode über das BIOS, sofern das möglich ist, oder sonstwie im Protected Mode, das Kernel-Image (also den kompilierten Code des Kernels) in den RAM laden, und nach ausführen des Bootloaders dann an die Stelle im RAM springen, wo Kernel ist, um diesen auszuführen. Wie bekomme ich Zugriff auf den Stick? Und wie kann ich in Assembler was auf den Stick schreiben? Am besten wäre das wenn ich einfach direkt ohne spezielle Formatierung auf Adressen im Flash des USB-Sticks schreiben könnte. Außdem bin ich nicht fähig und gewillt (außer es gibt keine andere Lösung), irgendwelche hardwareabhängigen Treiber nach stundenlangem Rumprobieren selbst zu schreiben. Danke schonmal
mbr schrieb:
ich würde gerne in einem in Assembler programmierten Bootloader auf
einen USB-Stick zugreifen.
Da mbr uns nichts über sein Zielsystem verrät, kann dieser Post getrost
geschlossen werden.
Wenn im BIOS "Legacy"-Unterstützung für USB-Devices eingestellt ist, kannst Du mit den Dir wohlbekannten BIOS-Realmode-Interrupts auf den USB-Stick zugreifen. Das funktioniert nicht anders als der Zugriff auf eine Festplatte; die "Legacy"-Unterstützung gaukelt Dir nämlich genau das vor. Wie sonst sollte das BIOS Deinen Bootloader vom USB-Stick starten können? Solange Du im Realmode bleibst, sollte das für einen erfahrenen Assemblerprogrammierer wie Dich kein Problem sein.
Guck doch wie das bei GRUB gemacht wird, das kann auch von Sticks booten...
kein Moderator schrieb: > Da mbr uns nichts über sein Zielsystem verrät, kann dieser Post getrost > geschlossen werden. x86 Deine Aggression kannst du an dir selbst statt hier im Forum auslassen
Dr. Sommer schrieb: > Guck doch wie das bei GRUB gemacht wird, das kann auch von Sticks > booten... Eine einfache Antwort wäre nett Der Fragesteller dieses Threads hat zu mehr als nur 100% recht Beitrag "(Warum) ist das Forum (so) anfängerfeindlich?"
mbr schrieb: > Eine einfache Antwort wäre nett Was ist denn daran kompliziert? GRUB ist Open-Source, du kannst vermutlich Assembler, lies es da nach...
mbr schrieb: > Eine einfache Antwort wäre nett Statt zu sagen "Setz dich hin und lies dir ersrsmal den Quellcode eines relativ komplexen Bootloaders durch den du ohne Fragen stellen zu dürfen verstehen musst, sonst bist du hier falsch" könntest du mir einfach auf direkt die Lösung sagen, außer du kennst sie nicht
Und wieso anfängerfeindlich? Ein Anfänger würde so etwas nicht fragen, weil so ein Projekt nichts für Anfänger ist...
Wieso vermutest du, dass "meine" Lösung besser verständlich sei als die gewiss ausgefeilte und korrekte vom GRUB? Wenn du beim GRUB was konkretes nicht verstehst, kannst du natürlich fragen. Konkrete Fragen sind einfacher zu beantworten als allgemeine.
fast schrieb: > bringt das Popcorn, 3 2 1 los gehts War abzusehen. "mbr" muß halt noch lernen, daß der Ton die Musik macht!
Dr. Sommer schrieb: > Und wieso anfängerfeindlich? Ein Anfänger würde so etwas nicht fragen, > weil so ein Projekt nichts für Anfänger ist.. Jeder war mal ein Anfänger Und Anfänger die schnell lernen sollten nicht ausgegrenzt werden Naja dann verschwende ich eben meine Zeit mit der Suche nach den Codezeilen und auf anderen Webseiten......
Filament schrieb: > War abzusehen. "mbr" muß halt noch lernen, daß der Ton die Musik macht! war klar dass aus einer ernsten Frage ein Thread für nervige Vollpfosten wird. Wenn das so weitergeht gehe ich offline und sehe mir irgendeine Episode irgendeiner StarTrek Serie an So schwer ist das doch wohl nicht eine simple Frage zu beantworten....
mbr schrieb: > Jeder war mal ein Anfänger > Und Anfänger die schnell lernen sollten nicht ausgegrenzt werden > > Naja dann verschwende ich eben meine Zeit mit der Suche nach den > Codezeilen und auf anderen Webseiten...... Das ist doch ein Widerspruch... Wenn du lernen willst, such dir die Informationen zusammen und mach's selber. Wenn du schnell fertig werden willst, frag nach einer fertigen Lösung und setze sie ein - in diesem Fall GRUB, LiLo etc. Wer einen Bootloader selber schreibt, hat's wohl nicht so eilig. Warum überhaupt Assembler? Selbst GRUB ist in C geschrieben...
mbr schrieb: > So schwer ist das doch wohl nicht eine simple Frage zu beantworten.... Ach, du denkst das Unterfangen wäre simpel! Fehler Nummer 1... Richte dich auf eine ziemliche Arbeit ein. Du musst ja vermutlich auch das Dateisystem implementieren (FAT32 o.ä.).
mbr schrieb: > Eine einfache Antwort wäre nett Es gibt halt keine einfache Antwort. Da ist einiges zu lesen: https://www.lowlevel.eu/wiki/Eigener_Bootloader Dazu noch einen Einstieg in die Real-Mode DOS Programmierung: http://dk4ek.de/lib/exe/fetch.php/as_lehrg.pdf DOS Interrupts http://www.i8086.de/dos-int-21h/dos-int-21h.html
Beitrag #5301860 wurde von einem Moderator gelöscht.
mbr schrieb: > Wenn das so weitergeht gehe ich offline und sehe mir irgendeine > Episode irgendeiner StarTrek Serie an Mach das. Ist sicher besser für dein Ego!
Beitrag #5301870 wurde von einem Moderator gelöscht.
mbr schrieb: > Dr. Sommer schrieb: >> Guck doch wie das bei GRUB gemacht wird, das kann auch von Sticks >> booten... > > Eine einfache Antwort wäre nett Das sollte wohl eher Heiterkeit auslösen als eine ernstgemeinte Antwort auf die Frage des OP sein. Wenn man schon Code lesen will: SYSLINUX dürfte erheblich leichter sein. Lesen von Disk (Stick) mittels int 0x13 kann man sich z.B. hier anschauen: https://github.com/geneC/syslinux/blob/master/core/localboot.c Der int 13h kann IIRC auch schreiben. Wo genau ist aber eine gute Frage, zumindest wenn der Stick auch noch ein Dateisystem enthalten soll. Moderne Formatter lassen die ersten 2MB meistens frei - Bootloader wie Grub können das ausnutzen.
Beitrag #5301877 wurde von einem Moderator gelöscht.
Hier gibts einen DOS-USB-Treiber: http://hddguru.com/software/2006.02.09-USBASPI-MS-DOS-Driver/ Auf den kannst Du per ASPI zugreifen. Hier gibts die ASPI Spezifikation: ftp.isu.edu.tw/pub/Hardware/ADAPTEC/adaptec/aspi_dos.ps (Postscript-Datei, mit Ghostscript oder Acrobat oder so in PDF umwandeln) Dieser Treiber kann kein Hotplugging. USB ist sehr komplex. Du müsstest mindestens Support für UHCI, OHCI und EHCI plus die gewünschten Geräteklassen schreiben. Wenn Du das selber machen willst, sitzt Du mindestens ein Jahr dran, eher länger. Vergiss das also. Alle modernen Rechner haben UEFI. Das wäre ansonsten Dein Weg. fchk
mbr schrieb: > mbr schrieb: >> Eine einfache Antwort wäre nett > > Statt zu sagen "Setz dich hin und lies dir ersrsmal den Quellcode eines > relativ komplexen Bootloaders durch den du ohne Fragen stellen zu dürfen > verstehen musst, sonst bist du hier falsch" könntest du mir einfach auf > direkt die Lösung sagen, außer du kennst sie nicht Dann schau dir halt uboot an. x86 USB Bootloader mit dem Kenntnisstand: Viel Spaß!
mbr schrieb: > Hi, > ich würde gerne ... > > Nun möchte ich ... > > Außdem bin ich nicht fähig und gewillt ... Für mich liest sich das so: "Ich würde gerne mit dem Rad um die Welt fahren. Kommt mir bitte nicht mit einem E-Bike. Ein Motorrad/Auto/Flugzeug geht gar nicht." Entweder bist du ein Spitzenathlet auf dem Rad, und du willst von uns nun die besten/schönsten Radtouren wissen, damit du deine Reise genießen kannst. Schick uns bitte Fotos, wo du gerade bist. Frag unterwegs gerne hier im Forum nach. Oder du hast momentan keine Ahnung, wie groß die Welt ist - was jetzt nicht schlimm ist. Jene Leute, die schon Teile der Welt mit dem Rad erkundeten, versuchen dir nun zu erklären, worauf du dich da einlässt.
mbr schrieb: > Filament schrieb: >> War abzusehen. "mbr" muß halt noch lernen, daß der Ton die Musik macht! > > war klar dass aus einer ernsten Frage ein Thread für nervige Vollpfosten > wird. Naja, wie man in den Wald hineinruft … > Wenn das so weitergeht gehe ich offline und sehe mir irgendeine > Episode irgendeiner StarTrek Serie an Ich glaube ganz ehrlich, dass du deine Zeit auf diese Weise besser nutzt. > So schwer ist das doch wohl nicht eine simple Frage zu beantworten.... Die Frage "wie schreibe ich mir meinen eigenen x86-Bootloader für USB-Geräte in Assembler?" an sich mag einfach sein, aber die Antwort darauf ist es nun mal nicht, auch wenn du das gerne hättest. Wenn du dann auch keinen Bock hast, dir existierende Bootloader als Beispiel anzuschauen, weil dir das zu mühevoll ist, brauchst du dich über die Antworten eigentlich nicht wundern.
Beitrag #5302678 wurde von einem Moderator gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.