ラベル qemu の投稿を表示しています。 すべての投稿を表示
ラベル qemu の投稿を表示しています。 すべての投稿を表示

2010年2月24日水曜日

KVM on gentoo with qemu git source

gentooで KVM + qemu を動かす

1. linux kernelの設定
  Processor type and features > Paravirtualized guest support
   - KVM paravirtualized clock
   - KVM Guest support
  Virtualization
   - Kernel-based Virtual Machine (KVM) support
   - KVM for Intel processors support
   - KVM for AMD processors support
   - PCI driver for virtio devices
   - Virtio balloon driver
  ※ Guest supportはいらないかも、processors supportも必要な方だけで良さげ

2. kernel moduleの設定
  kvmのモジュール(kvm-intel)を group kvm でロードされるようにする
 
  groupadd kvm
  gpasswd -a YOURACCOUNT kvm

  cat /etc/udev/rules.d/65-kvm.rules
  KERNEL=="kvm", MODE="0660", GROUP="kvm"
  ACTION=="add|change", SUBSYSTEM=="dmi", KERNEL=="id", RUN+="/bin/sh -c 'grep -q  vmx /proc/cpuinfo && /sbin/modprobe kvm-intel; grep -q svm /proc/cpuinfo && /sbin/modprobe kvm-amd'"

  ※ 65-kvm.rules は
     ebuild /usr/portage/app-emulation/kvm-kmod/kvm-kmod-2.6.32.7.ebuild fetch
     でフェッチしたファイルの scripts/65-kvm.rules と一緒

3. qemuのコンパイル

  git clone git://git.savannah.nongnu.org/qemu.git
  ./configure --prefix=/opt --disable-xen --enable-kvm --kerneldir=/usr/src/linux --target-list=x86_64-softmmu,i386-softmmu
  make install

  ※ kerneldirでlinux kernel sourceを指定しないと
     #error Missing KVM capability KVM_CAP_DESTROY_MEMORY_REGION_WORKS
     なエラーが発生する

4. qemuの起動と確認
  /opt/bin/qemu -enable-kvm
  で実行して、Ctrl+Alt+2 で info kvm を実行してみる
  (qemu) info kvm
  kvm support: enabled

  

2010年1月28日木曜日

qemu on opensolaris

$ uname -a
SunOS opensolaris 5.11 snv_111b i86pc i386 i86pc Solaris
の上で qemuを動かす。

http://hub.opensolaris.org/bin/view/Project+qemu/BuildingOnOS200805
上記サイトにある
QEMU TCG (Tiny Code Generator) source SVN version 0.9.1, June 22, 2008
は ok.
subversion でチェックアウトしたヤツはdebianのインストーラが途中で固まる。

コンパイル
./configure --prefix=/opt/qemu --target-list=x86_64-softmmu,i386-softmmu --disable-kqemu
pfexec gmake install

qemuのオプション
qemu -m 512 -k en-us -hda hda.img -boot c -net user -net nic,model=rtl8139 -redir tcp:5022::22

で起動して、Host側から

ssh -X localhost -p 5022

で接続すればログインして、X11 forwardingができる。

2009年8月6日木曜日

live-android on qemu

http://code.google.com/p/live-android/

networkがダメかと思ったら、なんだ、動くんじゃん。

http://code.google.com/p/live-android/issues/detail?id=26

と言う訳で、qemuでnetworkを使う場合には
-net nic,model=pcnet
を付ければ良い。

#!/bin/bash
set -x
User=$USER
TAP=$(sudo tunctl -b -u $User)
sudo /sbin/ifconfig $TAP 0.0.0.0 promisc up
sudo /sbin/brctl addif br0 $TAP
qemu -k en-us -m 256 -cdrom liveandroidv0.2.iso -boot d -net nic,model=pcnet -net tap,ifname=$TAP,script=no
sudo tunctl -d $TAP


Mac Bookだと
Alt + fn + F1 でコンソール
Alt + fn + F7 でGUI
ミドルクリックで Home戻る
が、menuキーがないっす。"~"も入力できないっす。
"~"はコンソールだと入力できるんだけどなぁ

=> Menuキーは
xmodmap -e "keycode 133=Menu"
として、左アップルキーを割り合てて解決♪

しっかし、DNS設定するのに
setprop net.eth0.dns1 yourDNS
って、なんですかコレ。

2009年6月4日木曜日

mips in qemu

qemu-system-mips を使ってみる。
を使ってみる。

と言っても、クロスコンパイラ用意できてないし、
とりあえず、test imageで...
http://www.nongnu.org/qemu/download.html
mips-test-0.2.tar.gz の run-qemu にある通り

qemu-system-mips -kernel vmlinux-2.6.18-3-qemu -initrd initrd.gz -append "console=ttyS0 init=/bin/sh" -nographic -m 128 -hda ../hda.img

で、あっさり起動。

qemu: Warning, could not load MIPS bios '/usr/share/qemu/mips_bios.bin'
Linux version 2.6.18-3-qemu (Debian 2.6.18-8) (waldi@debian.org) (gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-20)) #1 Mon Dec 11 02:18:57 UTC 2006
CPU revision is: 00019300
FPU revision is: 00739300
Determined physical RAM map:
memory: 08000000 @ 00000000 (usable)
Initial ramdisk at: 0x802d7000 (2663940 bytes)
Built 1 zonelists. Total pages: 32768
Kernel command line: rd_start=0x802d7000 rd_size=2663940 console=ttyS0 init=/bin/sh
...

やっぱり、mips_bios.bin が無いって言われてるなぁ。
u-boot をコンパイルすればいいのかな...

2008年10月6日月曜日

Gentoo & qemu その2

gentoo gcc-3.4.6 で cvs版の qemu をコンパイルしようとするも...

release_0_9_0/target-i386/ops_sse.h:213: error: this is
the insn:
(insn:HI 36 35 37 3 release_0_9_0/target-i386/ops_sse.h
:207 (parallel [
(set (reg:DI 63 [
.q ])
(lshiftrt:DI (reg:DI 63 [
.q ])
(subreg:QI (reg/v:SI 60 [ shift ]) 0)))
(clobber (scratch:SI))
(clobber (reg:CC 17 flags))
]) 309 {lshrdi3_1} (insn_list 33 (insn_list 35 (nil)))
(expr_list:REG_DEAD (reg/v:SI 60 [ shift ])
(expr_list:REG_UNUSED (reg:CC 17 flags)
(expr_list:REG_UNUSED (scratch:SI)
(nil)))))
release_0_9_0/target-i386/ops_sse.h:213: 前のエラーにより混乱していますので、脱出します
make[1]: *** [op.o] エラー 1


gentoo の gcc-3.4.6 はダメ?らしい。

http://docs.openmoko.org/trac/ticket/1093

しかたなく...

/etc/portage/package.keywords に sys-devel/gcc:3.3 ~x86 を追加して、
emerge -av sys-devel/gcc:3.3

で、gcc-3.3.6 をインストール。

qemu は ./configure --host-cc=/usr/bin/gcc-3.3.6 --cc=/usr/bin/gcc-3.3.6
で compile できました♪

2008年9月15日月曜日

Gentoo & qemu

http://gentoo-wiki.com/HOWTO:_Qemu

gcc 4.X だとコンパイルできないので、3.X を持ってくる。
emerge -av sys-devel/gcc:3.4

- x86_64環境で /etc/make.conf に CFLAGS="-O2 -march=core2 -pipe" を書いてる場合は
sudo sh -c "CFLAGS=\"-O2 -pipe\" CXXFLAGS=\"-O2 -pipe\" emerge sys-devel/gcc:3.4"

gcc-3.4 でコンパイル
sudo sh -c "CC=gcc-3.4 emerge qemu-softmmu"

ネットワークに tun を使うならコレも
emerge sys-apps/usermode-utilities

ネットワークに bridge を使うならコレも
emerge net-misc/bridge-utils

kqemuを使うなら
cat /etc/modules.autoload.d/kernel-2.6
kqemu major=0

group qemu に追加
gpasswd -a HOGE qemu

ネットワーク込みの起動スクリブトはこんなのでいいらしい。

#!/bin/bash
set -x
User=$USER
TAP=$(sudo tunctl -b -u $User)
sudo /sbin/ifconfig $TAP 0.0.0.0 promisc up
sudo /sbin/brctl addif br0 $TAP
qemu -hda hda.img -net nic -net tap,ifname=$TAP,script=no
sudo tunctl -d $TAP

もちろん、ネットワークはbridgeで設定してないとダメ。
/etc/init.d/net.eth0 stop
brctl addbr br0
brctl addif br0 eth0
ifconfig eth0 up
ifconfig br0 up
dhcpcd br0

kgdb on linux-2.6.26

kernel 2.6.26には kgdbがマージされている。
以下のオプションを有効にしたkernelを作成。

Kernel hacking
KGDB: kernel debugging with remote gdb
KGDB: use kgdb over the serial console

grub menu.lstのkernelオプションに以下を追加。
kgdboc=ttyS1,9600 kgdbwait

qemu のserialで kgdbに接続するなら
オプションに -serial stdin -serial pty を
付けて起動し、ホスト側で gdb を起動

cd linux-2.6.26
gdb
(gdb) file vmlinux
(gdb) set remotebaud 9600
(gdb) break init_post
(gdb) target remote /dev/pts/0

で、kgdbに接続できる。

けど、gdbを Ctrl-c で止めると再接続できないよ ^^;

結局、qemu使った方がラク

qemu -s -kernel linux-2.6.26/arch/x86/boot/bzImage -h -initrd initrd-2.6.26.img da hda.img -append "root=/dev/VolGroup00/LogVol00"

(gdb) target remote localhost:1234

... gdbの接続待ってくれないのがイマイチですが...

moduleをデバッグする場合は...
linux起動後、ターゲットモジュールを insmod して、
cat /proc/modules で アドレスを確認。
...
ne2k_pci 8680 0 - Live 0xc8815000
...

gdb で symbol をロードすれば良い。
(gdb) add-symbol-file drivers/net/ne2k-pci.ko 0xc8815000
(gdb) break ne2k_pci_open

で、ifconfig eth0 X.X.X.X/24 とかすると break する。