版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、使用QEMU進行系統(tǒng)仿真M. Tim Jones ( HYPERLINK mailto:mtj mtj), 咨詢工程師,Emulex簡介:QEMU是一個面向完整PC系統(tǒng)的開源仿真器。除了仿真處理器外,QEMU還允許仿 真所有必要的子系統(tǒng),如連網(wǎng)硬件和視頻硬件。它還允許實現(xiàn)高級概念上的仿真(如對稱多處理 系統(tǒng)(多達255個CPU)和其他處理器架構(gòu)(如ARM和PowerPC)。本文將研究QEMU 及其架構(gòu),并展示了如何在Linux主機上仿真來賓操作系統(tǒng)。標記本文!發(fā)布日期:2007年10月22日級別:初級訪問情況:11192次瀏覽評論:2 (查看|添加評論-登錄)平均分(11個評分)為本文評分QE
2、MU是什么?目前,簡單地將虛擬化稱為一種熱點技術似乎有些保守。在google搜索virtualizati一詞可 得到大約2200萬條記錄。例如,在短短的一個月內(nèi),EMC公司宣布為VMware首次公開募 股,Citrix Systems宣布購買XenSource的計劃,而新起的虛擬化創(chuàng)業(yè)公司隨處涌現(xiàn)。在虛擬 化產(chǎn)品的巨大市場上,不斷出現(xiàn)各種新興的小型市場。但是時下在熱議有關虛擬化的首次公開募 股和收購時,容易忽略一些其他的現(xiàn)有虛擬化技術。本文所介紹的一種有趣的虛擬化應用程序QEMU并非目前的熱門技術。QEMU應用程序適用 于各種設置??捎糜趤碣e操作系統(tǒng)的虛擬化,或作為完整的機器仿真器使用,運行使
3、用主機CPU 或其他CPU架構(gòu)的操作系統(tǒng)?;仨撌?虛擬化簡介我們首先簡要介紹一下虛擬化,闡述QEMU的搭建背景。本文中介紹的虛擬化實際上指的是平臺虛擬化在物理硬件上,控制程序可能是主機操作系統(tǒng)或 管理程序(見圖1)。在某些情況下,主機操作系統(tǒng)就是管理程序。來賓操作系統(tǒng)位于管理程 序中。在某些情況下,來賓操作系統(tǒng)與控制程序使用相同的CPU,而在另外一些情況下,則可 能不同(比如PowerPC來賓操作系統(tǒng)在x86硬件上運行)。圖1.平臺虛擬化的基本架構(gòu)您可以通過多種方法實現(xiàn)虛擬化,但是最常見的有三種。第一種稱為本地虛擬化(或全虛擬化) 在這種虛擬化中,管理程序?qū)崿F(xiàn)基本的隔離元素,將物理硬件與來賓操
4、作系統(tǒng)相分離。這種技術 首次出現(xiàn)于1966年 舊M CP-40虛擬機/虛擬內(nèi)存操作系統(tǒng)中,另外VMware ESX Server 也使用了此技術。另一種流行的虛擬化技術稱為半虛擬化在半虛擬化中,控制程序?qū)崿F(xiàn)了管理程序的應用程序接 口(API),它將由來賓操作系統(tǒng)使用。Xen 和 Linux Kernel-based Virtual Machine (KVM)都 使用了半虛擬化技術。第三種有用的技術稱為仿真。仿真,顧名思義,通過模擬完整的硬件環(huán)境來虛擬化來賓平臺。仿 真可通過多種方法實現(xiàn),即使在同一個解決方案中也是如此。通過仿真實現(xiàn)虛擬化的技術有 QEMU 和 Bochso回頁首QEMU架構(gòu)我們
5、首先了解一下QEMU如何實現(xiàn)仿真。本節(jié)將介紹QEMU的兩種操作模式,以及QEMU 動態(tài)翻譯程序的一些有趣特點。QEMU基本操作QEMU支持兩種操作模式:用戶模式仿真和系統(tǒng)模式仿真。用戶模式仿真允許一個CPU構(gòu)建 的進程在另一個CPU上執(zhí)行(執(zhí)行主機CPU指令的動態(tài)翻譯并相應地轉(zhuǎn)換Linux系統(tǒng)調(diào) 用)。系統(tǒng)模式仿真允許對整個系統(tǒng)進行仿真,包括處理器和配套的外圍設備。在x86主機系統(tǒng)上仿真x86代碼時,使用QEMU 加速器可以實現(xiàn)近似本地的性能。這讓我 們能夠直接在主機CPU上執(zhí)行仿真代碼(在Linux上通過kernel模塊執(zhí)行)。但是從技術角度看,QEMU的有趣之處在于其快速、可移植的動態(tài)翻譯
6、程序。動態(tài)翻譯程序允 許在運行時將用于目標(來賓)CPU的指令轉(zhuǎn)換為用于主機CPU,從而實現(xiàn)仿真。這可以通 過一種強制方法實現(xiàn)(將指令從一個CPU映射到另一個CPU),但是情況并非總是這樣簡單, 在某些情況下,根據(jù)所翻譯的架構(gòu),可能需要使用多個指令或行為更改。QEMU實現(xiàn)動態(tài)翻譯的方法是,首先將目標指令轉(zhuǎn)換為微操作。這些微操作是一些編譯成對象 的C代碼。然后構(gòu)建核心翻譯程序。它將目標指令映射到微操作以進行動態(tài)翻譯。這不僅可產(chǎn) 生高效率,而且還可以移植。QEMU的動態(tài)翻譯程序還緩存了翻譯后的代碼塊,使翻譯程序的內(nèi)存開銷最小化。當初次使用 目標代碼塊時,翻譯該塊并將其存儲為翻譯后的代碼塊QEMU將
7、最近使用的翻譯后的代碼塊 緩存在一個16 MB的塊中。QEMU甚至可以通過在緩存中將翻譯后的代碼塊變?yōu)闊o效來支持 代碼的自我修改。要了解QEMU及其動態(tài)翻譯程序的更多內(nèi)部細節(jié),請參閱參考資料一節(jié)中Fabrice Bellard (QEMU的作者)所撰寫的有趣文章。受支持的外圍設備將QEMU作為PC系統(tǒng)仿真器使用可提供各種外圍設備。需要的標準外圍設備包括硬件Video Graphics Array (VGA)仿真器、PS/2鼠標和鍵盤、集成開發(fā)環(huán)境(IDE)硬盤和CD-ROM 接口,以及軟盤仿真。另外,QEMU 包括對 NE2000 Peripheral Controller Interconn
8、ect (PCI)網(wǎng) 絡適配器、串行端口、大量的聲卡和 PCI Universal Host Controller Interface (UHCI) Universal Serial Bus (USB)控制器(帶虛擬 USB 集線器)的仿真。Processor symmetric multiprocessing (SMP)支持也得到了對255個CPU的支持。除了仿真標準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與使用標準的GNU工具一樣簡單。下載并打開QEMU發(fā)行版之后, configure、make,然后 make install,任務就完成了(見清單 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$此過程不僅可以為當前的目標架構(gòu)創(chuàng)建可執(zhí)行的qemu映像,而且可以為其他架構(gòu)(包括ARM、 MIPS、PowerPC、68k和SPARC)創(chuàng)建一組映像。這樣,您就可以引導為不同目標架構(gòu)構(gòu) 建的Linux內(nèi)核。如果主機操作系統(tǒng)和來賓操作系統(tǒng)運行于相同的處理器架構(gòu)之上,那么您可以使用QEMU加速 器(KQEMU)實現(xiàn)近似本地的性能。KQEMU是一個驅(qū)動程序(Linux的內(nèi)核模塊),允許用 戶模式的代碼和內(nèi)核代碼直接在主機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)境的機器的情況。仿真另 一臺機器與處理新計算機類似。第一步是安裝操作系統(tǒng)。新計算機必須要有安裝操作系統(tǒng)的空 間,因此需要一個硬盤。QEMU提供了一條特殊的命令創(chuàng)建硬盤,此命令稱為qemu-img。此工具可以創(chuàng)建各種格式的 映像,但最佳的格式(對于qemu)稱為qcow (或qemu寫時復制)。這種格式的優(yōu)點在于磁 盤映像的大小與表示映像的物理文件的大小不同。換言之,該格式允許實現(xiàn)更緊湊的磁盤映像。 例如
13、,一個空的4GB磁盤映像只需要16KB的空間。使用qcow(copy on writ模式創(chuàng)建硬盤對于qemu-img,您需要提供操作類型(create創(chuàng)建新磁盤映像)、格式(qcow用于qemu映 像格式)、大小和磁盤映像的名稱。本例中仿真的機器用于一個在Flash中使用的微型Linux發(fā) 行版。因此,將128MB的磁盤映像創(chuàng)建為:$ qemu-img create -f qcow disk.img 128MFormating disk.img, fmt=qcow, size=131072 kB$注意,如果您計劃安裝通用操作系統(tǒng),如Windows Linux或FreeBSD,則需要更大的磁盤
14、空間。此操作的結(jié)果是仿真時出現(xiàn)一個disk.img文件,其形式是一個128MB的磁盤?,F(xiàn)在已經(jīng)創(chuàng)建好硬盤,可以在上面安裝新操作系統(tǒng)。出于演示的目的,我將使用一個較小的Linux 發(fā)行版cfLinuXo cfLinux的標準用法是作為基于Linux的小型嵌入式系統(tǒng)使用,此系統(tǒng)應適用 網(wǎng)關、無線入口點、防火墻或路由器。您可以使用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即可完成此任務:$ qemu -hda disk.img -cdrom /root/cflinux-1.0.iso -boot d$使用qemu時,您使用hda選項指定硬盤映像,使用cdrom選項指定cdrom (ISO映像所在 的文件)。boot選項指定從CD-ROM弓|導。參數(shù)d指定從CD-ROM引導,其中a指定從 軟盤引導,c指定從硬盤引導(默認),而n指定從網(wǎng)絡引導。發(fā)出此命令后,出
16、現(xiàn)一個表示 已仿真機器的新QEMU窗口(見圖2)。圖2.準備使用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安裝。安裝程序要求您重新啟動。 此時,您可以終止仿真(在qemu窗口中按Ctrl-C)。您可以使用以下命令引導最新安裝的操 作系
19、統(tǒng):$ qemu -hda disk.img$此命令只是說明使用disk.img映像文件表示的硬盤仿真標準PC (默認選項)。Linux映像從 仿真硬盤開始引導,導致出現(xiàn)QEMU窗口,如圖3所示。圖3.從仿真硬盤引導最新安裝的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:這再簡單不過了。實際上,您可以按照同樣的順序安裝和引導任何種類的操作系統(tǒng)(Linux產(chǎn)品 發(fā)行版、Windows或其他)?;仨撌?其他仿
22、真器雖然QEMU是一種極好的仿真環(huán)境,但是其他環(huán)境也值得研究一下。Wine是Windows API 的一個開源實現(xiàn),允許您在沒有Windows操作系統(tǒng)的情況下運行Windows程序。但是如 Wine縮略詞所表示的那樣,Wine不是仿真器。相反,Wine實現(xiàn)了一組API,這些API允 許執(zhí)行x86架構(gòu)的應用程序。因此,運行在Wine上的應用程序可以很好地執(zhí)行。與QEMU類似的仿真器是Bochs。Bochs是一種機器仿真器,它不僅可以仿真Intel的 i386、i486、Pentium、Pentium Pro 和 Advanced Micro Devices 的 AMD64 CPU,還 可以仿真常
23、見PC外圍設備,如磁盤、內(nèi)存、顯示器和網(wǎng)絡設備。Bochs已被用于仿真Linux、 DOS 和 Windows 95/98/XP/2000/NT 操作系統(tǒng)?;仨撌?結(jié)束語將QEMU作為機器仿真器使用讓您能夠試驗各種操作系統(tǒng),因為您可能沒有多余的機器直接進 行試驗。ReactOS就是一個這樣的例子,它是一個開源的Windows XP兼容的操作系統(tǒng)(其 仿真如圖4所示)。ReactOS的目標是與Windows XP實現(xiàn)二進制兼容,因此您可以直接在 ReactOS上運行針對 Windows XP構(gòu)建的應用程序。請參閱參考資料一節(jié)了解當前應用程序 兼容性的細節(jié)。圖4.為ReactOS仿真標準PC您可以
24、在Free Operating Systems Zoo找到ReactOS和很多其他操作系統(tǒng)的QEMU映像 (請參閱參考資料一節(jié)了解更多細節(jié))。這些映像包括live CD映像、軟盤映像或硬盤映像 (qcow格式)。QEMU是嘗試新操作系統(tǒng)的一種良好方法,而且不用花時間安裝。參考資料學習您可以參閱本文在developerWorks全球站點上的英文原文. 查看 Fabrice Bellard 的 QEMU, a Fast and Portable Dynamic Translator ”(PDF), 了解QEMU動態(tài)翻譯的內(nèi)部細節(jié)。在“虛擬Linux”(developerWorks,2006年12月)中,了解其他Linux虛擬化選 項?!疤剿?Linux 內(nèi)核虛擬機”(developerWorks,2007 年 4 月)介紹了 Linux KVM 架 構(gòu)和它與內(nèi)核緊密集成可以改變使用Linux的方式的原因。在developerWorks Linux 專區(qū)中,查找更多面向Linux開發(fā)人員的資源,查看最受 歡迎的文章和教程查看 developerWorks 上所有的Linux 技巧和Linux 教程隨時關注developerWorks技術事件和網(wǎng)絡廣播 獲得產(chǎn)品和技術從Fabrice Bellard的 Web站點下載QEMU開源處理器仿真器
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度公寓裝修與智能家居集成合同2篇
- 大學生職業(yè)生涯規(guī)劃大賽
- 全國山西經(jīng)濟版小學信息技術第二冊第一單元活動10《圖文并茂練排版》說課稿
- 山東省泰安市新泰市2024-2025學年四年級上學期期末質(zhì)量檢測數(shù)學試題參考答案
- 8000噸二甲基二硫醚生產(chǎn)項目可行性研究報告模板-立項備案
- 湖北省十堰市城區(qū)2024-2025學年四年級上學期期末數(shù)學試題參考答案
- 浙江省杭州市(2024年-2025年小學六年級語文)部編版能力評測(下學期)試卷及答案
- 2024年事業(yè)單位教師招聘言語理解與表達題庫附答案
- Unit2 Special Days Lesson 3(說課稿)-2023-2024學年人教新起點版英語五年級下冊
- 貴州盛華職業(yè)學院《近代建筑引論》2023-2024學年第一學期期末試卷
- GB/T 19326-2022鍛制支管座
- GB/T 9740-2008化學試劑蒸發(fā)殘渣測定通用方法
- GB/T 7424.1-1998光纜第1部分:總規(guī)范
- 拘留所教育課件02
- 護士事業(yè)單位工作人員年度考核登記表
- 兒童營養(yǎng)性疾病管理登記表格模板及專案表格模板
- 天津市新版就業(yè)、勞動合同登記名冊
- 數(shù)學分析知識點的總結(jié)
- 2023年重癥醫(yī)學科護理工作計劃
- 年會抽獎券可編輯模板
- 感染性疾病標志物及快速診斷課件(PPT 134頁)
評論
0/150
提交評論