Kernel herunterladen, compilieren und laufen lassen
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: Kernel herunterladen, compilieren und laufen lassen
Mal eine Frage:
Ist es euch lieber, wenn die "Tools", um den Kernel zum laufen zu bekommen, direkt in der Versionsverwaltung mit drinnen sind, oder soll das lieber getrennt von einander "aufbewahrt" werden?
Also:
Soll die "Bochs-Steuer-Datei" (und die für evtl andere Emulatoren) mit in das git-Repository?
Und was ist mit dem Source-Code für das Tool, dass die init-RamDisk erstellen kann?
Wie wäre euch das am liebsten?
Ist es euch lieber, wenn die "Tools", um den Kernel zum laufen zu bekommen, direkt in der Versionsverwaltung mit drinnen sind, oder soll das lieber getrennt von einander "aufbewahrt" werden?
Also:
Soll die "Bochs-Steuer-Datei" (und die für evtl andere Emulatoren) mit in das git-Repository?
Und was ist mit dem Source-Code für das Tool, dass die init-RamDisk erstellen kann?
Wie wäre euch das am liebsten?
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne!
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Ich helfe gerne!

----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Kernel herunterladen, compilieren und laufen lassen
In ein Repository gehören alle Dateien, die erforderlich sind, das Projekt lauffähig zu machen.
Dazu gehören auch Konfigurationen (z.B. Makefiles), nicht aber die Executables oder Objektfiles oder alles sonstige, was durch die vorhandenen Quelltexte und Konfigurationen erzeugt werden kann.
Dazu gehören auch Konfigurationen (z.B. Makefiles), nicht aber die Executables oder Objektfiles oder alles sonstige, was durch die vorhandenen Quelltexte und Konfigurationen erzeugt werden kann.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Kernel herunterladen, compilieren und laufen lassen
Bei mir geht da was nicht...
Ich hab folgendes gemacht:
Und dann sagt Bochs:
Und wenn ich was drücke startet Bochs neu. Liegt das am Kernel oder mach ich was falsch?
Ich hab folgendes gemacht:
Code: Alles auswählen
$ git clone git://repo.or.cz/kernel.git
Initialized empty Git repository in /home/daniel/kernel-projekt/kernel/.git/
remote: Counting objects: 181, done.
remote: Compressing objects: 100% (128/128), done.
remote: Total 181 (delta 58), reused 123 (delta 40)
Receiving objects: 100% (181/181), 103.31 KiB, done.
Resolving deltas: 100% (58/58), done.
Code: Alles auswählen
$ make kernelimage
[---------COMPILING KERNEL---------]
make[1]: Betrete Verzeichnis '/home/daniel/kernel-projekt/kernel/src'
[allsources] Searching source files... [OK]
[c] Compiling boot/multiboot.c... [OK]
[c] Compiling paging/paging_functions.c... [OK]
[c] Compiling paging/paging_init.c... [OK]
[c] Compiling main/main.c... [OK]
[c] Compiling idt/idt.c... [OK]
[c] Compiling int/irq.c... [OK]
[c] Compiling int/isr.c... [OK]
[c] Compiling bio/bio.c... [OK]
[c] Compiling gdt/gdt.c... [OK]
[c] Compiling phys_mm/pmm_init.c... [OK]
[c] Compiling phys_mm/pmm_functions.c... [OK]
[c] Compiling text/debug-text.c... [OK]
[asm] Assembling main/entry_asm.asm... [OK]
[asm] Assembling idt/idt_asm.asm... [OK]
[asm] Assembling int/isr_irq_asm.asm... [OK]
[asm] Assembling gdt/gdt_asm.asm... [OK]
[kernel] Linking object files... [OK]
make[1]: Verlasse Verzeichnis '/home/daniel/kernel-projekt/kernel/src'
-------->> DONE
sudo make -C vm/ image
make: Gehe in Verzeichnis '/home/daniel/kernel-projekt/kernel/vm'
[mnt/] Creating mount dir mnt/... [OK]
[image] Mounting floppy.img... [OK]
[image] Copying files to image... [OK]
[image] Unmounting floppy.img... [OK]
make: Verlasse Verzeichnis '/home/daniel/kernel-projekt/kernel/vm'
Code: Alles auswählen
$ make b-run
make[1]: Betrete Verzeichnis '/home/daniel/kernel-projekt/kernel/vm'
[bochs] Running bochs...make[2]: Betrete Verzeichnis '/home/daniel/kernel-projekt/kernel/vm/bochs'
00000000000i[APIC?] local apic in initializing
========================================================================
Bochs x86 Emulator 2.3.7
Build from CVS snapshot, on June 3, 2008
========================================================================
00000000000i[ ] LTDL_LIBRARY_PATH not set. using compile time default '/usr/lib/bochs/plugins'
00000000000i[ ] BXSHARE not set. using compile time default '/usr/share/bochs'
00000000000i[ ] reading configuration from bochs.conf
00000000000i[ ] lt_dlhandle is 0x9f108f8
00000000000i[PLGIN] loaded plugin libbx_x.la
00000000000i[ ] installing x module as the Bochs GUI
00000000000i[ ] using log file protokoll.log
Code: Alles auswählen
Error 13: Invalid or unsupported executeable format.
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: Kernel herunterladen, compilieren und laufen lassen
Ah...danke 
Das Problem liegt (denke ich) hier:
Ich hab ins Repo gleich ein "fertiges" Floppy-Image mit hineingetan, und hab mir dabei gedacht, dass das gehen würde.
Auf dem Image (im Repo) ist nämlich der selbe GRUB installiert, wie bei mir auf dem Laptop. Problem: Mein Laptop hat eine 64bit CPU, Grub wird sich daran wohl auch angepasst haben.
(Ich nehme zumindest an, dass das die Ursache ist. Du hast schon ein nicht x86-64 System, oder?)
Also hab ich jetzt zwei Möglichkeiten:
Entweder, ich bringe dem Makefile bei, wie es ein eigenes Abbild erstellt.
Oder ich bring ein 32bit-Grub-Image ins Repository.
Ich denke erstere Variante dürfte klüger sein
Für die (kurze) Zwischenzeit:
So erstellt man ein Image:
Das Image aus dem Repo mit dem so erstellten ersetzen und es müsste eigentlich laufen...?
*EDIT: Das makefile generiert nun automatisch ein Image. Jetzt sollte alles funktionieren? */EDIT*

Das Problem liegt (denke ich) hier:
Ich hab ins Repo gleich ein "fertiges" Floppy-Image mit hineingetan, und hab mir dabei gedacht, dass das gehen würde.
Auf dem Image (im Repo) ist nämlich der selbe GRUB installiert, wie bei mir auf dem Laptop. Problem: Mein Laptop hat eine 64bit CPU, Grub wird sich daran wohl auch angepasst haben.
(Ich nehme zumindest an, dass das die Ursache ist. Du hast schon ein nicht x86-64 System, oder?)
Also hab ich jetzt zwei Möglichkeiten:
Entweder, ich bringe dem Makefile bei, wie es ein eigenes Abbild erstellt.
Oder ich bring ein 32bit-Grub-Image ins Repository.
Ich denke erstere Variante dürfte klüger sein

Für die (kurze) Zwischenzeit:
So erstellt man ein Image:
Code: Alles auswählen
dd if=/dev/zero of=floppy.img bs=1024 count=1440
#Dateisystem aufspielen
mke2fs -q -F floppy.img
#Verzeichnis zum Mounten erstellen
mkdir mnt/
#mounten
sudo mount -o loop floppy.img mnt/
#hier jetzt z.B. den Kernel ins Image kopieren
#GRUB reinkopieren
mkdir /mnt/grub
cp /boot/grub/stage1 mnt/grub
cp /boot/grub/stage2 mnt/grub
cp menu.lst /mnt/grub
sudo umount mnt/
rm -r mnt/
#GRUB installation
#echo "device (fd0) floppy.img\nroot (fd0)\nsetup (fd0)\nquit\n" | sudo /usr/sbin/grub
#(Das funktioniert bei mir komischerweise nicht mehr?)
/usr/sbin/grub
# jetzt hier eingeben:
device (fd0) floppy.img
root (fd0)
setup (fd0)
quit
*EDIT: Das makefile generiert nun automatisch ein Image. Jetzt sollte alles funktionieren? */EDIT*
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne!
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Ich helfe gerne!

----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Re: Kernel herunterladen, compilieren und laufen lassen
Ja, 32-Bit.Dirty Oerti hat geschrieben:Du hast schon ein nicht x86-64 System, oder?
Ich hab das komplette Verzeichnis gelöscht und neu runtergeladen. Es kommt aber noch immer der gleiche Fehler.Dirty Oerti hat geschrieben:*EDIT: Das makefile generiert nun automatisch ein Image. Jetzt sollte alles funktionieren? */EDIT*
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: Kernel herunterladen, compilieren und laufen lassen
Ok, ich hab (nachdem ich beide kernel, den bei mir kompilierten und den von dani93 disassembliert hab) jetzt zumindest einen Anhaltspunkt, wo der Fehler liegt.
Bzw, ich weiß genau, warum dani93 den Kernel nicht starten kann:
Bei ihm wird der MultibootHeader aus was auch immer für einen Grund zu weit nach "hinten" gelinkt, GRUB findet diesen also nicht und stellt fest, dass der kernel nicht startbar ist.
Wie ich das löse weiß ich noch nicht genau, auf jedenfall wird sich aber das linkerskript ändern müssen^^
Es wäre ganz gut, wenn noch jemand mal testen könnte, ob der Kernel bei ihm/ihr läuft
Bzw, ich weiß genau, warum dani93 den Kernel nicht starten kann:
Bei ihm wird der MultibootHeader aus was auch immer für einen Grund zu weit nach "hinten" gelinkt, GRUB findet diesen also nicht und stellt fest, dass der kernel nicht startbar ist.
Wie ich das löse weiß ich noch nicht genau, auf jedenfall wird sich aber das linkerskript ändern müssen^^

Es wäre ganz gut, wenn noch jemand mal testen könnte, ob der Kernel bei ihm/ihr läuft

Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne!
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Ich helfe gerne!

----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Re: Kernel herunterladen, compilieren und laufen lassen
Bei mir ist genau das gleiche, aber unter Ubuntu 9.10 64-bit...nufan hat geschrieben:Bei mir geht da was nicht...
[...]
Und dann sagt Bochs:Und wenn ich was drücke startet Bochs neu. Liegt das am Kernel oder mach ich was falsch?Code: Alles auswählen
Error 13: Invalid or unsupported executeable format.
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)
OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at
OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: Kernel herunterladen, compilieren und laufen lassen
Ok 
Aktualisiert mal bitte eure Repos und compiliert dann neu.
Ich hab Veränderungen am Linkerskript vorgenommen (MultibootHeader und Einstiegspunkt in eine SECTION boot verschoben, die am Anfang steht).
Jetzt sollte/dürfte/müsste es hoffentlich gehen

Aktualisiert mal bitte eure Repos und compiliert dann neu.
Ich hab Veränderungen am Linkerskript vorgenommen (MultibootHeader und Einstiegspunkt in eine SECTION boot verschoben, die am Anfang steht).
Jetzt sollte/dürfte/müsste es hoffentlich gehen

Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne!
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Ich helfe gerne!

----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Re: Kernel herunterladen, compilieren und laufen lassen
Es funktioniertDirty Oerti hat geschrieben:Ok
Aktualisiert mal bitte eure Repos und compiliert dann neu.
Ich hab Veränderungen am Linkerskript vorgenommen (MultibootHeader und Einstiegspunkt in eine SECTION boot verschoben, die am Anfang steht).
Jetzt sollte/dürfte/müsste es hoffentlich gehen

Noch zwei Fragen dazu:
Ist es normal, dass ich Bochs nicht beenden kann sondern das Terminal schließen muss?
Wie update ich richtig? Reicht ein
Code: Alles auswählen
git pull origin
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: Kernel herunterladen, compilieren und laufen lassen
Code: Alles auswählen
git pull origin master

Um dem mob-Branch aktuell zu halten nat. mit mob hinten

Kannst auch git pull origin master mob schreiben

Das mit dem merge-Konflikt kam wohl von den Veränderungen am makefile, die ich dir vorgeschlagen hab. Die waren ja nicht wichtig, also ist löschen wohl in dem Fall das beste gewesen.
Wie genau das mit dem Zurücksetzen der Änderungen geht weiß ich im Moment nicht.
(Ich glaube git checkout <dateiname mit pfad> )
Wegen bochs:
Wie meinst du das?
Bochs lässt sich nicht beenden?
Komisch...hm, hast du das Paket bochs-x installiert?
Dann müsstest du oben rechts einen Ausschalter im Fenster haben

Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne!
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Ich helfe gerne!

----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.