Programm starten ohne Betriebssystem-Boot, wie?



  • 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.


  • Gesperrt

    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. 😃



  • @Wade1234 Ok, Flash-Speicher.
    Das wäre beim PC letztendlich das BIOS. Der Vergleich hinkt doch etwas.



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

    @hustbaer ob man ohne BIOS mit 500 Byte Code auskommt?

    Ja, wird schwierig. Könnte sich aber u.U. ausgehen. Ich weiss nicht wie viel Code ohne BIOS nötig ist um die Grafikkarte in einen definierten Text-Mode zu bringen. Bzw. ob beim Booten über BIOS die Graka nicht sowieso in einem brauchbaren, definierten Text-Mode ist wenn der Boot-Code ausgeführt wird. Buchstaben in den Text-Mode Screen-Buffer zu schreiben ist denkbar einfach und wenig Code. Zeichen von der Tastatur lesen ... hm. So lange man dafür keinen Interrupt-Handler programmieren muss (polling?) sollte das auch relativ kompakt gehen. Mehr als die Ziffern sowie Grundrechenarten muss ja nicht gehen. Und beim Parsen + Konvertieren des Inputs muss halt man sehr kompakten (und dadurch vermutlich greislichen, unleserlichen) Code schreiben.

    Schon zum Nachladen der nächsten Sektoren braucht man wieder das BIOS. 🤔

    Genau.



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

    @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?

    Ich meinte damit: Er lässt sich den Bootcode vom BIOS aus dem Bootblock laden, verzichtet in seinem Bootcode aber auf BIOS Funktionen. Wie man das machen kann sollte klar sein: Grafikkarte und Keyboard-Controller direkt ansprechen.

    Aber ich vermute mal deine Frage basiert auf einem durch meine mehrdeutige Formulierung entstandenen Misverständnis...?



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

    Ich weiss nicht wie viel Code ohne BIOS nötig ist um die Grafikkarte in einen definierten Text-Mode zu bringen.

    Ich bin mir nicht sicher, wie das bei x86 artigen Systemen ist, aber evtl. muss man schon das RAM initialisieren, bevor man das benutzen kann.
    Und evtl. muss man auch das PCI System initialisieren, die Grafikkarte finden, der Interrupts und I/O Adressen zuweisen, bzw. deren Firmware ausführen. Ansonsten kann man evtl. gar nichts ausgeben.



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

    Er lässt sich den Bootcode vom BIOS aus dem Bootblock laden,

    Soweit ich das in Erinnerung habe, ist das nur ein Sektor, also 512 Byte. Den Rest muss dieser Sektor nachladen.



  • @Mechanics Ne, ich meine ja in dem Fall dass man den Bootblocksektor vom BIOS laden und ausführen lässt, im Code des Bootblocksektors dann aber auf BIOS Funktionen verzichtet. Und da muss man garantiert kein RAM initialisieren. DOS hätte z.B. auch nicht gewusst wie es das anstellen soll.

    Wenn er natürlich ganz ohne BIOS auskommen will, dann muss er viel mehr machen. Nur dann hat er auch wesentlich mehr als 512 Byte zur Verfügung, da er dann ja das BIOS ersetzen muss -- wie will er sonst "booten"?



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

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

    Er lässt sich den Bootcode vom BIOS aus dem Bootblock laden,

    Soweit ich das in Erinnerung habe, ist das nur ein Sektor, also 512 Byte. Den Rest muss dieser Sektor nachladen.

    Ja, ich hab mit so nem Zeugs am Amiga angefangen. Da hat das jeder als Bootblock bezeichnet, und der war halt einfach 512 Byte gross weil 1 Block 1 Sektor war. Aber ja, ich meine schon den Boot-Sektor.


  • Mod

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

    Aber ich vermute mal deine Frage basiert auf einem durch meine mehrdeutige Formulierung entstandenen Misverständnis...?

    Hauptsächlich auch an einer gesunden Portion Unwissen, in welchem Zustand der PC genau ist, nachdem das BIOS zwar gelaufen ist, man es aber nicht benutzen will. Ich bin mir gar nicht so sicher, was man dann überhaupt wie genau machen kann und was nicht (wenn man hingegen selber das BIOS schreibt, hat man es ja voll unter Kontrolle). Nun, Betriebssysteme der neueren Bauart (aka neuer als sagen wir mal 20-25 Jahre) gehen AFAIK auch so früh wie möglich in einen Zustand über, wo sie das BIOS überhaupt nicht direkt nutzen, aber die sind ja auch nicht gerade einfach, selber zu programmieren.

    Die Zeiten, wo es nützlich war, solche Details zumindest grob zu wissen, sind lange vorbei, daher habe ich mich lange nicht mehr damit beschäftigt. Man merkt in diesem Thread ja auch, dass irgendwie niemand weiß, was UEFI genau macht und das ist auch nicht gerade mehr neu 🙂


Anmelden zum Antworten