Bootloader

Bootloader

Beitragvon TomCat » Mo 6. Jun 2016, 12:20

Hallo,

ich möchte ein einzelnes Programm ganz ohne Betriebssystem laufen lassen.
Dazu soll ein selbstgebauter Bootloader dieses Programm in den Speicher laden und ausführen.
D.h. das eigentliche Programm könnte dann einfach in bestimmten Sektoren der Festplatte gespeichert sein. Auf der Festplatte befindet sich dann nur der Bootloader und das Programm.

Ist so was möglich?
Hat das jemand hier schon mal versucht bzw. realisiert?

THX
TomCat
TomCat
MemMaker-Benutzer
 
Beiträge: 87
Registriert: Do 1. Dez 2011, 17:16

Re: Bootloader

Beitragvon Heilbar » Mo 6. Jun 2016, 12:46

Vielleich entschlüsselst du ein Bootloader aus einem vorhanden Programm. Damals gab es ja nur so etwas und nannte sich PC Booter. Das neuste ist dieses Schach
http://www.mobygames.com/game/pc-booter/bootchess

Unter Linux wäre das mit Syslinux möglich und heißt Extlinux. Aber gemacht habe ich das noch nicht....mir hat immer Io+msdos.sys gereicht :-)
Benutzeravatar
Heilbar
DOS-Übermensch
 
Beiträge: 1678
Registriert: Mi 5. Mär 2014, 07:25
Wohnort: Hamburg

Re: Bootloader

Beitragvon Dosenware » Mo 6. Jun 2016, 12:49

TomCat hat geschrieben:ich möchte ein einzelnes Programm ganz ohne Betriebssystem laufen lassen.[..]
Ist so was möglich?

Ja, das Programm nennt sich dann "Betriebsystem" ;-)

Mit einem normalen Programm ist das jedoch nicht möglich, da es auf Funktionen des Betriebsystems angewiesen ist.
Benutzeravatar
Dosenware
DOS-Gott
 
Beiträge: 3527
Registriert: Mi 24. Mai 2006, 19:29

Re: Bootloader

Beitragvon TomCat » Mo 6. Jun 2016, 12:54

Dosenware hat geschrieben:
TomCat hat geschrieben:ich möchte ein einzelnes Programm ganz ohne Betriebssystem laufen lassen.[..]
Ist so was möglich?

Ja, das Programm nennt sich dann "Betriebsystem" ;-)

Mit einem normalen Programm ist das jedoch nicht möglich, da es auf Funktionen des Betriebsystems angewiesen ist.


nein, da mein Programm keinerlei Betriebssystem-Funktionen benutzt. nur ganz wenige Bios-Funktionen, der Rest(auch Tastatur) ist direkt programmiert und so benötigt es kein Betriebssystem. der Dateizugriff soll auch direkt auf die HDD- Sektoren via Bios int 13h erfolgen.
TomCat
MemMaker-Benutzer
 
Beiträge: 87
Registriert: Do 1. Dez 2011, 17:16

Re: Bootloader

Beitragvon Dosenware » Mo 6. Jun 2016, 13:00

Dann gehts natürlich.
Benutzeravatar
Dosenware
DOS-Gott
 
Beiträge: 3527
Registriert: Mi 24. Mai 2006, 19:29

Re: Bootloader

Beitragvon TomCat » Mo 6. Jun 2016, 13:08

Ich brauche also zuerst einen Bootloader, der mein Programm aufruft, bzw. und ein Programm, dass dann direkt(ohne DOS-Aufrufe) mein Programm aufruft.

Würde das genügen?
hat jemand so was schon mal gemacht?
TomCat
MemMaker-Benutzer
 
Beiträge: 87
Registriert: Do 1. Dez 2011, 17:16

Re: Bootloader

Beitragvon Dosenware » Mo 6. Jun 2016, 13:28

Wenn du sonst nichts auf der HDD haben willst, kannst du deinen Bootloader einfach in den MBR schreiben (erster Sektor der HDD)

PS. der MBR muss mit $AA55 abgeschlossen werden, sonst startet das Bios diesen nicht.

Siehe auch:

https://de.wikipedia.org/wiki/Master_Bo ... au_des_MBR
Benutzeravatar
Dosenware
DOS-Gott
 
Beiträge: 3527
Registriert: Mi 24. Mai 2006, 19:29

Re: Bootloader

Beitragvon TomCat » Di 7. Jun 2016, 12:10

so der mini-bootloader ist fertig und mit nasm zu einer binär-Datei kompiliert. jetzt geht es darum diese 512 Byte in den Master-boot-record einer Diskette zu kopieren.

wie bekommt man nun diese Datei in den MBR?
mit bios int 13h einfach kopieren?
TomCat
MemMaker-Benutzer
 
Beiträge: 87
Registriert: Do 1. Dez 2011, 17:16

Re: Bootloader

Beitragvon der_computer_sammler » Di 7. Jun 2016, 17:10

.
Zuletzt geändert von der_computer_sammler am Mi 2. Nov 2016, 19:03, insgesamt 1-mal geändert.
der_computer_sammler
 

Re: Bootloader

Beitragvon TomCat » Mi 8. Jun 2016, 14:32

der_computer_sammler hat geschrieben:Mit 'nem Hex-Editor in ein Image einer (leeren) Disk kopieren und auf Diskette zurückschreiben. ;-) Ok, geht sicher auch anders, aber so auf jeden Fall. Hab ich schon ein paar hundert Mal gemacht.


Kannst du mir das genauer erklären? welchen Hexeditor benutzt du da?
TomCat
MemMaker-Benutzer
 
Beiträge: 87
Registriert: Do 1. Dez 2011, 17:16

Re: Bootloader

Beitragvon der_computer_sammler » Mi 8. Jun 2016, 18:50

.
Zuletzt geändert von der_computer_sammler am Mi 2. Nov 2016, 19:03, insgesamt 1-mal geändert.
der_computer_sammler
 

Re: Bootloader

Beitragvon TomCat » Do 9. Jun 2016, 16:05

Danke erstmal,

so das hat jetzt soweit funktioniert. jetzt habe ich das nächste Problem.

mein eigentliches Programm ist eine .exe dieses habe ich ab Sektor 2 mit int 13h direkt auf die Diskette geladen.
der Bootloader liest dieses Programm nach Adresse x1000 ein und springt dann dorthin.

Leider läuft mein Programm nicht an. Es passiert rein gar nichts.
Was kann das sein?
Liegt es daran, dass es eine exe ist?

THX TomCat
TomCat
MemMaker-Benutzer
 
Beiträge: 87
Registriert: Do 1. Dez 2011, 17:16

Re: Bootloader

Beitragvon Dosenware » Do 9. Jun 2016, 16:29

TomCat hat geschrieben:mein eigentliches Programm ist eine .exe

Exedateien bestehen aus einem Header und dem eigentlichen Programm, entweder du bastelst dir einen Loader für Exedateien (was schwierig werden könnte da der Compiler (weis ja nicht was du nimmst) dann evtl. noch ein paar Dosaufrufe dazwischenschmeißt), oder du bastelst dir Comdateien (die haben keinen Header).

(Das geht z.b. indem du dein Programm als com Linkst, oder du den EXE Header entfernst - letzteres funktioniert aber nicht bei jedem Programm (zuzüglich der Problematik mit den Dosaufrufen, die der Compiler evtl. noch mit einbaut))
Benutzeravatar
Dosenware
DOS-Gott
 
Beiträge: 3527
Registriert: Mi 24. Mai 2006, 19:29

Re: Bootloader

Beitragvon TomCat » Do 9. Jun 2016, 17:15

danke,

also ich verwende den MASM 6.11 . Mein programm ist ein reines Assemblerprogramm das geladen werden soll. Sind halt mehrere Segmente: Data , Stack etc. definiert. Kein Tiny-Model.
Wie ist das bei einer .com -Datei?
das Hauptproblem scheint ja zu sein, dass das Programm an der richtigen stelle in den Hauptspeicher kopiert werden muss da alle sprung-adressen ja physikalisch sind.
Oder täusche ich mich da?
TomCat
MemMaker-Benutzer
 
Beiträge: 87
Registriert: Do 1. Dez 2011, 17:16

Re: Bootloader

Beitragvon Dosenware » Do 9. Jun 2016, 17:50

Bei einer Com hast du offiziell (Dosferatu und Co. werden da sicher wissen wie man drum rum kommt) nur ein Segment...

Und: Die Sprungadressen sind relativ - das Programm weis halt vorher nicht an welche Adresse es geladen wird.

Wichtig ist das der Offset stimmt - z.b. werden Comdateien immer an Speicheradresse 100h geladen, die 256bytes davor gehöhren zum "Programmsegmentpräfix" von Dos - wie das bei Exe-dateien ist, musst du jetzt mal schauen.

PS. Du müsstest übrigens noch die Segmentregister initialisieren, bei Com dürften alle den gleichen Wert haben (gibt ja nur ein Segment).
Benutzeravatar
Dosenware
DOS-Gott
 
Beiträge: 3527
Registriert: Mi 24. Mai 2006, 19:29

Nächste

Zurück zu Programmierung

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast