Qemu mit KQemu

F

freddymc

Hallo allerseits!

Ich wollte mir heute (als Linuxneuling) Qemu angucken.
Dazu habe ich auch eine recht gute Anleitung gefunden: **************/forums/showthread.php?t=141201
(Warum wird hier das Wort l-i-n-u-x-f-o-r-e-n.d-e zensiert?)
Das Problem dabei wird hier angeschnitten: http://www.opensuse.org/Qemu_with_kqemu_kernel_module_support
Qemu kompeliert nur unter Verwendung von gcc 3.3.6 , mein Suse stellt lediglich gcc in der Version 4 zur Verfügung.
Ein fertiges rpm von Qemu scheint wegzufallen da man, um die qemu Beschleunigung, qemu mit kqemu selbst kompilieren muss.
Von gcc 3.3.6 habe ich leider auch kein rpm gefunden und die auf der openSUSE-Seite erwähnte Methode zu Installation von gcc 3.3.6 funktioniert nicht, bei make bootsrap spuckt der Gute 2 Fehler aus (unten in der Code Box).
Es ist schon pervers mit gcc4 den gcc3 zu bauen.

Nunja, auf http://ls11-www.cs.uni-dortmund.de/people/chimani/PG478/gcc.html wird geschrieben, dass man doch gperf RPM installieren sollte, dass man gcc3 mit einer höheren gcc Version kompilieren kann.
Aber diese Rpm finde ich nirgens, vllt. kann mir ja jemand helfen oder hat einen einfacheren besseren Weg gefunden.

:hilfe2:

Vielen Dank schonmal,

Fred

Code:
linux:/tmp/gcc-3.3.6 # make bootstrap

make[1]: Entering directory `/tmp/gcc-3.3.6/libiberty'
rm -f needed-list; touch needed-list; \
for f in atexit calloc memchr memcmp memcpy memmove memset rename strchr strerror strncmp strrchr strstr strtol strtoul tmpnam vfprintf vprintf vfork waitpid bcmp bcopy bzero; do \
  for g in mkstemps.o ; do \
    case "$g" in \
      *$f*) echo $g >> needed-list ;; \
    esac; \
  done; \
done
echo regex.o cplus-dem.o cp-demangle.o md5.o alloca.o argv.o choose-temp.o concat.o dyn-string.o fdmatch.o fibheap.o floatformat.o fnmatch.o getopt.o getopt1.o getpwd.o getruntime.o hashtab.o hex.o lbasename.o lrealpath.o make-relative-prefix.o make-temp-file.o objalloc.o obstack.o partition.o physmem.o pexecute.o safe-ctype.o sort.o spaces.o splay-tree.o strerror.o strsignal.o ternary.o xatexit.o xexit.o xmalloc.o xmemdup.o xstrdup.o xstrerror.o > required-list
make[2]: Entering directory `/tmp/gcc-3.3.6/libiberty/testsuite'
make[2]: Für das Ziel »all« ist nichts zu tun.
make[2]: Leaving directory `/tmp/gcc-3.3.6/libiberty/testsuite'
make[1]: Leaving directory `/tmp/gcc-3.3.6/libiberty'
Bootstrapping the compiler
make[1]: Entering directory `/tmp/gcc-3.3.6/gcc'
make AR_FOR_TARGET="ar" \
        RANLIB_FOR_TARGET="ranlib" \
        CC="gcc" libdir=/opt/gcc33/lib LANGUAGES="c " \
        CFLAGS="-g " MAKEINFO="/tmp/gcc-3.3.6/missing makeinfo --no-split" \
        MAKEINFOFLAGS="" COVERAGE_FLAGS=
make[2]: Entering directory `/tmp/gcc-3.3.6/gcc'
TM_DEFINES="" \
HEADERS="auto-host.h ansidecl.h  i386/i386.h i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h defaults.h" XM_DEFINES="POSIX" \
TARGET_CPU_DEFAULT="TARGET_CPU_DEFAULT_pentiumpro" \
/bin/sh ./mkconfig.sh config.h
config.h is unchanged
TM_DEFINES="" \
HEADERS="auto-host.h ansidecl.h  i386/i386.h i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h defaults.h" XM_DEFINES="POSIX" \
TARGET_CPU_DEFAULT="TARGET_CPU_DEFAULT_pentiumpro" \
/bin/sh ./mkconfig.sh hconfig.h
hconfig.h is unchanged
echo "/* This file is machine generated.  Do not edit.  */" > tmp-gtyp.h
echo "static const char *srcdir = "  >> tmp-gtyp.h
echo "\".\"" >> tmp-gtyp.h
echo ";" >> tmp-gtyp.h
echo "static const char *lang_files[] = {" >> tmp-gtyp.h
ll="./c-lang.c  ./c-parse.in  ./c-tree.h  ./c-decl.c  ./c-common.c  ./c-common.h  ./c-pragma.c  ./c-objc-common.c "; \
for f in $ll; do \
echo "\"$f\", "; done >> tmp-gtyp.h
echo "NULL};" >> tmp-gtyp.h
echo "static const char *langs_for_lang_files[] = {" >> tmp-gtyp.h
ff="c  c  c  c  c  c  c  c "; \
for f in $ff; do \
echo "\"$f\", " ; done  >> tmp-gtyp.h
echo "NULL};" >> tmp-gtyp.h
echo "static const char *all_files[] = {" >> tmp-gtyp.h
gf="config.h auto-host.h ./../include/ansidecl.h ./config/i386/i386.h ./config/i386/unix.h ./config/i386/att.h ./config/dbxelf.h ./config/elfos.h ./config/svr4.h ./config/linux.h ./config/i386/linux.h ./defaults.h ./defaults.h ./location.h ./../include/hashtab.h ./bitmap.h ./function.h  ./rtl.h ./optabs.h ./tree.h ./libfuncs.h ./hashtable.h ./real.h ./varray.h ./ssa.h ./insn-addr.h ./cselib.h ./c-common.h ./c-tree.h ./basic-block.h ./alias.c ./bitmap.c ./cselib.c ./dwarf2out.c ./emit-rtl.c ./except.c ./explow.c ./expr.c ./fold-const.c ./function.c ./gcse.c ./integrate.c ./lists.c ./optabs.c ./profile.c ./ra-build.c ./regclass.c ./reg-stack.c ./sdbout.c ./stmt.c ./stor-layout.c ./tree.c ./varasm.c ./config/i386/i386.c ./c-lang.c ./c-parse.in ./c-tree.h ./c-decl.c ./c-common.c ./c-common.h ./c-pragma.c ./c-objc-common.c"; \
for f in $gf; do \
echo "\"$f\", "; done >> tmp-gtyp.h
echo " NULL};" >> tmp-gtyp.h
echo "static const char *lang_dir_names[] = { \"c\", " >> tmp-gtyp.h
gf=""; \
for l in $gf; do \
echo "\"$l\", "; done >> tmp-gtyp.h
echo "NULL};" >> tmp-gtyp.h
/bin/sh ./move-if-change tmp-gtyp.h gtyp-gen.h
gtyp-gen.h is unchanged
gcc   -g  -DIN_GCC   -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wtraditional -pedantic -Wno-long-long   -DHAVE_CONFIG_H -DGENERATOR_FILE  -o gengtype \
 gengtype.o gengtype-lex.o gengtype-yacc.o ../libiberty/libiberty.a
gengtype.o: In function `adjust_field_rtx_def':
./gengtype.c:430: undefined reference to `lexer_line'
./gengtype.c:473: undefined reference to `lexer_line'
./gengtype.c:530: undefined reference to `lexer_line'
./gengtype.c:573: undefined reference to `lexer_line'
./gengtype.c:620: undefined reference to `lexer_line'
gengtype.o:./gengtype.c:633: more undefined references to `lexer_line' follow
gengtype.o: In function `main':
./gengtype.c:2609: undefined reference to `parse_file'
gengtype-yacc.o: In function `yyparse':
/tmp/gcc-3.3.6/gcc/gengtype-yacc.c:1023: undefined reference to `yylex'
gengtype-yacc.o: In function `yyparse':
/tmp/gcc-3.3.6/gcc/gengtype-yacc.y:70: undefined reference to `lexer_line'
/tmp/gcc-3.3.6/gcc/gengtype-yacc.y:72: undefined reference to `lexer_line'
/tmp/gcc-3.3.6/gcc/gengtype-yacc.y:73: undefined reference to `lexer_toplevel_done'
/tmp/gcc-3.3.6/gcc/gengtype-yacc.y:79: undefined reference to `lexer_line'
/tmp/gcc-3.3.6/gcc/gengtype-yacc.y:81: undefined reference to `lexer_toplevel_done'
/tmp/gcc-3.3.6/gcc/gengtype-yacc.y:89: undefined reference to `lexer_line'
/tmp/gcc-3.3.6/gcc/gengtype-yacc.y:94: undefined reference to `lexer_line'
/tmp/gcc-3.3.6/gcc/gengtype-yacc.y:99: undefined reference to `lexer_line'
/tmp/gcc-3.3.6/gcc/gengtype-yacc.y:107: undefined reference to `lexer_toplevel_done'
/tmp/gcc-3.3.6/gcc/gengtype-yacc.y:119: undefined reference to `lexer_line'
/tmp/gcc-3.3.6/gcc/gengtype-yacc.y:162: undefined reference to `lexer_line'
/tmp/gcc-3.3.6/gcc/gengtype-yacc.y:162: undefined reference to `lexer_line'
/tmp/gcc-3.3.6/gcc/gengtype-yacc.y:173: undefined reference to `lexer_line'
/tmp/gcc-3.3.6/gcc/gengtype-yacc.y:173: undefined reference to `lexer_line'
gengtype-yacc.o:/tmp/gcc-3.3.6/gcc/gengtype-yacc.y:190: more undefined references to `lexer_line' follow
gengtype-yacc.o: In function `yyparse':
/tmp/gcc-3.3.6/gcc/gengtype-yacc.c:1504: undefined reference to `yyerror'
/tmp/gcc-3.3.6/gcc/gengtype-yacc.c:1508: undefined reference to `yyerror'
/tmp/gcc-3.3.6/gcc/gengtype-yacc.c:1512: undefined reference to `yyerror'
/tmp/gcc-3.3.6/gcc/gengtype-yacc.c:1627: undefined reference to `yyerror'
collect2: ld returned 1 exit status
make[2]: *** [gengtype] Fehler 1
make[2]: Leaving directory `/tmp/gcc-3.3.6/gcc'
make[1]: *** [stage1_build] Fehler 2
make[1]: Leaving directory `/tmp/gcc-3.3.6/gcc'
make: *** [bootstrap] Fehler 2
 
Zuletzt bearbeitet von einem Moderator:
freddymc schrieb:
Hallo allerseits!

Ich wollte mir heute (als Linuxneuling) Qemu angucken.
Dazu habe ich auch eine recht gute Anleitung gefunden: **************/forums/showthread.php?t=141201
(Warum wird hier das Wort l-i-n-u-x-f-o-r-e-n.d-e zensiert?)

Weil es vermehrt zur indirekten/direkten Werbung benutzt wurde.
So sind u.a. auch andere Spamlinks gesperrt worden - sofern es sich wieder bessert, nehm ich die auch wieder raus ;)


Das Problem dabei wird hier angeschnitten: http://www.opensuse.org/Qemu_with_kqemu_kernel_module_support
Qemu kompeliert nur unter Verwendung von gcc 3.3.6 , mein Suse stellt lediglich gcc in der Version 4 zur Verfügung.
Ein fertiges rpm von Qemu scheint wegzufallen da man, um die qemu Beschleunigung, qemu mit kqemu selbst kompilieren muss.
Von gcc 3.3.6 habe ich leider auch kein rpm gefunden und die auf der openSUSE-Seite erwähnte Methode zu Installation von gcc 3.3.6 funktioniert nicht, bei make bootsrap spuckt der Gute 2 Fehler aus (unten in der Code Box).
Es ist schon pervers mit gcc4 den gcc3 zu bauen.

Nunja, auf http://ls11-www.cs.uni-dortmund.de/people/chimani/PG478/gcc.html wird geschrieben, dass man doch gperf RPM installieren sollte, dass man gcc3 mit einer höheren gcc Version kompilieren kann.
Aber diese Rpm finde ich nirgens, vllt. kann mir ja jemand helfen oder hat einen einfacheren besseren Weg gefunden.

Warum sollte das nicht gehen ?
Du kannst doch das qemu.rpm verwenden und das kqemu modul bauen ;)

1. apt install qemu

2. kqemu bauen ...
Code:
make -C /lib/modules/2.6.13-15.7-default/build M=`pwd` modules
make[1]: Entering directory `/usr/src/linux-2.6.13-15.7-obj/i386/default'
make -C ../../../linux-2.6.13-15.7 O=../linux-2.6.13-15.7-obj/i386/default modules
  CC [M]  /root/qemu-0.8.0/kqemu/kqemu-linux.o
cp /root/qemu-0.8.0/kqemu/kqemu-mod-i386.o /root/qemu-0.8.0/kqemu/kqemu-mod.o
  LD [M]  /root/qemu-0.8.0/kqemu/kqemu.o
  Building modules, stage 2.
  MODPOST
Warning: could not find /root/qemu-0.8.0/kqemu/.kqemu-mod.o.cmd for /root/qemu-0.8.0/kqemu/kqemu-mod.o
  CC      /root/qemu-0.8.0/kqemu/kqemu.mod.o
  LD [M]  /root/qemu-0.8.0/kqemu/kqemu.ko
make[1]: Leaving directory `/usr/src/linux-2.6.13-15.7-obj/i386/default'
 
Warum sollte das nicht gehen ?
Du kannst doch das qemu.rpm verwenden und das kqemu modul bauen

laut der openSUSE seite nicht oder?
The fixed version of qemu that comes with SuSE Linux does not include the kqemu kernel module. It doesn't seem possible to use the kqemu sources with the source RPM provided by SuSE to build the module with the official compiler.
Man soll doch den qemu enpacken und im qemu verzeichnis dann kqemu entpacken, dann qemu kompilieren dabei wird dann kqemu berücksichtigt.
Hast du das ganze schonmal gemacht?

leider verstehe ich deinen geposteten code nicht... X(
Kannst du mir das näher erläutern? :think:

Danke,
Fred

[EDIT] Ich habs mal so gemacht wie du's gesagt hast: rpm installiert kqemu sourcen entpackt und dann make -C /lib/modules/2.6.13-15-default/build M=`pwd` modules eingegeben
das darauf folgende make install gab
linux:/tmp/kqemu # make install
cat install.sh >install
chmod a+x install
aus.
allerdings konnte ich dann kein modprobe kqemu machen es kam immer
FATAL: Module kqemu not found.

Wie jetzt weiter?
 
Zuletzt bearbeitet von einem Moderator:
Das war nur ein Code Beispiel damit du siehst das es klappt unter SuSE 10.

Ich hab das rpm mittels apt4rpm installiert ... das 0.8er qemu Source gezogen .. ./configure make und dann die kqemu source reingelegt und gebaut ....

Das sollte doch auch bei dir klappen ...
 
Ah.
also erst qemu rpm installieren und dann noch mal qemu + kqemu drüber?
 
Jein - RPM installieren, aber die Source von qemu nur bauen (oder soweit make laufen lassen bis er selbst abbricht) damit du kqemu bauen lassen kannst (das dann aber mit make install installieren!).
 
okay...
kontest du qemu mit gcc 4 bauen?

Vielen Dank ich probiers gleich nachher mal aus...

also ich habe kqemu verzeichnis ins qemu qeullverzeichnis gelegt.
in qemu: make -> kommt Fehler, abgebrochen
cd kqemu
make -C /lib/modules/2.6.13-15-default/build M=`pwd` modules
make install

doch dann kommt: make: »install« ist bereits aktualisiert.

;( *heul*

df gibt jetzt allerdings folgendes aus:

tmpfs 517988 12 517976 1% /dev/shm

wenn ich in der qemu konsole 'info kqemu' eingebe, meldet er mir, dass kqemu unterstützung fehlt.

weiß nich mehr weiter...
Danke,
Fred

[EDIT] jetzt hab ich gperf (apt), bison und flex installiert, jetzt scheint es als könnte ich den gcc 3.3.6 bauen... mal sehen

[EDIT_2] jawollja! gcc 3.3.6 wurde kompeliert, damit konnte ich erst quemu bauen (gcc 3) dann ins kqemu verz. (wiederum im quemu verz.) dort bauen (gcc 4!) dann wieder ins qemu dann make install.
Es hat geklappt :)
 
Zuletzt bearbeitet von einem Moderator:

Ähnliche Themen

GCC Crosscompiler unter Debian Wheezy

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

Shellskript - Fehler in Cron

Akonadi startet nicht mehr

Zurück
Oben