On 2021-06-19 10:49, Jens Kallup <
kallu...@web.de> wrote:
> ich möchte eine Art Bootloader schreiben (ja ich weiß,
> das gibt es alles schon, aber so zum Eigenen verstehen).
Ein Bootloader war interessanterweise auch eines der ersten Programme,
die ich seinerzeit in 8086-Assembler geschrieben habe (ich hatte zwei
Betriebssysteme und musste immer mit fdisk die Boot-Partition ändern,
wenn ich das andere booten wollte - also habe ich einen Bootloader mit
Auswahlmöglichkeit geschrieben).
> Ich möchte gerne ein paar Sektoren einlesen, und diesen
> Speicher dann an eine andere Stelle als die Bootloader
> Adresse verschieben also noch unter dem 1 MB.
Warum liest Du die nicht gleich an der Stelle ein, wo Du sie haben
willst? (Nicht, dass es schwierig wäre, ein paar Bytes zu kopieren, aber
mir erschließt sich der Sinn nicht). Ok, kann sein, dass der sekundäre
Bootloader (der in der Boot-Partition) erwartet, an einer bestimmten
Adresse zu starten, das habe ich nicht mehr so genau in Erinnerung. Das
ist allerdings ohnehin nur von Bedeutung, wenn Du den auch verwendest,
was ...
> Wenn ich das geschafft habe, möchte ich gerne auf 32-Bit
> umschalten und dort weiter machen.
... hiermit im Widerspruch steht. Der Secondary Bootloader erwartet
sicher auch, im Real-Mode zu starten. Wenn Du im Bootloader schon auf 32
Bit umschaltest, brauchst Du ein Betriebssystem-Image, das erwartet, in
diesem Modus gestartet zu werden.
> Ist sowas mit den NASM möglich ?
Ich habe nie mit NASM gearbeitet, aber soweit ich weiß, kann der 16-,
32- und 64-Bit-Code erzeugen und eine Vielzahl von Binary-Formaten,
darunter auch Raw Binary. Sollte also alles können, was man für einen
Boot-Loader braucht.
PS: Ich beziehe mich oben auf das alte Boot-Loader/Partititionssystem
aus den 80er-Jahren. Mit UEFI ist alles anders.
hp