QEMU是一個支持跨平台虛擬化的虛擬機,有user mode和system mode兩種配置方式。其中qemu在system mode配置下模擬出整個計算機,可以在qemu之上運行一個操作系統。QEMU的system mode與常見的VMware和Virtualbox等虛擬機比較相似,但是QEMU的優勢是可以跨指令集。例如,VMware和Virtualbox之類的工具通常只能在x86計算機上虛擬出一個x86計算機,而QEMU支持在x86上虛擬出一個ARM計算機。qemu在user mode配置下,可以運行跟當前平台指令集不同的平台可執行程序。例如可以用qemu在x86上運行ARM的可執行程序,但是兩個平台必須是同一種操作系統,比如Linux。
QEMU還支持很多其他的平台,詳細列表參見這里。
QEMU中有兩個重要的名詞host和target(guest),其中host表示qemu程序本身運行的平台,target(guest)表示qemu虛擬出的計算機平台(system mode)或支持的可執行程序的運行平台(user mode)。
下面描述一下編譯和使用host為x86,target(guest)為ARM的步驟
1. 下載QEMU源碼
wget http://wiki.qemu-project.org/download/qemu-1.4.0.tar.bz2
2. 解壓、configure
tar xvf qemu-1.4.0.tar.bz2 cd qemu-1.4.0 ./configure --target-list=arm-softmmu,arm-linux-user --prefix=<prefix>
其中--target-list指定需要編譯的target(guest),arm-softmmu表示要編譯system mode的QEMU,arm-linux-user表示要編譯user mode的QEMU。
如果configure提示缺少某些庫的話,按照提示安裝即可。
3. make和安裝
make && make install
編譯完成之后,得到的qemu-system-arm對應的就是system mode的虛擬機,qemu-arm對應的就是user mode的模擬器。
4. 使用qemu-arm
使用qemu-arm的方法很簡單,只需要在原來的程序執行命令之前添加qemu-arm即可。
例如: 原來運行命令
<executable> <arg1> <arg2> ...
使用qemu-arm運行
qemu-arm <executable> <arg1> <arg2> ...
5. 使用qemu-system-arm
使用qemu-system-arm的方法相對稍微復雜。
這里有一個qemu-system-arm安裝使用debian教程,教程中用到的版本比較老,可以在這里下載較新的版本,安裝原理是類似的。