使用 QEMU 進(jìn)行系統(tǒng)仿真_第1頁
使用 QEMU 進(jìn)行系統(tǒng)仿真_第2頁
使用 QEMU 進(jìn)行系統(tǒng)仿真_第3頁
使用 QEMU 進(jìn)行系統(tǒng)仿真_第4頁
使用 QEMU 進(jìn)行系統(tǒng)仿真_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、使用QEMU進(jìn)行系統(tǒng)仿真M. Tim Jones ( HYPERLINK mailto:mtj mtj), 咨詢工程師,Emulex簡介:QEMU是一個(gè)面向完整PC系統(tǒng)的開源仿真器。除了仿真處理器外,QEMU還允許仿 真所有必要的子系統(tǒng),如連網(wǎng)硬件和視頻硬件。它還允許實(shí)現(xiàn)高級概念上的仿真(如對稱多處理 系統(tǒng)(多達(dá)255個(gè)CPU)和其他處理器架構(gòu)(如ARM和PowerPC)。本文將研究QEMU 及其架構(gòu),并展示了如何在Linux主機(jī)上仿真來賓操作系統(tǒng)。標(biāo)記本文!發(fā)布日期:2007年10月22日級別:初級訪問情況:11192次瀏覽評論:2 (查看|添加評論-登錄)平均分(11個(gè)評分)為本文評分QE

2、MU是什么?目前,簡單地將虛擬化稱為一種熱點(diǎn)技術(shù)似乎有些保守。在google搜索virtualizati一詞可 得到大約2200萬條記錄。例如,在短短的一個(gè)月內(nèi),EMC公司宣布為VMware首次公開募 股,Citrix Systems宣布購買XenSource的計(jì)劃,而新起的虛擬化創(chuàng)業(yè)公司隨處涌現(xiàn)。在虛擬 化產(chǎn)品的巨大市場上,不斷出現(xiàn)各種新興的小型市場。但是時(shí)下在熱議有關(guān)虛擬化的首次公開募 股和收購時(shí),容易忽略一些其他的現(xiàn)有虛擬化技術(shù)。本文所介紹的一種有趣的虛擬化應(yīng)用程序QEMU并非目前的熱門技術(shù)。QEMU應(yīng)用程序適用 于各種設(shè)置??捎糜趤碣e操作系統(tǒng)的虛擬化,或作為完整的機(jī)器仿真器使用,運(yùn)行使

3、用主機(jī)CPU 或其他CPU架構(gòu)的操作系統(tǒng)?;仨撌?虛擬化簡介我們首先簡要介紹一下虛擬化,闡述QEMU的搭建背景。本文中介紹的虛擬化實(shí)際上指的是平臺虛擬化在物理硬件上,控制程序可能是主機(jī)操作系統(tǒng)或 管理程序(見圖1)。在某些情況下,主機(jī)操作系統(tǒng)就是管理程序。來賓操作系統(tǒng)位于管理程 序中。在某些情況下,來賓操作系統(tǒng)與控制程序使用相同的CPU,而在另外一些情況下,則可 能不同(比如PowerPC來賓操作系統(tǒng)在x86硬件上運(yùn)行)。圖1.平臺虛擬化的基本架構(gòu)您可以通過多種方法實(shí)現(xiàn)虛擬化,但是最常見的有三種。第一種稱為本地虛擬化(或全虛擬化) 在這種虛擬化中,管理程序?qū)崿F(xiàn)基本的隔離元素,將物理硬件與來賓操

4、作系統(tǒng)相分離。這種技術(shù) 首次出現(xiàn)于1966年 舊M CP-40虛擬機(jī)/虛擬內(nèi)存操作系統(tǒng)中,另外VMware ESX Server 也使用了此技術(shù)。另一種流行的虛擬化技術(shù)稱為半虛擬化在半虛擬化中,控制程序?qū)崿F(xiàn)了管理程序的應(yīng)用程序接 口(API),它將由來賓操作系統(tǒng)使用。Xen 和 Linux Kernel-based Virtual Machine (KVM)都 使用了半虛擬化技術(shù)。第三種有用的技術(shù)稱為仿真。仿真,顧名思義,通過模擬完整的硬件環(huán)境來虛擬化來賓平臺。仿 真可通過多種方法實(shí)現(xiàn),即使在同一個(gè)解決方案中也是如此。通過仿真實(shí)現(xiàn)虛擬化的技術(shù)有 QEMU 和 Bochso回頁首QEMU架構(gòu)我們

5、首先了解一下QEMU如何實(shí)現(xiàn)仿真。本節(jié)將介紹QEMU的兩種操作模式,以及QEMU 動(dòng)態(tài)翻譯程序的一些有趣特點(diǎn)。QEMU基本操作QEMU支持兩種操作模式:用戶模式仿真和系統(tǒng)模式仿真。用戶模式仿真允許一個(gè)CPU構(gòu)建 的進(jìn)程在另一個(gè)CPU上執(zhí)行(執(zhí)行主機(jī)CPU指令的動(dòng)態(tài)翻譯并相應(yīng)地轉(zhuǎn)換Linux系統(tǒng)調(diào) 用)。系統(tǒng)模式仿真允許對整個(gè)系統(tǒng)進(jìn)行仿真,包括處理器和配套的外圍設(shè)備。在x86主機(jī)系統(tǒng)上仿真x86代碼時(shí),使用QEMU 加速器可以實(shí)現(xiàn)近似本地的性能。這讓我 們能夠直接在主機(jī)CPU上執(zhí)行仿真代碼(在Linux上通過kernel模塊執(zhí)行)。但是從技術(shù)角度看,QEMU的有趣之處在于其快速、可移植的動(dòng)態(tài)翻譯

6、程序。動(dòng)態(tài)翻譯程序允 許在運(yùn)行時(shí)將用于目標(biāo)(來賓)CPU的指令轉(zhuǎn)換為用于主機(jī)CPU,從而實(shí)現(xiàn)仿真。這可以通 過一種強(qiáng)制方法實(shí)現(xiàn)(將指令從一個(gè)CPU映射到另一個(gè)CPU),但是情況并非總是這樣簡單, 在某些情況下,根據(jù)所翻譯的架構(gòu),可能需要使用多個(gè)指令或行為更改。QEMU實(shí)現(xiàn)動(dòng)態(tài)翻譯的方法是,首先將目標(biāo)指令轉(zhuǎn)換為微操作。這些微操作是一些編譯成對象 的C代碼。然后構(gòu)建核心翻譯程序。它將目標(biāo)指令映射到微操作以進(jìn)行動(dòng)態(tài)翻譯。這不僅可產(chǎn) 生高效率,而且還可以移植。QEMU的動(dòng)態(tài)翻譯程序還緩存了翻譯后的代碼塊,使翻譯程序的內(nèi)存開銷最小化。當(dāng)初次使用 目標(biāo)代碼塊時(shí),翻譯該塊并將其存儲為翻譯后的代碼塊QEMU將

7、最近使用的翻譯后的代碼塊 緩存在一個(gè)16 MB的塊中。QEMU甚至可以通過在緩存中將翻譯后的代碼塊變?yōu)闊o效來支持 代碼的自我修改。要了解QEMU及其動(dòng)態(tài)翻譯程序的更多內(nèi)部細(xì)節(jié),請參閱參考資料一節(jié)中Fabrice Bellard (QEMU的作者)所撰寫的有趣文章。受支持的外圍設(shè)備將QEMU作為PC系統(tǒng)仿真器使用可提供各種外圍設(shè)備。需要的標(biāo)準(zhǔn)外圍設(shè)備包括硬件Video Graphics Array (VGA)仿真器、PS/2鼠標(biāo)和鍵盤、集成開發(fā)環(huán)境(IDE)硬盤和CD-ROM 接口,以及軟盤仿真。另外,QEMU 包括對 NE2000 Peripheral Controller Interconn

8、ect (PCI)網(wǎng) 絡(luò)適配器、串行端口、大量的聲卡和 PCI Universal Host Controller Interface (UHCI) Universal Serial Bus (USB)控制器(帶虛擬 USB 集線器)的仿真。Processor symmetric multiprocessing (SMP)支持也得到了對255個(gè)CPU的支持。除了仿真標(biāo)準(zhǔn)PC或ISA PC (不帶PCI總線)夕卜,QEMU還可以仿真其他非PC硬件,如 ARM Versatile 基線板(使用 926E)和 Malta million instructions per second (MIPS)板

9、。對 于各種其他平臺,包括Power Macintosh G3 (Blue & White)和Sun-4u平臺,都能正常工作。回頁首 構(gòu)建和安裝QEMU構(gòu)建和安裝QEMU與使用標(biāo)準(zhǔn)的GNU工具一樣簡單。下載并打開QEMU發(fā)行版之后, configure、make,然后 make install,任務(wù)就完成了(見清單 1)。清單1.構(gòu)建QEMU仿真器$ wget HYPERLINK http:/fabrice.bellard.free.fr/qemu/qemu-0.9.0.tar.gz http:/fabrice.bellard.free.fr/qemu/qemu-0.9.0.tar.gz$ t

10、ar xfvz qemu-0.9.0.tar.gz$ cd qemu-0.9.0$ ./configure$ make$ make install$此過程不僅可以為當(dāng)前的目標(biāo)架構(gòu)創(chuàng)建可執(zhí)行的qemu映像,而且可以為其他架構(gòu)(包括ARM、 MIPS、PowerPC、68k和SPARC)創(chuàng)建一組映像。這樣,您就可以引導(dǎo)為不同目標(biāo)架構(gòu)構(gòu) 建的Linux內(nèi)核。如果主機(jī)操作系統(tǒng)和來賓操作系統(tǒng)運(yùn)行于相同的處理器架構(gòu)之上,那么您可以使用QEMU加速 器(KQEMU)實(shí)現(xiàn)近似本地的性能。KQEMU是一個(gè)驅(qū)動(dòng)程序(Linux的內(nèi)核模塊),允許用 戶模式的代碼和內(nèi)核代碼直接在主機(jī)CPU上執(zhí)行。構(gòu)建QEMU加速器與

11、構(gòu)建QEMU本身 相同(見清單2)。清單2.構(gòu)建QEMU加速器$ HYPERLINK http:/fabrice.bellard.free.fr/qemu/kqemu-1.3.0pre11.tar.gz http:/fabrice.bellard.free.fr/qemu/kqemu-1.3.0pre11.tar.gz$ tar xvfz kqemu-1.3.0pre11.tar.gz$ cd kqemu-1.3.0pre11$ ./configure$ make$ make install您可以在很多操作系統(tǒng),包括Microsoft Windows、FreeBSD和Linux上編譯和安裝KQ

12、EMUo構(gòu)建QEMU加速器之后,使用以下命令在Linux中安裝該加速器:$ insmod kqemu.ko$回頁首使用QEMU現(xiàn)在考察一下使用QEMU虛擬化另一臺帶典型的桌面GNU/Linux環(huán)境的機(jī)器的情況。仿真另 一臺機(jī)器與處理新計(jì)算機(jī)類似。第一步是安裝操作系統(tǒng)。新計(jì)算機(jī)必須要有安裝操作系統(tǒng)的空 間,因此需要一個(gè)硬盤。QEMU提供了一條特殊的命令創(chuàng)建硬盤,此命令稱為qemu-img。此工具可以創(chuàng)建各種格式的 映像,但最佳的格式(對于qemu)稱為qcow (或qemu寫時(shí)復(fù)制)。這種格式的優(yōu)點(diǎn)在于磁 盤映像的大小與表示映像的物理文件的大小不同。換言之,該格式允許實(shí)現(xiàn)更緊湊的磁盤映像。 例如

13、,一個(gè)空的4GB磁盤映像只需要16KB的空間。使用qcow(copy on writ模式創(chuàng)建硬盤對于qemu-img,您需要提供操作類型(create創(chuàng)建新磁盤映像)、格式(qcow用于qemu映 像格式)、大小和磁盤映像的名稱。本例中仿真的機(jī)器用于一個(gè)在Flash中使用的微型Linux發(fā) 行版。因此,將128MB的磁盤映像創(chuàng)建為:$ qemu-img create -f qcow disk.img 128MFormating disk.img, fmt=qcow, size=131072 kB$注意,如果您計(jì)劃安裝通用操作系統(tǒng),如Windows Linux或FreeBSD,則需要更大的磁盤

14、空間。此操作的結(jié)果是仿真時(shí)出現(xiàn)一個(gè)disk.img文件,其形式是一個(gè)128MB的磁盤?,F(xiàn)在已經(jīng)創(chuàng)建好硬盤,可以在上面安裝新操作系統(tǒng)。出于演示的目的,我將使用一個(gè)較小的Linux 發(fā)行版cfLinuXo cfLinux的標(biāo)準(zhǔn)用法是作為基于Linux的小型嵌入式系統(tǒng)使用,此系統(tǒng)應(yīng)適用 網(wǎng)關(guān)、無線入口點(diǎn)、防火墻或路由器。您可以使用wget下載ISO格式的發(fā)行版:wget HYPERLINK ftp:/ftp.cflinux.fu/pub/cflinux/iso/cflinux-1.0.iso ftp:/ftp.cflinux.fu/pub/cflinux/iso/cflinux-1.0.isoISO

15、映像是常見的CD-ROM格式(在其他地方稱為ISO 9660文件系統(tǒng))?,F(xiàn)在,您已經(jīng)仿真了硬盤(disk.img)和CD-ROM,您可以在上面安裝操作系統(tǒng)。下一步是在 硬盤上安裝操作系統(tǒng)。簡單地使用qemu即可完成此任務(wù):$ qemu -hda disk.img -cdrom /root/cflinux-1.0.iso -boot d$使用qemu時(shí),您使用hda選項(xiàng)指定硬盤映像,使用cdrom選項(xiàng)指定cdrom (ISO映像所在 的文件)。boot選項(xiàng)指定從CD-ROM弓|導(dǎo)。參數(shù)d指定從CD-ROM引導(dǎo),其中a指定從 軟盤引導(dǎo),c指定從硬盤引導(dǎo)(默認(rèn)),而n指定從網(wǎng)絡(luò)引導(dǎo)。發(fā)出此命令后,出

16、現(xiàn)一個(gè)表示 已仿真機(jī)器的新QEMU窗口(見圖2)。圖2.準(zhǔn)備使用QEMU將cfLinux安裝到仿真磁盤上MET4: Linux TCP/IPfor HET4.0IP Protocols: CMP- UDF, TCP. 1GMPIF: renting CAche heish tabie uf* 512 buickEtsj KbytesTCF: Hflsh tab les conf igured lestab 1ished B13Z bind 16301)NET*: Unix doHain sockets 1.0/SMP for LIhuk HET4.0a ds no eocket drivers

17、 loadiedltRAfID ISK: CaHipressizd iitacfE round at Duck 6Freeinji iihitrd; 799?k freedCPfl wf s 二 urong tna g ICVFSr MouiiteJ root (mJ nix fi lesy stein) reftdcnly BFreeing unused kernel memcry: SOk freedInsta 1 lai i on prngTana-It wi 11 Ask you where to Instil Iof that device.criinx and wi 11 iest

18、roy all the contevit* Me 1 cottej this is the cf 1 inuMThe fol lowing bluuk. devices were detected on your system-.r sorted by size dcvioc sIzk (HD) h 電12881。 which uoLild jjRU like 化口 Install CFIInux? Rda _遵循安裝指令,按照CD-ROM安裝完成在仿真硬盤上的ISO安裝。安裝程序要求您重新啟動(dòng)。 此時(shí),您可以終止仿真(在qemu窗口中按Ctrl-C)。您可以使用以下命令引導(dǎo)最新安裝的操 作系

19、統(tǒng):$ qemu -hda disk.img$此命令只是說明使用disk.img映像文件表示的硬盤仿真標(biāo)準(zhǔn)PC (默認(rèn)選項(xiàng))。Linux映像從 仿真硬盤開始引導(dǎo),導(dǎo)致出現(xiàn)QEMU窗口,如圖3所示。圖3.從仿真硬盤引導(dǎo)最新安裝的cfLinuxtnsmodl. inile; 8139cpt Ho such deviceMdpgbE MI led to load mdluie 8139cpB139tOi& F*st Ethernet driver 9總6ins mod in it.HKiilu. le: B133taD: ITd such devicenffldprobE: Pai led to l

20、oad wodlulc- 0139tconatscHi dp8301x dr iuer P ycr&ian: 1-07+LK1,0.17, Sep Z7 F Z0fiZor-ig Ina I iy by Dair& 1 & Bcckcr nugrDup r doneAdding system user nobody: doneNctuork in it ia L izot ion - dan:eEnab 1iny TCP?TP SYN naakics r dene 一Enabl Ingf spoofinn an all IntiErrces : done.Setting def ijiu I

21、t ARP anniounice i*ethD4 (1 on 肴11 (nterFACCS - done nDisabling console bleinklng: dorteSlrtimg staird dftenKi*ns: syslagd klegd crond IgemerAtIng 2048 bits rst key g enerat ing 162 bitskey J shd.Local init ial izsit ionfgrw) login:這再簡單不過了。實(shí)際上,您可以按照同樣的順序安裝和引導(dǎo)任何種類的操作系統(tǒng)(Linux產(chǎn)品 發(fā)行版、Windows或其他)?;仨撌?其他仿

22、真器雖然QEMU是一種極好的仿真環(huán)境,但是其他環(huán)境也值得研究一下。Wine是Windows API 的一個(gè)開源實(shí)現(xiàn),允許您在沒有Windows操作系統(tǒng)的情況下運(yùn)行Windows程序。但是如 Wine縮略詞所表示的那樣,Wine不是仿真器。相反,Wine實(shí)現(xiàn)了一組API,這些API允 許執(zhí)行x86架構(gòu)的應(yīng)用程序。因此,運(yùn)行在Wine上的應(yīng)用程序可以很好地執(zhí)行。與QEMU類似的仿真器是Bochs。Bochs是一種機(jī)器仿真器,它不僅可以仿真Intel的 i386、i486、Pentium、Pentium Pro 和 Advanced Micro Devices 的 AMD64 CPU,還 可以仿真常

23、見PC外圍設(shè)備,如磁盤、內(nèi)存、顯示器和網(wǎng)絡(luò)設(shè)備。Bochs已被用于仿真Linux、 DOS 和 Windows 95/98/XP/2000/NT 操作系統(tǒng)。回頁首 結(jié)束語將QEMU作為機(jī)器仿真器使用讓您能夠試驗(yàn)各種操作系統(tǒng),因?yàn)槟赡軟]有多余的機(jī)器直接進(jìn) 行試驗(yàn)。ReactOS就是一個(gè)這樣的例子,它是一個(gè)開源的Windows XP兼容的操作系統(tǒng)(其 仿真如圖4所示)。ReactOS的目標(biāo)是與Windows XP實(shí)現(xiàn)二進(jìn)制兼容,因此您可以直接在 ReactOS上運(yùn)行針對 Windows XP構(gòu)建的應(yīng)用程序。請參閱參考資料一節(jié)了解當(dāng)前應(yīng)用程序 兼容性的細(xì)節(jié)。圖4.為ReactOS仿真標(biāo)準(zhǔn)PC您可以

24、在Free Operating Systems Zoo找到ReactOS和很多其他操作系統(tǒng)的QEMU映像 (請參閱參考資料一節(jié)了解更多細(xì)節(jié))。這些映像包括live CD映像、軟盤映像或硬盤映像 (qcow格式)。QEMU是嘗試新操作系統(tǒng)的一種良好方法,而且不用花時(shí)間安裝。參考資料學(xué)習(xí)您可以參閱本文在developerWorks全球站點(diǎn)上的英文原文. 查看 Fabrice Bellard 的 QEMU, a Fast and Portable Dynamic Translator ”(PDF), 了解QEMU動(dòng)態(tài)翻譯的內(nèi)部細(xì)節(jié)。在“虛擬Linux”(developerWorks,2006年12月)中,了解其他Linux虛擬化選 項(xiàng)?!疤剿?Linux 內(nèi)核虛擬機(jī)”(developerWorks,2007 年 4 月)介紹了 Linux KVM 架 構(gòu)和它與內(nèi)核緊密集成可以改變使用Linux的方式的原因。在developerWorks Linux 專區(qū)中,查找更多面向Linux開發(fā)人員的資源,查看最受 歡迎的文章和教程查看 developerWorks 上所有的Linux 技巧和Linux 教程隨時(shí)關(guān)注developerWorks技術(shù)事件和網(wǎng)絡(luò)廣播 獲得產(chǎn)品和技術(shù)從Fabrice Bellard的 Web站點(diǎn)下載QEMU開源處理器仿真器

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論