Forum: PC-Programmierung Echte Lowlevel Probleme


von Matheguru L. (matheguru)


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

von Einer (Gast)


Lesenswert?

Ganz viel (c´t) lesen!

von Matheguru L. (matheguru)


Lesenswert?

das hilft mir jetzt auch nicht! trotzdem danke. vieleicht könnte mir ja 
auch jemeand nen kleines beispile geben.
grüße paul(matheguru)

von Εrnst B. (ernst)


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.

von Bartli (Gast)


Lesenswert?

Was für nen Kernel?

von Matheguru L. (matheguru)


Lesenswert?

geh auf die lowlevel-seite dort gibt es 9 ausgaben eines magazines und 
noch alles mögliche über protectetmode c kernel etc.

von Uhu U. (uhu)


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.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Unter "low level" versteht man eher Hardware-nah. Was Du gemeint hast 
sind "Anfaengerprobleme" ;)

von Christian R. (supachris)


Lesenswert?

Und völlig überzogen sowieso. Um einen USB Stick bootfähig zu machen, 
gibts Programme, bei denen man nur auf "Start" oder ähnliches klicken 
muss. Bei modernen Betriebssystemen sollte und darf man eh nicht einfach 
so in irgendwelchen Sektoren rumschreiben....

von JetztAber (Gast)


Lesenswert?

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

Das BIOS stellt natuerlich den RW Zugriff auf das Medium sicher. Sonst 
ist auch nichts mit booten.

von david (Gast)


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.

von Klugscheisser (Gast)


Lesenswert?

Lowlevel meint hier wohl www.lowlevel.com

Woher ich das so aus dem Hut hätte wissen sollen ist mir allerdings noch 
nicht so recht klar. Die Überschrift klingt als sollte man das kennen.

von Matheguru L. (matheguru)


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

von Michael G. (linuxgeek) Benutzerseite


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

von Blah (Gast)


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:".

von Mano W. (Firma: ---) (manow)


Lesenswert?

>verweise ich auf www.lowlevel.com unter Tutorials Ausgabe1 des Magazins,

da kommt doch nur Werbung?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.