2014年1月4日 星期六

x86 qemu 使用方式

讓 qemu 指執行 kenel
sudo qemu-system-x86_64 -kernel /boot/vmlinuz-3.8.0-19-generic -m 256
這段指令執行到最後會發生 kernel panic 。因為找不到 root
sudo qemu-system-x86_64 -kernel /boot/vmlinuz-3.8.0-19-generic -initrd /boot/initrd.img-3.8.0-19-generic -append "root=/ram/" -m 256
上面這個指令複雜一些,kenel 會讀取 initrd (用來讀取其他檔案系統的玩意,細節) 。他會執行這個執行檔在 initrd 裡的 /init 這個執行檔,最後會失敗。進入 terminal 模式。你可以打 cat /init 看他做了什麼。




如果你要從光碟開機,可以打。
qemu-system-i386 -net user -cdrom alpine-2.7.2-x86.iso
-net 是網路相關的指令

你想要從光碟開機,並安裝東西到印象檔的話,可以打

qemu -m 256 -hda winxp.img -cdrom /dev/cdrom -boot d
-boot 是指從 hdd 開機,當你有指定 cdrom,hdd 就是 cdrom。


建立 image 的方法

qemu-img create -f qcow2 winxp.img 3G

如果你要開啟 qemu 的 monitor 模式,則使用像的下面的指令
qemu-system-i386  -monitor telnet:127.0.0.1:1234,server,nowait
如果不想讓 qemu 開啟新視窗的話,則使用像的下面的指令
qemu-system-i386 -curses 

如果他無法顯示畫面,則設定環境變數
export DISPLAY=:0.0

如果你要跑 ubuntu 的 iso 建議指定記憶體大小,如
qemu-system-x86_64 -machine accel=kvm -vga std ubuntu-12.04.3-desktop-amd64.iso  -m 1024

你也可以根據你的 CPU 來下一些優化的參數,如
qemu-system-x86_64 -machine accel=kvm -vga std ubuntu-12.04.3-desktop-amd64.iso -cpu qemu64,+ssse3,+sse4.1,+sse4.2,+x2apic -m 1024

詳見http://www.linux-kvm.org/page/Tuning_KVM


註:記得安裝 kvm 不然 qemu 跑的很慢。

sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

執行 qemu 時,記得加 -machine accel=kvm,如

qemu-system-x86_64 -machine accel=kvm -m 1024 -vga std -cpu qemu64,+ssse3,+sse4.1,+sse4.2,+x2apic -monitor telnet:127.0.0.1:1234,server,nowait


如果要讓 qemu 讀到實體裝置的話,使用下面指令
qemu-system-x86_64 -machine accel=kvm -m 1024 -vga std -cpu qemu64,+ssse3,+sse4.1,+sse4.2,+x2apic -monitor telnet:127.0.0.1:1234,server,nowait -device usb-host,hostbus=2,hostaddr=3


hostbus 和 hostaddr 可以使用 lsusb 來觀看

你也可以在系統啟動後再替 guest 加上 usb。不過,要這麼做,你必須要開啟 monitor。之後使用 telnet 連進去,再輸入下面指令

device_add usb-host,hostbus=2,hostaddr=11

沒有留言:

張貼留言