Echte Lowlevel Probleme

#1125981
Lesenswert?

Hallo Leutz,
hab nen paar probleme zum Lowlevelbereich, dabei beziehe ich mich auf 
die Seite von Lowlevel. Erstens wo ist der unterschied zwischen MBR und 
dem Bootsector? Zweitens warum muss man seine Betribssystembinärdateien 
als Diskimage auf den Datenträger bringen? Drittens: wozu diehnt eig. 
ein dateisystem wie FAT und brauch man das um ein datenträger bootbar zu 
machen? viertens: ich möchte ein Programm in C++ schreiben, welches die 
bootdateien auf ein usb-stick schreibt, wie finde ich heraus welchen 
adressraum der datenträger hat 0xfk435 oder so etwas meine ich. Und 
welche routinen gibt es um die daten in bestimmte sectoren zu schreiben?
ich hoffe ihr könnt mir helfen, ich möchte  dieses kleine kernel von 
dieser seite ausprobieren und habe kein diskettenlaufwerk, deswegen 
möchte ich es vom usb stick booten.
grüße von paul
#1126007
Lesenswert?

MBR: Teil der Partitionstabelle, wird vom Bios geladen und ausgeführt.
Bootsektor: Üblicherweise erster Sektor der Partition, wird vom MBR 
geladen und ausgeführt (ausser der MBR bootet was anderes...)
FAT: Brauchst du nur, wenn dein Bootsektor-Code FAT erwartet

Zum Schreiben in bestimmte Sektoren bietet sich "dd" an.

Alternativ: nimm was fertiges für das ganze Bootsektor-zeuchs. Grub, 
Lilo o.ä. bietet sich da an.
#1126289
Lesenswert?

Matheguru L. wrote:
> Erstens wo ist der unterschied zwischen MBR und
> dem Bootsector?

MBR ist der Master Boot Record - der enthält entweder den Bootlader für 
das einzige OS auf der Platte, oder ein Bootmenü, oder einen 
voreingestellten Bootselektor, der einen von mehreren Bootladern 
auswählt und startet.

Es gibt nur einen MBR auf einer Platte, egal, wieviele Partitionen sie 
hat.

Einen Bootsector gibt es für jede Partition. Er enthält den Code um das 
auf der Partition installierte Betriebsystem (OS) zu booten.

> Zweitens warum muss man seine Betribssystembinärdateien
> als Diskimage auf den Datenträger bringen?

Muß man das? Man kann das OS auch ganz normal installieren...

> Drittens: wozu diehnt eig.
> ein dateisystem wie FAT und brauch man das um ein datenträger bootbar zu
> machen?

Das Dateisystem enthält standardisierte Datenstrukturen, mit deren Hilfe 
Dateien effizient verwaltet werden können. Es gibt wohl keine 
Betriebsysteme, die ohne Dateisystem auskommen, wenn Massenspeicher 
verwaltet werden, es ist aber im Prinzip denkbar, ein OS auch ohne 
Dateisystem zu booten.

> viertens: ich möchte ein Programm in C++ schreiben, welches die
> bootdateien auf ein usb-stick schreibt, wie finde ich heraus welchen
> adressraum der datenträger hat 0xfk435 oder so etwas meine ich.

Am besten, indem due das Betriebsystem fragst - das weiß es nämlich.

Daraus folgt aber auch, daß du besser kein Programm schreibst, welches
bootdateien auf ein usb-stick schreibt und dich stattdessen auf ein OS 
verläßt...

> Und
> welche routinen gibt es um die daten in bestimmte sectoren zu schreiben?

Ohne Betriebsystem keine.
Gast #1127511
Lesenswert?

> Zweitens warum muss man seine Betribssystembinärdateien
> als Diskimage auf den Datenträger bringen?

Das Problem ist ganz einfach, du musst ja irgendwie in den Bootsektor 
schreiben damit dein OS gebootet wird, das funktioniert aber nicht indem 
du dein Betriebssystem einfach auf Diskette kopierst, weil bei diesem 
Vorgang nicht in den Bootsektor geschrieben wird. Deshalb das Image.
Rein theoretisch ist es auch möglich nur den Bootloader als Image 
anzulegen und dann den Kernel ganz normal als Binärdatei zu kopieren, 
aber dafür brauchst du dann schon ein Dateisystem.
#1130206
Lesenswert?

Sorry das ich den thread noch mal nach oben hole, aber es hat sich was 
geändert.
Mein USB-stick bootet jetzt. Hab aber immer noch ein Problem mit der 
Bootlaufwerksnummer: der bootloader gibt zwar seine Nachricht Lädt aus, 
aber mein kernel will nicht Laden, weil ich immer noch nicht weiß welche 
Laufwerksnummer mein BIOS vergeben hat. Um das verständlich zu machen 
verweise ich auf www.lowlevel.com unter Tutorials Ausgabe1 des Magazins, 
dort steht der Bootloader und das Kernel.
Hier noch das was mein BIOS während des POSTs ausgibt:
USB Device(s): 1Keyboard, 1Mouse, 1 Storage Device
Auto-Detecting 3rd Master... IDE Hard Disk
Auto-Detecting 4th Master... ATAPI CDROM
Auto-detecting USB Mass Storage Devices..
Device #01: Generic- Multi-Card HiSpeed
Device #02: Kingston DataTraveler2 HiSpeed
02 USB mass storage devices found and configured
Lg Paul
Persönliche Seite #1130615
Lesenswert?

Matheguru L. wrote:
> Sorry das ich den thread noch mal nach oben hole, aber es hat sich was
> geändert.
> Mein USB-stick bootet jetzt. Hab aber immer noch ein Problem mit der
> Bootlaufwerksnummer: der bootloader gibt zwar seine Nachricht Lädt aus,
> aber mein kernel will nicht Laden, weil ich immer noch nicht weiß welche
> Laufwerksnummer mein BIOS vergeben hat.

Das BIOS vergibt keine "Laufwerksnummern" (sowas gibt es ueberhaupt 
nicht). Es sucht nach der eingestellten Boot-Sequenz (Reihenfolge!) alle 
MBRs ab und beim ersten Treffer wird der enthaltene Code ausgefuehrt.

Michael
Gast #1130638
Lesenswert?

@Matheguru
Nicht alle Bootmedien haben einen MBR. Eine Diskette hat z.b. keinen. 
Abhängig davon führt das Bios seine (interne) Enumerierung durch und 
abhängig davon kann es das Laufwerk dann als "a:" oder eben "c:" 
ansprechen. Normalerweise muss es dies anhand des ersten Sektors 
erkennen aber nicht alle BIOS-Typen können das. Ich habe z.b. einen 
USB-Stick der auf einem Comp. als "a:" ansprechbar ist und auf den 
anderen Comps immer als "c:".

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren