www.mikrocontroller.net

Forum: PC-Programmierung Echte Lowlevel Probleme


Autor: Matheguru L. (matheguru)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Einer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ganz viel (c´t) lesen!

Autor: Matheguru L. (matheguru)
Datum:

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

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bartli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was für nen Kernel?

Autor: Matheguru L. (matheguru)
Datum:

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

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

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

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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....

Autor: JetztAber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: david (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klugscheisser (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matheguru L. (matheguru)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Blah (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:".

Autor: Mano Wee (Firma: ---) (manow)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>verweise ich auf www.lowlevel.com unter Tutorials Ausgabe1 des Magazins,

da kommt doch nur Werbung?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.