Autor Thema: Erste Schritte!  (Gelesen 6791 mal)

Patrick75

  • Beiträge: 3
    • Profil anzeigen
Gespeichert
« am: 29. September 2010, 01:47 »
Hallo,
ich hoffe Ihr könnt mir Helfen?
Ich versuche schon seit Tagen, dass Einsteiger Tutorial unter Windows zum laufen zu bringen (Teil 4 Hello World). Allerdings bekomme ich es nicht kompiliert. Die Dateien sehen so aus wie im Tutorial beschrieben.

cmd Starten mit:
SET PATH=C:\Programme\crosstools-complete\i586-elf\bin;C:\MinGW\msys\1.0\bin;C:\Programme\NASM;%PATH%
cmd.exe /k cls

make Ausführen
 
Die Ausgabe:
gcc -m32 -Wall -g -fno-stack-protector -c -o init.o init.c
gcc.exe: CreateProcess: No such file or directory
make: *** [init.o] Error 1

Ich hoffe auf Hilfe. Vielen Dank schon mal im voraus!!!

Patrick75

  • Beiträge: 3
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 29. September 2010, 02:06 »
peinlich, peinlich

http://lowlevel.eu/wiki/Crosscompiler_f%C3%BCr_Windows

habs wohl übersehen!

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 29. September 2010, 02:13 »
Hi,

klappt der Workaround denn? Ich hab den Cross Compiler erstellt, und zweifle selbst immer wieder daran, ob es wirklich so sinnvoll war, den im Wiki zu verlinken. Immer wieder treten bei dem Probleme auf, die ich selbst nicht reproduzieren kann.

Es ist halt so, dass ein selbstkompilierter Compiler auf dem eigenen Rechner ohne Probleme funktionert, und ich deswegen jedem nur dazu raten kann, sich die Zeit dafür zu nehmen. Die Hürden dafür sind auch unter Windows (MinGW) mittlerweile sehr niedrig, und man kann jede für Linux gedachte Anleitung fast 1:1 befolgen.

PorkChicken
Dieser Text wird unter jedem Beitrag angezeigt.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 29. September 2010, 13:35 »
Erstmal willkommen im Forum!

Das Problem scheinst du ja selbst gelöst zu haben (so mag ich das), aber zum Thema Peinlichkeit: Dass man den Wald vor lauter Bäumen vor allem am Anfang nicht sieht, ist doch in gewisser Weise normal. Solange du nicht zu den Leuten gehörst, die man mit der Nase auf einen Artikel stößt und die es dann trotzdem nicht fertigbringen ihn auch zu lesen, ist alles im grünen Bereich. Also keine falsche Zurückhaltung beim Fragen. ;)
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Programm Noob

  • Gast
Gespeichert
« Antwort #4 am: 29. September 2010, 16:43 »
Moin

klappt der Workaround denn? Ich hab den Cross Compiler erstellt, und zweifle selbst immer wieder daran, ob es wirklich so sinnvoll war, den im Wiki zu verlinken. Immer wieder treten bei dem Probleme auf, die ich selbst nicht reproduzieren kann.

Also ich habe lanmge Zeit unter Windows OS-DEV betrieben und hab keine Probleme gehabt, die ich nicht selber lösen konnte. Ich habe die meiste Zeit deinen Cross Compiler benutzt, weil ich keine Lust hatte mir auf allen PC's den GCC zu bauen. Es war auf jedenfall richtig von dir, weil so auch leute die auf Windows programmieren wollen der Einstig leicht gemacht wird.

@Patrick75
Ich empfehle jedoch inzwischen auch, wenn du tatsächlich OS-DEV betreiben willst, installier dir nen Linux, entweder in einer virtuellen Maschine oder auf deinem PC neben Windows. Es ist viel angenehmer dort zu programmieren, weil auch viele andere Tools die man so nebenbei brauchten kann unter Windows nicht verfügbar sind.

PNoob

Patrick75

  • Beiträge: 3
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 01. October 2010, 22:46 »
Hallo,
erst mal vielen Dank für die Antworten.
Also, wenn man im Tutorial nichts überliest bekommt man es hin. Der CrossCompiler funktioniert auch. Ähm, soweit ich es beurteilen kann.

Linux hatte ich auch schon unter Virtual PC laufen. Ging viel einfacher. Jedenfalls das Erstellt des Kernels. Einen Emulator hatte ich noch nicht laufen… kommt aber noch.

Patrick

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 02. October 2010, 05:43 »
Virtual PC ist ein Emulator/Simulator/Virtualisator. ;-)
Wobei zum Debuggen deines eigenen Kernels wahrscheinlich Bochs (und evtl. auch Qemu) geeigneter sein sollten.

Kann man Virtual PC (VMware, Qemu-KVM, VirtualBox) eigentlich in einer Virtual PC-(VMware-, Qemu-KVM-, VirtualBox-)Instanz ausführen? Qemu (ohne KVM) und Bochs sollten das können, da sie simulieren und nicht virtualisieren - aber wie ist das mit den "großen" Systemen? Hat das mal wer ausprobiert?

Grüße

erik.vikinger

  • Beiträge: 1 277
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 02. October 2010, 09:40 »
Hallo,


Kann man Virtual PC (VMware, Qemu-KVM, VirtualBox) eigentlich in einer Virtual PC-(VMware-, Qemu-KVM-, VirtualBox-)Instanz ausführen? Qemu (ohne KVM) und Bochs sollten das können, da sie simulieren und nicht virtualisieren - aber wie ist das mit den "großen" Systemen? Hat das mal wer ausprobiert?
Virtualisierer wird man wohl nicht ineinander verschachteln können. Was IMHO gehen müsste ist innerhalb von Qemu VMWare oder Virtual-Box auszuführen, es sollte auch möglich sein Qemu mehrfach in einander zu verschachteln, aber was da für eine Performance raus kommt wenn ein Simulator von einem Simulator von einem Simulator .... ausgeführt wird ist wieder ein anderes Problem. Auch innerhalb von Virtualisierern die VanderPool/Pazifika benutzen wird man kaum einen vergleichbaren Virtualisierer ausführen können (innerhalb der VM steht sowas nicht zur Verfügung), das gibt x86 einfach nicht her. Auf einer anders konzipierten CPU wo Befehle die den Systemzustand beeinflussen/erkennen klar von den normalen Befehlen getrennt sind (also kein Programm einen Unterschied erkennen kann) müsste das aber theoretisch möglich sein.
Es kann aber auch sein dass das alles Quatsch ist, ausprobiert hab ich soetwas noch nie. ;)


Grüße
Erik
Reality is that which, when you stop believing in it, doesn't go away.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 02. October 2010, 13:28 »
KVM kann dem Gast SVM anbieten, wenn es selbst auf SVM läuft. Das ist aber wohl eher als experimentelles Spielzeug anzusehen. KVM selbst läuft darauf wohl ganz gut, aber ich habe damit auch schon Triple Faults im Level-1-Gast hinbekommen. Performancemäßig dürfte es mit NPT halbwegs gehen (jedenfalls wenn man nur eine Ebene schachtelt ;)).

Ich glaube, andere Virtualisierer probieren es gar nicht erst.

@erik: Deine x86-Kenntnisse sind wohl nicht mehr auf dem neuesten Stand. SVM und VMX bieten genau diese Trennung von privilegierten Befehlen an. Dafür hat man sie erfunden. ;)
« Letzte Änderung: 02. October 2010, 13:31 von taljeth »
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

erik.vikinger

  • Beiträge: 1 277
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 02. October 2010, 13:46 »
Hallo,


@erik: Deine x86-Kenntnisse sind wohl nicht mehr auf dem neuesten Stand. SVM und VMX bieten genau diese Trennung von privilegierten Befehlen an. Dafür hat man sie erfunden.
Diese Mechanismen verhindern aber nicht "pushfd" oder "mov ax,cs" (Intel-Syntax) und damit auch nicht das ein Client die Virtualisierung durchschauen kann also ist die nicht perfekt. Gegen "pushfd" würde es helfen wenn die Steuerungs-Flag nicht im normalen Flag-Register sind und "mov ax,cs" wird in einem Flat-Memory-OS wohl nie gemacht werden. Ich bin mir ziemlich sicher das in VMware oder Virtual-Box ein OS das voll auf 386-PM-Segmentierung setzt nicht laufen könnte, in Qemu oder Bochs aber schon.


Grüße
Erik
Reality is that which, when you stop believing in it, doesn't go away.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 02. October 2010, 14:25 »
Bist du dir sicher, dass du dir SVM oder VMX schonmal angeschaut hast?
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

erik.vikinger

  • Beiträge: 1 277
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 02. October 2010, 19:31 »
Hallo,


Bist du dir sicher, dass du dir SVM oder VMX schonmal angeschaut hast?
Ich muss zugeben das ich das vor Jahren zwar gelesen hab aber wohl nicht gründlich genug. Solange der Hypervisor dem Client-OS einen sauberen physischen Speicher vorgaukeln kann braucht der Hypervisor sich nicht viel für die Segmente vom Client-OS zu interessieren so das dieses seine eigenen Segmente benutzen darf und ein "mov ax,cs" damit auch keine Lücke darstellt.

Das mit den privilegierten Befehlen ist bei x86 trotzdem nicht sehr schön gelöst, es gibt ne Menge Befehle die eigentlich jedes User-Programm braucht und die trotzdem in verschiedenen Situationen kritisch sein können. Das z.B. das IE-Flag in einem Register liegt in dem der User-Mode-Code ständig arbeitet empfinde ich einfach als ungeschickt, ich möchte nicht wissen wie viele Transistoren da nötig sind um bei jedem Schreibzugriff auf das Flag-Register zu erkennen ob eine Exception ausgelöst werden muss oder nicht.


Grüße
Erik
Reality is that which, when you stop believing in it, doesn't go away.

 

Einloggen