Programm starten ohne Betriebssystem-Boot, wie?


  • Mod

    Warum? Ich glaube du verstehst nicht, was das bedeutet, wonach du fragst. Verstehst du überhaupt, was ein OS überhaupt machen für dein Programm? Sagen wir mal so: Wenn du beispielsweise in C irgendein include aus der Standardbibliothek brauchst, dann ist das zu 99% irgendetwas, dass das Betriebssystem für dich macht. Du kannst nicht einmal Text ausgeben ohne OS, du müsstest das alles selber neu schreiben.

    @EinNutzer0 sagte in Programm starten ohne Betriebssystem-Boot, wie?:

    Ich möchte das auch ohne Hilfe des BIOS starten können, damit das wirklich "low-level" wäre...

    Jetzt redest du noch mehr Unsinn über Dinge, die du nicht verstehst. Ohne BIOS/UEFI bekommst du dein Programm nicht einmal in den Speicher geladen, ohne dass du vorher selber Code dafür schreibst. Und auch die Ausgabefunktionen von oben laufen nicht darauf hinaus, Zeichenketten an das BIOS zu übergeben, sondern selber mit der Grafikkarte zu verhandeln. Und damit ist nicht Anschauliches Setzen von Pixeln gemeint, sondern Verhandlungen darüber führen wie das Gerät überhaupt elektrisch angeschlossen ist.

    (Abgesehen davon, musst du dafür erst deinen eigenen Rechner löten, da ein BIOS/UEFI auf jedem Board fest eingebaut ist)

    Du hast es nicht einmal geschafft, selbstständig den dir gegebenen Links zu folgen…



  • @EinNutzer0 sagte in Programm starten ohne Betriebssystem-Boot, wie?:

    Ich möchte das auch ohne Hilfe des BIOS starten können, damit das wirklich "low-level" wäre...
    Bill Gates hat das bei IBM doch auch hinbekommen.

    Nein hat er nicht. Denn das BIOS lädt den Bootsektor in den Speicher und führt diesen aus.
    Auch stellt es rudimentäre Funktionen für die Ein-/Ausgabe auf Tastatur, Bildschirm (Textmodus), Festplatte zur Verfügung
    BIOS = Basic Input Output System

    Das MS-DOS hat sogar recht viel Gebrauch vom BIOS gemacht.

    @EinNutzer0 sagte in Programm starten ohne Betriebssystem-Boot, wie?:

    und dann in den Bootsektor platzieren kann, woraufhin dann mein Programm bootet? Und wahrscheinlich würd dann Windows nicht mehr booten.

    Es gibt Bootloader, die verschiedene Betriebssysteme (Bootsektoren) laden können. Auch Open Source. Da kannst du dich ja mal umsehen denn es sind die Art von "Programmen" die du suchst (laufen ohne Betriebssystem).



  • @EinNutzer0 sagte in Programm starten ohne Betriebssystem-Boot, wie?:

    Ich bräuchte eine Schritt-für-Schritt-Anleitung, bei der ich die Zwischenschritte sogar nachvollziehen kann.

    Dann viel Glück damit jemand zu finden der dir so eine Schritt-für-Schritt-Anleitung schreibt.


  • Mod

    @hustbaer sagte in Programm starten ohne Betriebssystem-Boot, wie?:

    @EinNutzer0 sagte in Programm starten ohne Betriebssystem-Boot, wie?:

    Ich bräuchte eine Schritt-für-Schritt-Anleitung, bei der ich die Zwischenschritte sogar nachvollziehen kann.

    Dann viel Glück damit jemand zu finden der dir so eine Schritt-für-Schritt-Anleitung schreibt.

    Gibt es ja sogar in den Sticky-Threads im OS-Forum…
    (Hier sollte eigentlich ein Kommentar über Eigeninitiative und Erfolgsaussichten für dieses Projekt folgen, aber ich bekomme ihn nicht formuliert, ohne den TE zu beleidigen)



  • @hustbaer sagte in Programm starten ohne Betriebssystem-Boot, wie?:

    @EinNutzer0 sagte in Programm starten ohne Betriebssystem-Boot, wie?:

    Ich bräuchte eine Schritt-für-Schritt-Anleitung, bei der ich die Zwischenschritte sogar nachvollziehen kann.

    Dann viel Glück damit jemand zu finden der dir so eine Schritt-für-Schritt-Anleitung schreibt.

    Schon gut, wer nicht helfen möchte, muss es auch nicht. Kein Grund, unfreundlich demgegenüber zu werden...



  • @EinNutzer0
    Ich glaube, du bist dir über die Tragweite und Komplexität deiner Frage nicht im Klaren.
    Das ist in etwa die gleiche Kategorie wie "Ich möchte gern Auto bauen, kann mir jemand Schritt für Schritt erklären, was ich da tun muss?" Die Rede ist hier von "Bauen", und nicht von "Zusammenschrauben".



  • @EinNutzer0 sagte in Programm starten ohne Betriebssystem-Boot, wie?:

    Schon gut, wer nicht helfen möchte, muss es auch nicht. Kein Grund, unfreundlich demgegenüber zu werden...

    Rezept mit Mengenangaben: Writing an x86 "Hello world" bootloader with assembly



  • @EinNutzer0 Ja, es geht um das was @DocShoe geschrieben hat. Gut, ein Auto von Grund auf zu bauen ist mehr Aufwand als ein selbst bootendes Programm das zwei Zahlen einlesen, addieren und das Ergebnis wieder ausgeben kann. Aber einiges an Arbeit ist es trotzdem. Und es erfordert halt einiges an Kenntnissen. Das nach einer einfachen "Java für Dummies in 21 Tagen" Anleitung Schritt für Schritt abzuarbeiten bringt dir auch nichts. Wenn du weiter in dem Bereich tätig sein willst dann musst du dir das Hintergrundwissen sowieso erarbeiten. Und wenn nicht, wieso willst du es dann machen? Und wenn die Antwort darauf "aus Spass an der Sache" ist, na dann mach mal. Aber selber. Erwartet dir nicht dass dir jemand so spezielles und auch gar nicht triviales "Spass an der Sache" Projekt vorkaut.

    Hier meine Schritt für Schritt Anleitung für dich:

    • Entscheide dich für BIOS vs. UEFI. BIOS ist veraltet, dafür aber relativ einfach. Wie aufwendig es mit UEFI wird kann ich nicht sagen. Mag sein dass es sogar einfacher ist, mag sein dass es viel schwieriger ist.
    • Google dir raus wie man Bootcode für den Firmware-Standard deiner Wahl schreibt.
    • Lern die Sprache mit der du das machen kannst (bei BIOS geht quasi nur Assembler).
    • Schreib das 7 + 7 Programm.
    • Google dir raus wie man den Bootcode auf einen Datenträger bekommt so dass man mit dem Firmware-Standard deiner Wahl davon booten kann.
    • L1: Übersetze den Bootcode, schreib ihn auf den Datenträger und boote davon.
    • Google dir raus wie man Bootcode debuggen kann damit du den den Crash/Fehler den du gerade erlebt hast finden und beheben kannst.
    • Beheb den Fehler.
    • Goto L1

    Tip: Um bei dem ganzen Prozess nicht irre zu werden verwende zum Testen eine Virtual-Machine. Also VirtualBox, Hyper-V, VMware Player - irgendsowas.

    Und nochwas: Das 7 + 7 Programm sollte noch relativ einfach sein, weil du es komplett im Bootcode unterbringen kannst. Sobald du mit dem Bootcode nicht mehr auskommst, wird es allerdings ungleich viel schwerer.



  • Noch ein Tip: Sowas debuggt man am besten mit printf Debugging. Ein Emulator/Hypervisor mit eingebautem Debugger ala QEMU wäre auch eine Möglichkeit. Und für Härtefälle kann man die VGA Farbregister verwenden. Evtl. auch IO port 80, falls man einen Emulator/Hypervisor hat der "POST codes" anzeigen kann.



  • @hustbaer sagte in Programm starten ohne Betriebssystem-Boot, wie?:

    BIOS ist veraltet, dafür aber relativ einfach. Wie aufwendig es mit UEFI wird kann ich nicht sagen.

    Das sollte doch so einen Legacy Modus haben. In dem sollten die BIOS Interrupts gehen.



  • Ja, eh, den Legacy-Modus meine ich ja wenn ich "BIOS" schreibe. Reines BIOS hat je quasi kein aktuelles Mainboard mehr.

    Ich weiss aber nichtmal ob das noch alle aktuellen Boards können. Vermutlich. Aber dann ist gleich die nächste Frage: wie lange noch.



  • @hustbaer sagte in Programm starten ohne Betriebssystem-Boot, wie?:

    Wie aufwendig es mit UEFI wird kann ich nicht sagen. Mag sein dass es sogar einfacher ist, mag sein dass es viel schwieriger ist.

    UEFI ist recht nah an der Vorstellung von EinNutzer0. Es wird ein PE Executable von einer FAT32 Partition geladen und gestartet. Man hat zwar immer noch auf die Standardbibliothek verzichten, aber nicht mehr mit rohen Binaries arbeiten.


  • Mod

    @Tobiking2 sagte in Programm starten ohne Betriebssystem-Boot, wie?:

    @hustbaer sagte in Programm starten ohne Betriebssystem-Boot, wie?:

    Wie aufwendig es mit UEFI wird kann ich nicht sagen. Mag sein dass es sogar einfacher ist, mag sein dass es viel schwieriger ist.

    UEFI ist recht nah an der Vorstellung von EinNutzer0.

    Naja, EinNutzer0 hat ganz explizit danach gefragt, wie das denn ohne BIOS ginge. Das ist in der Analogie nicht nur das Auto selber bauen, sondern mit Steinzeitmitteln angefangen sich ohne Hilfe den gesamten Technologiebaum hocharbeiten, bis man selber Aluminiumbleche formen kann, selber Gummi pressen kann, und selbst Benzin raffinieren kann.

    Es ist dann sogar praktisch noch eine Stufe schlimmer, da man im normalen Handel gar keine Hardware ohne jedes BIOS finden wird, man sich also erst einmal Spezialhardware besorgen muss, auf der man eigene Firmware flashen kann. Also quasi auch noch die Straße für das selbstgemachte Auto bauen.



  • @SeppJ

    Naja, EinNutzer0 hat ganz explizit danach gefragt, wie das denn ohne BIOS ginge.

    Ja, stimmt, hat er. Und da wirds dann natürlich richtig krass, das stimmt auch. Wobei "ohne BIOS" auch schwammig formuliert ist. Weil streng genommen müsste man dann auch auf die Hardware-Initialisierung sowie das Laden und Anspringen des Bootcodes verzichten. D.h. er müsste sein eigenes BIOS programmieren und flashen.

    So lange "nur" gemeint ist dass er im Bootcode keine BIOS Funktionen verwenden möchte, ist es zumindest denkbar. Aber immer noch sehr viel für jemanden der nicht die nötigen Kenntnisse hat sich das selbst zu ergoogeln und daher in einem Forum nachfragen muss.



  • Mal aus einer anderen Perspektive gefragt:
    Es gibt doch auch BIOS/UEFI-Firmeware Updates... Wie machen die Hersteller diese?


    @SeppJ sagte in Programm starten ohne Betriebssystem-Boot, wie?:

    Das ist in der Analogie nicht nur das Auto selber bauen, sondern mit Steinzeitmitteln angefangen sich ohne Hilfe den gesamten Technologiebaum hocharbeiten, bis man selber Aluminiumbleche formen kann, selber Gummi pressen kann, und selbst Benzin raffinieren kann.

    + Polymere/Kunststoff synthetisieren... 😏

    Gut... Mein Vorhaben ist zu hoch gegriffen... Wenn es vorerst mit UEFI funktionieren würde, wäre das schon toll.


  • Mod

    @hustbaer sagte in Programm starten ohne Betriebssystem-Boot, wie?:

    So lange "nur" gemeint ist dass er im Bootcode keine BIOS Funktionen verwenden möchte, ist es zumindest denkbar. Aber immer noch sehr viel für jemanden der nicht die nötigen Kenntnisse hat sich das selbst zu ergoogeln und daher in einem Forum nachfragen muss.

    Das fände ich sogar noch schwieriger, wie würde ich das überhaupt machen?



  • @hustbaer ob man ohne BIOS mit 500 Byte Code auskommt?
    Schon zum Nachladen der nächsten Sektoren braucht man wieder das BIOS. 🤔



  • also beim msp430 hat man 128 kb, das ist so ungefähr das 256-fache (tip, tip, tip!). außerdem muss man sich nicht mit software-interrupts abärgern. 🙄



  • @Wade1234 sagte in Programm starten ohne Betriebssystem-Boot, wie?:

    also beim msp430 hat man 128 kb,

    Bootsektor auf der Festplatte?



  • nein die sind da meine ich direkt im controller vorhanden, also abzüglich des hauptprogramms natürlich (das müsste glaube ich der cache sein).

    wenn man daten von der festplatte lesen will, muss man diese natürlich anschließen und mittels P1OUT und P1IN bzw. zeigern auf die entsprechenden, dem manual zu entnehmenden, adressen den festplattencontroller ansprechen. aber dann kann man auch die komplette festplatte als "bootsektor" nehmen, wenn man das entsprechend programmiert bekommt. 🙄

    rein theoretisch müsste das übrigens auch mit den neuesten prozessoren von amd und intel funktionieren, aber da kann der technische support dann besser helfen, wie man die an seine lötplatine anschließt. 😃


Log in to reply