當前位置:首頁 » 操作系統 » qemu源碼下載

qemu源碼下載

發布時間: 2023-09-19 02:47:03

1. qemu如何使用

qemu從某種意義上功能類似於vmware/virtual box之類的軟體,可以讓你在當前OS中運行其它的操作系統,但是這僅僅是qemu的一種功能

qemu還可以模擬不同的cpu架構下的系統,比如在普通的個人pc上運行 arm linux之類,這個vmware之類的可能沒有

關於qemu的使用
先到官網上下載qemu的源代碼,目前是 1.2,如果使用的是linux系統,這個好辦,直接編譯安裝,網上有不少說明的文檔

使用的過程一般分為三步
1. 創建虛擬機文件系統
qemu-img create /f qcow2 xxx.img 10G

2. 在虛擬機文件系統中安裝操作系統
qemu-system-i386 -hda xxx.img -cdrom xxx.iso -boot d 以xxx.img為文件系統,xxx.iso是系統安裝ISO文件

3. 運行安裝好的操作系統
qemu-system-i386 -hda xxx.img 運行xxx.img中的系統

以上的命令參數都比較簡單,實際使用中需根據具體情況自己配置

2. KVM與XEN區別是什麼

一、KVM簡介

KVM是一個全虛擬化的解決方案。可以在x86架構的計算機上實現虛擬化功能。但KVM需要CPU中虛擬化功能的支持,只可在具有虛擬化支持的CPU上運行,即具有VT功能的Intel CPU和具有AMD-V功能的AMD CPU。

Xen與KVM的比較

Xen是Linux下的一個虛擬化解決方案,但由於被Citrix收購後,變成了和紅帽企業版一樣了,賣服務收取費用,Redhat從rhel6.0開始已經從內核中把XEN踢出去了,全心投入開發免費的KVM,雖然市場上老用戶還在用Xen,但相信kvm會逐步佔領大面積的市場,必竟有redhat做為強大支持源。

Xen的實現方法是運行支持Xen功能的kernel,這個kernel是工作在Xen的控制之下,叫做Domain0,使用這個kernel啟動機器後,你可以在這個機器上使用qemu軟體,虛擬出多個系統。Xen的缺點是如果你需要更新Xen的版本,你需要重新編譯整個內核,而且,稍有設置不慎,系統就無法啟動。

相比較,KVM就簡化的多了。它不需要重新編譯內核,也不需要對當前kernel做任何修改,它只是幾個可以動態載入的.ko模塊。它結構更加精簡、代碼量更小。所以,出錯的可能性更小。並且在某些方面,性能比Xen更勝一籌。

二、KVM的使用

現在以Turbolinux 11版本為基礎,介紹KVM的使用方法。

在安裝之前,你需要先確認,你的CPU是否支持虛擬化技術,執行:

# egrep '^flags.*(vmx|svm)' /proc/cpuinfo

如果有輸出返回,則表示你的CPU支持虛擬化技術。

1.KVM的安裝

從官方網站下載KVM源碼包:http://kvm.qumranet.com
我們使用KVM-33版本

# tar zxf kvm-33.tar.gz
# cd kvm-33
# ./configure --prefix=/usr/local/kvm-33
# make
# make install

make install後,kvm的模塊會安裝到/lib/moles/$KernelVersion/extra/目錄下。其他相關文件會安裝到/usr/local/kvm-33/目錄下。

將kvm相關目錄連接到系統目錄中

# ln -s /usr/local/kvm-33/bin/* /usr/bin/
# ln -s /usr/local/kvm-33/lib/* /usr/lib/
(若為x86_64系統,則執行: ln -s /usr/local/kvm-33/lib64/* /usr/lib64/)
# ln -s /usr/local/kvm-33/include/kvmctl.h /usr/include/
# ln -s /usr/local/kvm-33/include/linux/* /usr/include/linux/
# ln -s /usr/local/kvm-33/share/qemu /usr/share/

2.KVM的使用

a.你需要先建立一個映像文件作為虛擬系統的硬碟

# mkdir /images
# cd /images
# /usr/bin/qemu-img -f qcow gtes11.img 20G

b.創建網路配置腳本

# echo 』/sbin/ifconfig $1 10.0.1.1 netmask 255.255.255.0』 > /etc/qemu-ifup

c.載入KVM模塊

Intel CPU使用:
# modprobe kvm-intel
AMD CPU使用:
# modprobe kvm-amd

d.安裝虛擬系統

# /usr/bin/qemu-i386 -m 512 -k en-us -M pc -hda /images/gtes11.img -cdrom /iso/zuma-SP3-rc3-6-\
disc1-20061031.iso -net nic,vlan=1,model=rtl8139,macaddr=00:00:00:00:99:01 -net tap,vlan=1,ifname=tap0,\
script=/etc/qemu-ifup -vnc localhost:1 -boot d

在另一個終端執行:

# vncviewer localhost:1

參數分析:

我們為虛擬系統分配512MB內存。使用gtes11.img作為它的第一塊硬碟,使用Turbolinux10.5的disc1作為它的光碟。
並從光碟引導。它有一塊rtl8139的網卡,MAC地址為:00:00:00:00:99:01,並把這個網卡與主機的tap0介面連接。
tap0介面使用/etc/qemu-ifup腳本進行初始化。虛擬系統的輸出作為一個vnc伺服器,綁定在主機的localhost:1上。

註:

1.若為x86_64系統,則使用/usr/bin/qemu-system-x86_64代替qemu-i386

2.在64位系統上,可以安裝32位和64位的虛擬系統。但在32位系統上,只能安裝32位的虛擬系統。

qemu參數介紹:

-da 映像文件:使用映像文件作為虛擬系統的第一塊硬碟。同樣還可以使用hdb、hdc、hdd指定第2、3、4塊硬碟。
-drom 光碟映像文件:使用光碟映像文件作為虛擬系統的光碟。
-oot [a|c|d|n]:設置虛擬系統的引導順序。a為軟碟機、c為硬碟、d為光碟機、n為網路。
- 內存大小:設置虛擬系統使用的內存大小,單位為MB。
- 語言:設置虛擬系統鍵盤類型。
-et nic[,vlan=n][,macaddr=addr][,model=type]
建立一個虛擬網卡,並把它連接到VLAN的n埠上。
-net tap[,vlan=n][,fd=h][,ifname=name][,script=file]

把主機的TAP網路介面連接到VLAN的n埠上,並使用script指定的腳本進行初始化。

3. Qemu安裝之後如何卸載

qemu卸載根據安裝方式的不同也會有響應的卸載方式:(1)源碼編譯安裝需要手動卸載;(2)ubutnu pakage安裝需要命令卸載
(1) 源碼編譯安裝的qemu需要手動卸載:
可執行文件默認放在/usr/local/bin
庫文件默認存放在/usr/local/libexec
配置文件默認存放在/usr/local/etc
共享文件默認存放在/usr/local/share

卸載源碼只需將上面四個目錄中相關文件或者目錄刪除
#

# rm -rf /usr/local/bin/qemu-*
# rm -rf /usr/local/libexec/qemu-bridge-helper
# rm -rf /usr/local/etc/qemu

# rm -rf /usr/local/share/qemu
(2) pakage安裝方式需命令卸載
刪除包和相關依賴
# sudo apt-get remove --auto-remove qemu-system-x86
刪除配置文件和相關的數據文件
# sudo apt-get purge --auto-remove qemu-system-x86

4. qemu怎樣為選擇arm linux內核鏡像選擇運行arm平台

下載Linux內核

下載內核有兩種方法,一種是用git直接下載內核代碼樹,方便後面的內核開發。另一種是直接到內核社區下載對應版本的源碼包。我採用第一種方法,但後面發現主線上3.18版本和後面版本的代碼,使用這種搭建方法運行不起來。目前未查明問題的根因。如果讀者想快速搭建成功,建議選用3.16版本的內核進行搭建。

安裝arm的交叉編譯工具鏈

想必做嵌入式開發的朋友,對交叉編譯工具鏈不陌生。如果你訂制一個交叉編譯工具鏈,建議你使用crosstool-ng開源軟體來構建。但在這里建議直接安裝arm的交叉編譯工具鏈:

sudoapt-getinstallgcc-arm-linux-gnueabi

編譯Linux內核

生成vexpress開發板子的config文件:

makeCROSS_COMPILE=arm-linux-gnueabi-ARCH=armvexpress_defconfig

編譯:

makeCROSS_COMPILE=arm-linux-gnueabi-ARCH=arm

生成的內核鐿像位於arch/arm/boot/zImage,後續qemu啟動時需要使用該鏡像。

下載和安裝qemu模擬器

其實Ubuntu12.04有qemu的安裝包,但由於版本較低,對vexpress開發板支持不友好,建議下載高版本的qemu:

wget

配置qemu前,需要安裝幾個軟體包:

sudoapt-getinstallzlib1g-dev

sudoapt-getinstalllibglib2.0-0

sudoapt-getinstalllibglib2.0-dev

配置qemu,支持模擬arm架構下的所有單板:

./configure--target-list=arm-softmmu--audio-drv-list=

編譯和安裝:

make

makeinstall

測試qemu和內核能否運行成功

qemu已經安裝好了,內核也編譯成功了,到這里最好是測試一下,編譯出來的內核是否OK,或者qemu對vexpress單板支持是否夠友好。

運行命令很簡單:

qemu-system-arm-Mvexpress-a9-m512M-kernel/home/ivan/kernel_git/linux/arch/arm/boot/zImage-nographic-append"console=ttyAMA0"

如果看到內核啟動過程中的列印,說明前的搭建是成功的。

這里簡單介紹下qemu命令的參數:

-Mvexpress-a9模擬vexpress-a9單板,你可以使用-M?參數來獲取該qemu版本支持的所有單板

-m512M單板運行物理內存512M

-kernel/home/ivan/kernel_git/linux/arch/arm/boot/zImage告訴qemu單板運行內核鏡像路徑

-nographic不使用圖形化界面,只使用串口

-append"console=ttyAMA0"內核啟動參數,這里告訴內核vexpress單板運行,串口設備是哪個tty。

注意:

我每次搭建,都忘了內核啟動參數中的console=參數應該填上哪個tty,因為不同單板串口驅動類型不盡相同,創建的tty設備名當然也是不相同的。那vexpress單板的tty設備名是哪個呢?其實這個值可以從生成的.config文件CONFIG_CONSOLE宏找到。

如果搭建其它單板,需要注意內核啟動參數的console=參數值,同樣地,可從生成的.config文件中找到。

製作根文件系統

到這里是否大功告成了呢?其實在上面的測試中,你會發現內核報panic,因為內核找不到根文件系統,無法啟init進程。

根文件系統要考慮兩個方面:

1.根文件系統的內容

如果你看過《LinuxFromScratch》,相信你會對這一步產生恐懼感,但如果一直從事嵌入式開發,就可以放下心來。根文件系統就是簡單得不能再簡單的幾個命令集和態動態而已。為什麼LinuxFromScratch會有那麼復雜,是因為它要製作出一個Linux發生版。但在嵌入式領域,幾乎所有的東西,都是mini版本,根文件系統也不例外。

本文制本的根文件系統=busybox(包含基礎的Linux命令)+運行庫+幾個字元設備

2.根文件系統放在哪裡

其實依賴於每個開發板支持的存儲設備,可以放到NorFlash上,也可以放到SD卡,甚至外部磁碟上。最關鍵的一點是你要清楚知道開發板有什麼存儲設備。

本文直接使用SD卡做為存儲空間,文件格式為ext3格式

下載、編譯和安裝busybox

wget

makedefconfig

makeCROSS_COMPILE=arm-linux-gnueabi-

makeinstallCROSS_COMPILE=arm-linux-gnueabi-

安裝完成後,會在busybox目錄下生成_install目錄,該目錄下的程序就是單板運行所需要的命令。

形成根目錄結構

先在Ubuntu主機環境下,形成目錄結構,裡面存放的文件和目錄與單板上運行所需要的目錄結構完全一樣,然後再打包成鏡像(在開發板看來就是SD卡),這個臨時的目錄結構稱為根目錄

1.創建rootfs目錄(根目錄),根文件系統內的文件全部放到這里

sudomkdirrootfs

2.拷貝busybox命令到根目錄下

sudocpbusybox-1.20.2/_install/*-rrootfs/

3.從工具鏈中拷貝運行庫到lib目錄下

sudocp-P/usr/arm-linux-gnueabi/lib/*rootfs/lib/

4.創建4個tty端終設備

sudomknodrootfs/dev/tty1c41

sudomknodrootfs/dev/tty2c42

sudomknodrootfs/dev/tty3c43

sudomknodrootfs/dev/tty4c44

製作根文件系統鏡像

1.生成32M大小的鏡像

ddif=/dev/zeroof=a9rootfs.ext3bs=1Mcount=32

2.格式化成ext3文件系統

mkfs.ext3a9rootfs.ext3

3.將文件拷貝到鏡像中

sudomkdirtmpfs

sudomount-text3a9rootfs.ext3tmpfs/-oloop

cp-rrootfs/*tmpfs/

sudoumounttmpfs

系統啟動運行

完成上述所有步驟之後,就可以啟動qemu來模擬vexpress開發板了,命令參數如下:

qemu-system-arm-Mvexpress-a9-m512M-kernel/home/ivan/qemu/linux/arch/arm/boot/zImage-nographic-append"root=/dev/mmcblk0console=ttyAMA0"-sda9rootfs.ext3

從內核啟動列印,到命令行提示符出現,激動人心的時刻出現了……

寫在後面的話

通過上面的步驟,搭建出來一個最小的qemu+arm開發環境,你可以上面的基礎上修改內核,或者增加一些測試程序在單板上運行,甚至使用單板的flash設備。

在此,你可以做純arm架構的內核開發,或者與架構無關的內核開發,也可以做單板相關的驅動開發。

5. 如何使用QEMU來模擬ARMv8開發平台

使用Qemu模擬Cortex-A9運行U-boot和Linux 作者來源於網路
我的開發環境: Ubuntu-12.04 所有軟體包為最新

1. 安裝GNU工具鏈

sudo apt-get insatll gcc-arm-linux-gnueabi

sudo apt-get insatll g++-arm-linux-gnueabi
安裝完成後會在 /usr/arm-linux-gnueabi/ 目錄下生成庫文件、頭文件等。 我安裝的GCC版本為:
arm-linux-gnueabi-gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3

Copyright (C) 2011 Free Software Foundation, Inc.

2. 安裝Qemu模擬器
sudo apt-get install qemu qemu-system qemu-utils

這時應該已經可以運行qemu-system-arm命令了, 其版本為:
qemu-system-arm --version

QEMU emulator version 1.0.50 (Debian 1.0.50-2012.03-0ubuntu2), Copyright (c) 2003-2008 Fabrice Bellard

3. 編譯和運行U-boot:
ftp://ftp.denx.de/pub/u-boot/ 下載最新版本的U-Boot源代碼, 我用的目前最新版本 u-boot-2012.04.tar.bz2
解壓後進入源代碼目錄,在Makefile裡面增加兩行:

6. 求助,編譯qemu

編譯QEMU需要用到的工具和庫:gcc libsdl1.2-dev zlib1g-dev libasound2-dev pkg-config libgnutls-dev pciutils-dev
前三個是必須的,後面我沒有遇到提示,編譯時如果遇到某庫沒有安裝,可以用yum search或者yum list來查找相關的軟體包,安裝dev版本的
接下來編譯
./configure make make install

全部編譯花費的時間很長,QEMU會把所有的target都編譯出來,如果只需要模擬特定的平台,可以
./configure TARGET=i386-softmmu

運行QEMU
安裝好QEMU之後可以從官網上下載一個很小的包含linux系統的虛擬磁碟來實驗一下linux-0.2.img.bz2,不過這個linux剪裁的很小實在做不了什麼,磁碟鏡像也很小,不能往裡面放東西
QEMU現在都是用VNC方式運行的,即QEMU會把自己當做VNC的伺服器端,使用QEMU時還需要用VNC的客戶端來連接它。
首先安裝VNC client軟體,可以用yum search vncviewer來搜索下可以的軟體。
在終端中運行QEMU,5900表示在VNC伺服器在本機的5900埠
qemu -hda linux-0.2.img.bz2 -vnc ::1:5900

打開另一個終端,輸入
vncview 127.0.0.1:5900

QEMU的GUI界面顯示
安裝guest OS
首先創建一塊虛擬磁碟鏡像,如果是准備安裝Fedora這樣的OS,還是創建10G以上的硬碟吧。用dd命令也可以創建一塊空的硬碟鏡像,但是很慢。
qemu-img create -f qcow2 disk.img 10G

Fedora 12的系統安裝ISO鏡像文件一份,可以從fedora官網下載,開始安裝操作系統,-m 512表示指定內存大小512M,不可缺少,不然fedora12啟動後畫面顯示出問題
qemu -hda disk.img -m 512 -cdrom Fedora.XXXX.iso -vnc ::1:5900

在另一個終端里輸入:
vncviewer 127.0.0.1:5900

然後可以在QEMU窗口中安裝fedora,一切步驟同裸機安裝,就是很慢很慢
啟動guest OS,目前發現的問題是對鍵盤的支持不好,鍵位錯亂了
qemu -hda disk.img -m 512 -vnc ::1:5900

guest與host文件交互問題,解決方法很多,可以通過網路傳輸,QEMU還支持把host disk掛載使用,我是把所需要的文件製作成iso鏡像,然後在啟動qemu時用- cdrom來指定這個文件,guest OS啟動再從CDROM設備中把文件出來,這個方法的缺點是不能實時的交互文件,製作ISO文件,在linux下:
mkisofs XXX YYY.iso

編譯內核
下載linux內核源代碼: 解壓縮源代碼,放在/usr/src/kernels
gzip -d linux-2.6.32.tar.gz tar -xvf linux-2.6.32.tar mv -rf linux-2.6.32 /usr/src/kernels

下載Tuxonice補丁程序,注意對應的版本號:http://www.tuxonice.net/ 打補丁
cd /usr/src/kernels/linux-2.6.32 (the root directory of your tree) bzcat /path/to/patch | patch -p1

config,把電源管理那部分的功能都enable,bug功能enalbe
make menuconfig

編譯
make make mole_install

製作內核鏡像
make bzImage

製作初始化鏡像
mkinitrd

make install可以自動完成工作使得下次系統從這個內核啟動,手工做的話把內核鏡像文件,initrd文件和system.map文件一起復制到/boot/下面,並修改/boot/grub/menu.lst
更換guest OS內核
將編譯好的三個文件製作成ISO文件,並通過qemu的-cdrom指定,然後在guest OS中復制內核到boot文件夾下,修改menu.lst
linux下製作iso鏡像文件的命令,源文件放在/dev/cdrom目錄下:

mkisofs -r -o myiso.iso /dev/cdrom

熱點內容
ios6G與安卓12G哪個更快 發布:2025-01-24 11:26:22 瀏覽:827
下線源碼 發布:2025-01-24 11:26:22 瀏覽:523
windows8解壓軟體 發布:2025-01-24 11:04:41 瀏覽:559
藍牙聊天源碼 發布:2025-01-24 11:03:13 瀏覽:124
安卓是什麼意思是vivo嗎 發布:2025-01-24 11:01:32 瀏覽:486
懸賞網源碼 發布:2025-01-24 10:53:14 瀏覽:733
c語言時間變數 發布:2025-01-24 10:40:24 瀏覽:870
ppiandroid 發布:2025-01-24 10:25:50 瀏覽:1001
兒童壓縮機 發布:2025-01-24 10:25:09 瀏覽:75
蘋果的允許訪問在哪裡 發布:2025-01-24 10:24:32 瀏覽:32