QEMU-Abstürze Beim Laden von Kernel
Habe ich einen C-kernel, und ich bin dem laden des kernel in QEMU-emulator. Aber wenn ich Sie laden den kernel, scheint es zum Absturz von QEMU und es beschwert sich, dass es keinen Zugriff auf die kvm-Ordner. Bedeutet es, dass die kvm fehlt, oder dass ich nicht als administrator; weil ich eingeloggt als root-administrator. Hier ist der Fehler, Informationen, die ursprünglich aus dem Terminal:
danny@ubuntu:~/Desktop$ sudo qemu -kernel os.bin
open /dev/kvm: No such file or directory
Could not initialize KVM, will disable KVM support
pci_add_option_rom: failed to find romfile "pxe-rtl8139.bin"
qemu: fatal: Trying to execute code outside RAM or ROM at 0x000a0000
EAX=00004500 EBX=00000000 ECX=00000000 EDX=00000000
ESI=00000000 EDI=00000000 EBP=00000000 ESP=00009fe0
EIP=0000fdfb EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =9000 00090000 ffffffff 00cf9300
CS =9020 00090200 0000ffff 00009b0f
SS =9000 00090000 0000ffff 00009300
DS =9000 00090000 0000ffff 00009300
FS =9000 00090000 0000ffff 00009300
GS =9000 00090000 0000ffff 00009300
LDT=0000 00000000 0000ffff 00008200
TR =0000 00000000 0000ffff 00008b00
GDT= 000cba40 00000017
IDT= 00000000 000003ff
CR0=00000010 CR2=00000000 CR3=00000000 CR4=00000000
DR0=00000000 DR1=00000000 DR2=00000000 DR3=00000000
DR6=ffff0ff0 DR7=00000400
CCS=00004500 CCD=00004546 CCO=ADDB
FCW=037f FSW=0000 [ST=0] FTW=00 MXCSR=00001f80
FPR0=0000000000000000 0000 FPR1=0000000000000000 0000
FPR2=0000000000000000 0000 FPR3=0000000000000000 0000
FPR4=0000000000000000 0000 FPR5=0000000000000000 0000
FPR6=0000000000000000 0000 FPR7=0000000000000000 0000
XMM00=00000000000000000000000000000000 XMM01=00000000000000000000000000000000
XMM02=00000000000000000000000000000000 XMM03=00000000000000000000000000000000
XMM04=00000000000000000000000000000000 XMM05=00000000000000000000000000000000
XMM06=00000000000000000000000000000000 XMM07=00000000000000000000000000000000
Aborted
Der Fehler scheint auch zu zeigen, Informationen zu sein scheint, dass NASM registriert, und es beschwert sich darüber, dass Sie nicht finden konnte eine ROM-Datei. Also könnte jemand mir bitte sagen, was ich falsch mache, würde ich schätzen Ihre Zeit und Mühe.
InformationsquelleAutor Daniel Lopez | 2011-01-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem Vorschlag von Ben Voigt ist nicht dein problem. Ich habe genau die gleiche Ausgabe, wenn ich mein kernel und es verursacht keine Probleme.
Den Grund QEMU bricht, ist die folgende:
Dies bedeutet, dass Ihr kernel versucht, code auszuführen, aus einem ungültigen Speicherbereich. So, es ist ein bug im kernel und hat nichts zu tun mit QEMU.
Edit: Nur ein Hinweis, wo dein Fehler sein kann. Blick auf Ihre register dump, es ist klar, dass die zuletzt ausgeführte Anweisung ist nur unter 640 KB (bei 0x9fffb). Auf meiner Maschine QEMU Berichte alle Speicher zwischen 637K und 1M als nicht verfügbar. Sie müssen immer vorsichtig sein, nicht zu verwenden, nicht verfügbar Speicher. Eine sichere Wette ist, um Sie nur unten bleiben 637K, bis Sie in der Lage, eine Speicher-Karte und wissen welchen Speicher Sie verwenden können.
Sie sind mit Blick auf das entscheidende detail, das ist, dass -- Adresse A000:0000 ist der Raum, wo die boot-ROMs laden. Der Grund, dass die Adresse außerhalb von ROM, ist, dass die ROM, die eigentlich vorhanden, Adresse gibt es nicht, weil der fehlende firmware-Datei. Der kernel ist nicht selbst beteiligt, der von qemu emulierte BIOS ist noch auf der Suche nach einem boot-Gerät und hat sich nicht übergeben die Kontrolle an das OS noch. Und ich weiß nicht wo du immer 0x9fffb aus, suchen Sie auf der Müllkippe in der Frage oder auf Ihr eigenes qemu-system?
Während ich bin mir nicht ganz sicher, was QEMU nicht mit geladen ROM-Dateien, das ist nicht das problem hier. Wie ich schon sagte, ich sehe diese Warnung die ganze Zeit und es verursacht keine Probleme. Ich berechnet die physikalische Adresse wie folgt: der code lief im real-Modus (CR0[0] == 0), so Segmentierung im Einsatz ist => physikalische Adresse = 0x10 * CS + EIP = 0x10 * 0x9020 + 0xfdfb = 0x9fffb.
Ich habe vor dem gleichen problem.Aber ich runned u-boot für powerpc. Das gleiche u-boot versuchte ich, ok im entwickeln-board aber nicht in qemu-system-ppc.Details in der stackoverflow.com/questions/30609694/...
Ich weiß, das ist ein sehr späten Nachtrag, aber ich kam auf genau das gleiche problem und denke, das könnte die Ursache sein. Könnten Sie bitte fügen Sie den entsprechenden Verweis -, doc-oder source-code? Und gibt es eine Abhilfe für das Problem QEMU Begrenzung Speicher unten 637K?
InformationsquelleAutor Job
Erstens, wenn es kein kvm, ie, u muss "modprobe kvm" und "modprobe kvm_intel" (oder modprobe kvm_amd" wenn Sie auf einem AMD-Prozessor), zum laden der kvm-kernel-Modul vor der Verwendung von qemu. Aber wenn qemu erkannt, es gibt keine kvm geladen, d.h. /dev/kvm nicht vorhanden ist, dann wird es noch gehen Sie vor mit der Ausführung, außer es gibt keine hardware-Virtualisierung (siehe http://en.wikipedia.org/wiki/X86_virtualization).
Weder ist die option rom ("pxe-rtl8139.bin") der Clou, ich denke, das ist, warum Sie immer noch mit der Ausführung fortfahren (siehe Qemu Quellcode):
Aber die wichtigsten Fehler in deinem Fall ist die Adresse 0xa000:
"Ein Versuch zum ausführen von code außerhalb der RAM-oder ROM-bei 0x000a0000"
Und das ist illegal, wie die Adresse, die höher als 0xa0000 heißt das memory hole. Siehe hierzu die Abbildung in:
http://www.cs.cmu.edu/~410-s07/p4 - /p4-boot.pdf
beschreiben die Aufgabe benötigt wird schriftlich ein bootloader (siehe Seite 15 der Beschreibung auf dem memory hole).
Und wie u sehen können, der Fehler ist eine ernsthafte "cpu_abort()" schwerwiegende Fehler. Im wesentlichen, in der auf Seite 5 der CMU ist bootloader-Artikel oben 0xa0000 ist die höchste Adresse u zugreifen können, während Real-Modus Booten.
InformationsquelleAutor Peter Teoh
Müssen Sie dieses Problem beheben:
Entweder die notwendigen Datei (re-install qemu?) oder ändern Sie die VM-Konfiguration und entfernen Sie die Netzwerk-Karte. Das virtuelle Netzwerk kann nicht funktionieren ohne diese Datei.
keiner arbeitet. Ich glaube, standardmäßig QEMU emuliert eine RTL8139-mit den usermode-stack.
InformationsquelleAutor Ben Voigt
Ich denke, Sie sollten zeigen, um gültig bzImage anstelle von os.bin. Ich persönlich verwende kvm -kernel arch/x86/boot/bzImage.
Gibt es zwei schöne tutorials
http://softperience.eu/wiki/Wiki.jsp?page=Developing%20Linux%20Kernel%20with%20Netbeans
http://softperience.eu/wiki/Wiki.jsp?page=Advanced%20Linux%20Kernel%20Developing%20with%20Netbeansw
mit einigen schönen tricks
InformationsquelleAutor Radek