Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Swoerm

Alter Hase

  • »Swoerm« ist der Autor dieses Themas

Beiträge: 451

Wohnort: 127.0.0.1

  • Private Nachricht senden

1

25.09.2015, 23:55

Eigenes OS entwickeln - Problem mit GRUB

Ich hatte schon länger mal vor mir OS-Entwicklung anzusehen und habe nun gestern begonnen mich in dieses Tutorial einzulesen. Ich habe den Code studiert MinGW und Cygwin installiert (ich programmiere unter Windows 7) und somit meinen Kernel kompiliert (bzw. alle Dateien bis hin zur .bin generiert). Nun habe ich ein Problem mit dem Schritt "Booting the Kernel". In diesem Abschnitt steht am Anfang mal sollte GRUB installieren, um die .iso zu generieren (bzw. um den Befehl grub-mkrescue auszuführen). Nun habe ich durch intensives googeln vielfach gelesen, dass es ein GRUB package für Cygwin gibt, jedoch kann ich dieses beim setup nicht finden (und auch nirgendwo anders im Netz). Ich wäre sehr dankbar wenn mir jemand von dem Schlauch herunterhelfen könnte, auf dem ich gerade stehe.

Vielen Dank schon einmal im Voraus.

C-/C++-Quelltext

1
2
    /* Keep the compiler happy */
    return(0);

Tobiking

1x Rätselkönig

  • Private Nachricht senden

2

26.09.2015, 00:27

Sieht für mich so aus als wäre die Cygwin Version eingestellt worden. Das Neuste was ich gefunden habe war nen Announcement von 2008 für die Version 1.98. Für die 2.0.0 finde ich gar nichts.

Grundsätzlich würde ich dir für Betriebssystementwicklung sowieso eine Linux Umgebung empfehlen. Zumindest zum Image Bauen. Wenn du Disk-Images und/oder USB Sticks mit bestimmten Partitionsschema/Dateisystemen beschreiben möchtest wehrt sich Windows sehr schnell.

3

26.09.2015, 00:34

Ich kenne mich mit GRUB jetzt auch nicht sonderlich aus. Du musst GRUB auf dem Bootmedium (http://wiki.osdev.org/GRUB#Installation_and_booting) installieren, danach packst du deinen Kernel als z.B. ELF auf die Disk.
Einen eigenen Bootloader schreiben macht aber auch Spaß ;)

Swoerm

Alter Hase

  • »Swoerm« ist der Autor dieses Themas

Beiträge: 451

Wohnort: 127.0.0.1

  • Private Nachricht senden

4

26.09.2015, 14:34


Sieht für mich so aus als wäre die Cygwin Version eingestellt worden. Das Neuste was ich gefunden habe war nen Announcement von 2008 für die Version 1.98. Für die 2.0.0 finde ich gar nichts.

Grundsätzlich würde ich dir für Betriebssystementwicklung sowieso eine Linux Umgebung empfehlen. Zumindest zum Image Bauen. Wenn du Disk-Images und/oder USB Sticks mit bestimmten Partitionsschema/Dateisystemen beschreiben möchtest wehrt sich Windows sehr schnell.
Ich habe bereits geahnt, dass es auf Linux hinauslaufen würde. Ich habe jedoch bisher nahezu keine Erfahrung mit Linux. Welche Linuxdistribution soll ich also verwenden, wenn ich einfach nur mein Image in einer virtuellen Maschine damit erstellen will?
Ich kenne mich mit GRUB jetzt auch nicht sonderlich aus. Du musst GRUB auf dem Bootmedium (http://wiki.osdev.org/GRUB#Installation_and_booting) installieren, danach packst du deinen Kernel als z.B. ELF auf die Disk.
Einen eigenen Bootloader schreiben macht aber auch Spaß
Ist das schreiben eines eigenen Bootloader für jemanden wie mich, der noch recht neu in der OS-Entwicklung ist, ernsthaft eine Option?

Auf jeden Fall schon einmal vielen Dank für eure Antworten. :)

C-/C++-Quelltext

1
2
    /* Keep the compiler happy */
    return(0);

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

5

26.09.2015, 14:54

Es ist eine Option. Allerdings ist sie nicht unbedingt sinnvoll. Mit Betriebssystementwicklung startest du bereits auf einem recht niedrigen Level. Klar kann man auch den Bootloader selbst schreiben. Am besten auch noch das BIOS?

Ich habe für meine Experimente mit Betriebssystementwicklung mich an ein Tutorial der selben Seite allerdings auf deutsch gehalten. Mit dem GRUB-Artikel dort war es kein größeres Problem eine Boot-CD-Image unter Windows zu erstellen. Heute würde ich wahrscheinlich schauen, ob man GRUB 2 zum Laufen bekommt. Die englische Version scheint mir weniger hilfreich.

Tobiking

1x Rätselkönig

  • Private Nachricht senden

6

26.09.2015, 15:28


Welche Linuxdistribution soll ich also verwenden, wenn ich einfach nur mein Image in einer virtuellen Maschine damit erstellen will?

Die großen Distributionen dürften so ziemlich alle die Tools mitbringen bzw. anbieten die es braucht. Ich bevorzuge meistens Ubuntu oder ein Derivat davon (Kubuntu, Mint etc.).


Ist das schreiben eines eigenen Bootloader für jemanden wie mich, der noch recht neu in der OS-Entwicklung ist, ernsthaft eine Option?

Ich würde es nicht empfehlen. Es ist zwar durchaus interessant zu lernen welche Modi ein x86 Prozessor durchläuft bis er so arbeitet wie er heutzutage verwendet wird und welche Umwege da aus Kompatibilitätsgründen drin sind, aber Spaß das zu Implementieren macht es nicht.

Wobei es eine Möglichkeit wäre den Bootloader auf EFI Basis zu entwickeln. Out of the box Dateisystemzugriff ist schon eine nette Sache. Kernel laden und starten sollte da nicht zu aufwändig sein, wenn man von dem Drumherum für das build target absieht: http://wiki.osdev.org/UEFI_Bare_Bones

7

26.09.2015, 18:22


Ist das schreiben eines eigenen Bootloader für jemanden wie mich, der noch recht neu in der OS-Entwicklung ist, ernsthaft eine Option?

wenn es dir Spaß macht...Mir hats jedenfalls Spaß gemacht ;)

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

8

26.09.2015, 20:12

Einen eigenen Bootloader zu schreiben ist sicherlich eine gute Übung. Für den Anfang reicht es auch einen sehr unflexiblen Bootloader zu schreiben. Beispielsweise hatte ich früher mal einen Bootloader geschrieben der im ersten Sektor eines Floppyimages lag. Dieser konnte dann einen Kernel laden der ab dem zweiten Sektor auf der Floppy lag. Die Anzahl der Sektoren war dann hartkodiert. Für die Praxis nutzlos, aber eine gute Übung.
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

Swoerm

Alter Hase

  • »Swoerm« ist der Autor dieses Themas

Beiträge: 451

Wohnort: 127.0.0.1

  • Private Nachricht senden

9

27.09.2015, 10:55

Ich denke ich installiere mal die nächsten Tage Linux und setzte dann dort mein Projekt fort, da es mir Linux anscheinend wirklich einfacher macht als Windows. Ob ich mir einen eigenen Bootload schreiben werden weiß ich nocht nicht. Ich kann ja erst einmal GRUB verwenden und später GRUB durch meinen eigenen austauschen. Auf jeden Fall Danke für eure schnelle Hilfe. :)

C-/C++-Quelltext

1
2
    /* Keep the compiler happy */
    return(0);

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

10

27.09.2015, 11:08

Zum testen reicht es ja erst mal als VM.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige