




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、使用QEMU進行系統仿真M. Tim Jones ( HYPERLINK mailto:mtj mtj), 咨詢工程師,Emulex簡介:QEMU是一個面向完整PC系統的開源仿真器。除了仿真處理器外,QEMU還允許仿 真所有必要的子系統,如連網硬件和視頻硬件。它還允許實現高級概念上的仿真(如對稱多處理 系統(多達255個CPU)和其他處理器架構(如ARM和PowerPC)。本文將研究QEMU 及其架構,并展示了如何在Linux主機上仿真來賓操作系統。標記本文!發布日期:2007年10月22日級別:初級訪問情況:11192次瀏覽評論:2 (查看|添加評論-登錄)平均分(11個評分)為本文評分QE
2、MU是什么?目前,簡單地將虛擬化稱為一種熱點技術似乎有些保守。在google搜索virtualizati一詞可 得到大約2200萬條記錄。例如,在短短的一個月內,EMC公司宣布為VMware首次公開募 股,Citrix Systems宣布購買XenSource的計劃,而新起的虛擬化創業公司隨處涌現。在虛擬 化產品的巨大市場上,不斷出現各種新興的小型市場。但是時下在熱議有關虛擬化的首次公開募 股和收購時,容易忽略一些其他的現有虛擬化技術。本文所介紹的一種有趣的虛擬化應用程序QEMU并非目前的熱門技術。QEMU應用程序適用 于各種設置。可用于來賓操作系統的虛擬化,或作為完整的機器仿真器使用,運行使
3、用主機CPU 或其他CPU架構的操作系統。回頁首 虛擬化簡介我們首先簡要介紹一下虛擬化,闡述QEMU的搭建背景。本文中介紹的虛擬化實際上指的是平臺虛擬化在物理硬件上,控制程序可能是主機操作系統或 管理程序(見圖1)。在某些情況下,主機操作系統就是管理程序。來賓操作系統位于管理程 序中。在某些情況下,來賓操作系統與控制程序使用相同的CPU,而在另外一些情況下,則可 能不同(比如PowerPC來賓操作系統在x86硬件上運行)。圖1.平臺虛擬化的基本架構您可以通過多種方法實現虛擬化,但是最常見的有三種。第一種稱為本地虛擬化(或全虛擬化) 在這種虛擬化中,管理程序實現基本的隔離元素,將物理硬件與來賓操
4、作系統相分離。這種技術 首次出現于1966年 舊M CP-40虛擬機/虛擬內存操作系統中,另外VMware ESX Server 也使用了此技術。另一種流行的虛擬化技術稱為半虛擬化在半虛擬化中,控制程序實現了管理程序的應用程序接 口(API),它將由來賓操作系統使用。Xen 和 Linux Kernel-based Virtual Machine (KVM)都 使用了半虛擬化技術。第三種有用的技術稱為仿真。仿真,顧名思義,通過模擬完整的硬件環境來虛擬化來賓平臺。仿 真可通過多種方法實現,即使在同一個解決方案中也是如此。通過仿真實現虛擬化的技術有 QEMU 和 Bochso回頁首QEMU架構我們
5、首先了解一下QEMU如何實現仿真。本節將介紹QEMU的兩種操作模式,以及QEMU 動態翻譯程序的一些有趣特點。QEMU基本操作QEMU支持兩種操作模式:用戶模式仿真和系統模式仿真。用戶模式仿真允許一個CPU構建 的進程在另一個CPU上執行(執行主機CPU指令的動態翻譯并相應地轉換Linux系統調 用)。系統模式仿真允許對整個系統進行仿真,包括處理器和配套的外圍設備。在x86主機系統上仿真x86代碼時,使用QEMU 加速器可以實現近似本地的性能。這讓我 們能夠直接在主機CPU上執行仿真代碼(在Linux上通過kernel模塊執行)。但是從技術角度看,QEMU的有趣之處在于其快速、可移植的動態翻譯
6、程序。動態翻譯程序允 許在運行時將用于目標(來賓)CPU的指令轉換為用于主機CPU,從而實現仿真。這可以通 過一種強制方法實現(將指令從一個CPU映射到另一個CPU),但是情況并非總是這樣簡單, 在某些情況下,根據所翻譯的架構,可能需要使用多個指令或行為更改。QEMU實現動態翻譯的方法是,首先將目標指令轉換為微操作。這些微操作是一些編譯成對象 的C代碼。然后構建核心翻譯程序。它將目標指令映射到微操作以進行動態翻譯。這不僅可產 生高效率,而且還可以移植。QEMU的動態翻譯程序還緩存了翻譯后的代碼塊,使翻譯程序的內存開銷最小化。當初次使用 目標代碼塊時,翻譯該塊并將其存儲為翻譯后的代碼塊QEMU將
7、最近使用的翻譯后的代碼塊 緩存在一個16 MB的塊中。QEMU甚至可以通過在緩存中將翻譯后的代碼塊變為無效來支持 代碼的自我修改。要了解QEMU及其動態翻譯程序的更多內部細節,請參閱參考資料一節中Fabrice Bellard (QEMU的作者)所撰寫的有趣文章。受支持的外圍設備將QEMU作為PC系統仿真器使用可提供各種外圍設備。需要的標準外圍設備包括硬件Video Graphics Array (VGA)仿真器、PS/2鼠標和鍵盤、集成開發環境(IDE)硬盤和CD-ROM 接口,以及軟盤仿真。另外,QEMU 包括對 NE2000 Peripheral Controller Interconn
8、ect (PCI)網 絡適配器、串行端口、大量的聲卡和 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平臺,都能正常工作。回頁首 構建和安裝QEMU構建和安裝QEMU與使用標準的GNU工具一樣簡單。下載并打開QEMU發行版之后, configure、make,然后 make install,任務就完成了(見清單 1)。清單1.構建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$此過程不僅可以為當前的目標架構創建可執行的qemu映像,而且可以為其他架構(包括ARM、 MIPS、PowerPC、68k和SPARC)創建一組映像。這樣,您就可以引導為不同目標架構構 建的Linux內核。如果主機操作系統和來賓操作系統運行于相同的處理器架構之上,那么您可以使用QEMU加速 器(KQEMU)實現近似本地的性能。KQEMU是一個驅動程序(Linux的內核模塊),允許用 戶模式的代碼和內核代碼直接在主機CPU上執行。構建QEMU加速器與
11、構建QEMU本身 相同(見清單2)。清單2.構建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您可以在很多操作系統,包括Microsoft Windows、FreeBSD和Linux上編譯和安裝KQ
12、EMUo構建QEMU加速器之后,使用以下命令在Linux中安裝該加速器:$ insmod kqemu.ko$回頁首使用QEMU現在考察一下使用QEMU虛擬化另一臺帶典型的桌面GNU/Linux環境的機器的情況。仿真另 一臺機器與處理新計算機類似。第一步是安裝操作系統。新計算機必須要有安裝操作系統的空 間,因此需要一個硬盤。QEMU提供了一條特殊的命令創建硬盤,此命令稱為qemu-img。此工具可以創建各種格式的 映像,但最佳的格式(對于qemu)稱為qcow (或qemu寫時復制)。這種格式的優點在于磁 盤映像的大小與表示映像的物理文件的大小不同。換言之,該格式允許實現更緊湊的磁盤映像。 例如
13、,一個空的4GB磁盤映像只需要16KB的空間。使用qcow(copy on writ模式創建硬盤對于qemu-img,您需要提供操作類型(create創建新磁盤映像)、格式(qcow用于qemu映 像格式)、大小和磁盤映像的名稱。本例中仿真的機器用于一個在Flash中使用的微型Linux發 行版。因此,將128MB的磁盤映像創建為:$ qemu-img create -f qcow disk.img 128MFormating disk.img, fmt=qcow, size=131072 kB$注意,如果您計劃安裝通用操作系統,如Windows Linux或FreeBSD,則需要更大的磁盤
14、空間。此操作的結果是仿真時出現一個disk.img文件,其形式是一個128MB的磁盤。現在已經創建好硬盤,可以在上面安裝新操作系統。出于演示的目的,我將使用一個較小的Linux 發行版cfLinuXo cfLinux的標準用法是作為基于Linux的小型嵌入式系統使用,此系統應適用 網關、無線入口點、防火墻或路由器。您可以使用wget下載ISO格式的發行版: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文件系統)。現在,您已經仿真了硬盤(disk.img)和CD-ROM,您可以在上面安裝操作系統。下一步是在 硬盤上安裝操作系統。簡單地使用qemu即可完成此任務:$ qemu -hda disk.img -cdrom /root/cflinux-1.0.iso -boot d$使用qemu時,您使用hda選項指定硬盤映像,使用cdrom選項指定cdrom (ISO映像所在 的文件)。boot選項指定從CD-ROM弓|導。參數d指定從CD-ROM引導,其中a指定從 軟盤引導,c指定從硬盤引導(默認),而n指定從網絡引導。發出此命令后,出
16、現一個表示 已仿真機器的新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、統:$ qemu -hda disk.img$此命令只是說明使用disk.img映像文件表示的硬盤仿真標準PC (默認選項)。Linux映像從 仿真硬盤開始引導,導致出現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:這再簡單不過了。實際上,您可以按照同樣的順序安裝和引導任何種類的操作系統(Linux產品 發行版、Windows或其他)。回頁首 其他仿
22、真器雖然QEMU是一種極好的仿真環境,但是其他環境也值得研究一下。Wine是Windows API 的一個開源實現,允許您在沒有Windows操作系統的情況下運行Windows程序。但是如 Wine縮略詞所表示的那樣,Wine不是仿真器。相反,Wine實現了一組API,這些API允 許執行x86架構的應用程序。因此,運行在Wine上的應用程序可以很好地執行。與QEMU類似的仿真器是Bochs。Bochs是一種機器仿真器,它不僅可以仿真Intel的 i386、i486、Pentium、Pentium Pro 和 Advanced Micro Devices 的 AMD64 CPU,還 可以仿真常
23、見PC外圍設備,如磁盤、內存、顯示器和網絡設備。Bochs已被用于仿真Linux、 DOS 和 Windows 95/98/XP/2000/NT 操作系統。回頁首 結束語將QEMU作為機器仿真器使用讓您能夠試驗各種操作系統,因為您可能沒有多余的機器直接進 行試驗。ReactOS就是一個這樣的例子,它是一個開源的Windows XP兼容的操作系統(其 仿真如圖4所示)。ReactOS的目標是與Windows XP實現二進制兼容,因此您可以直接在 ReactOS上運行針對 Windows XP構建的應用程序。請參閱參考資料一節了解當前應用程序 兼容性的細節。圖4.為ReactOS仿真標準PC您可以
24、在Free Operating Systems Zoo找到ReactOS和很多其他操作系統的QEMU映像 (請參閱參考資料一節了解更多細節)。這些映像包括live CD映像、軟盤映像或硬盤映像 (qcow格式)。QEMU是嘗試新操作系統的一種良好方法,而且不用花時間安裝。參考資料學習您可以參閱本文在developerWorks全球站點上的英文原文. 查看 Fabrice Bellard 的 QEMU, a Fast and Portable Dynamic Translator ”(PDF), 了解QEMU動態翻譯的內部細節。在“虛擬Linux”(developerWorks,2006年12月)中,了解其他Linux虛擬化選 項。“探索 Linux 內核虛擬機”(developerWorks,2007 年 4 月)介紹了 Linux KVM 架 構和它與內核緊密集成可以改變使用Linux的方式的原因。在developerWorks Linux 專區中,查找更多面向Linux開發人員的資源,查看最受 歡迎的文章和教程查看 developerWorks 上所有的Linux 技巧和Linux 教程隨時關注developerWorks技術事件和網絡廣播 獲得產品和技術從Fabrice Bellard的 Web站點下載QEMU開源處理器仿真器
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 機電工程職業發展規劃試題及答案
- 當代西方政治制度的發展趨勢試題及答案
- 2025年康復醫療服務機構連鎖化運營模式下的患者康復效果評價與市場反饋研究報告
- 信息系統項目管理師考試綜合復習試題及答案
- 面對不確定性環境的企業戰略應變能力
- 安全法的考試題及答案
- 反思與前瞻2025年西方政治制度的定位試題及答案
- 網絡工程師的創新思維提升試題及答案
- 軟考網絡流量分析報告示例試題及答案
- 發展中國家的公共政策案例試題及答案
- 廢品承包合同
- 淺談如何培養提升藏族學生的漢語思維 論文
- 酒水鑒賞與調酒技術智慧樹知到答案章節測試2023年青島恒星科技學院
- 讀書筆記:《教育,向美而生》
- GB 5009.96-2016食品安全國家標準食品中赭曲霉毒素A的測定
- 排序算法及其算法分析課件
- 吸煙對人體危害和戒煙
- 子宮內膜增生課件
- 建筑施工安全技術統一規范
- 天津市新版就業、勞動合同登記名冊
- 建設工程施工安全技術操作規程完整
評論
0/150
提交評論