沈阳建立网站,如何做音乐网站,软件平台运维方案,兴义城乡建设部网站Qemu 架构 硬件模拟器
Qemu 是纯软件实现的虚拟化模拟器#xff0c;
几乎可以模拟任何硬件设备#xff0c;
我们最熟悉的就是能够模拟一台能够独立运行操作系统的虚拟机#xff0c;
虚拟机认为自己和硬件打交道#xff0c;
但其实是和 Qemu 模拟出来的硬件打交道#xff…Qemu 架构 硬件模拟器
Qemu 是纯软件实现的虚拟化模拟器
几乎可以模拟任何硬件设备
我们最熟悉的就是能够模拟一台能够独立运行操作系统的虚拟机
虚拟机认为自己和硬件打交道
但其实是和 Qemu 模拟出来的硬件打交道
Qemu 将这些指令转译给真正的硬件。从本质上看虚拟出的每个虚拟机对应 host 上的一个 Qemu 进程
而虚拟机的执行线程如 CPU 线程、I/O 线程等对应 Qemu 进程的一个线程。1. 源码下载
centos
sudo apt-get install qemu
ubuntu
sudo yum install qemu -y
安装包$wget http://wiki.qemu-project.org/download/qemu-2.0.0.tar.bz2
$tar xjvf qemu-2.0.0.tar.bz2wget https://download.qemu.org/qemu-2.12.0.tar.x
xz -d qemu-2.12.0.tar.xz
tar xvf qemu-2.12.0.tar qemu-2.12.0/Git渠道
$git clone git://git.qemu-project.org/qemu.git2. 配置编译及安装 $cd qemu-2.12.0 //如果使用的是git下载的源码执行cd qemu
配置:$./configure --enable-kvm --enable-debug --enable-vnc --enable-werror --target-listx86_64-softmmu x86 64位格式$./configure --enable-kvm --enable-debug --enable-vnc --enable-werror --target-listi386-softmmu 32位格式configure 脚本用于生成 Makefile其选项可以用 ./configure --help 查看。这里使用到的选项含义如下--enable-kvm编译 KVM 模块使 Qemu 可以利用 KVM 来访问硬件提供的虚拟化服务。--enable-vnc启用 VNC。--enalbe-werror编译时将所有的警告当作错误处理。--target-list选择目标机器的架构。默认是将所有的架构都编译但为了更快的完成编译指定需要的架构即可。安装好之后会生成如下应用程序1. ivshmem-client/server这是一个 guest 和 host 共享内存的应用程序遵循 C/S 的架构。2. qemu-ga这是一个不利用网络实现 guest 和 host 之间交互的应用程序使用 virtio-serial运行在 guest 中。3. qemu-io这是一个执行 Qemu I/O 操作的命令行工具。4. qemu-system-x86_64Qemu 的核心应用程序虚拟机就由它创建的。5. qemu-img创建虚拟机镜像文件的工具下面有例子说明。6. qemu-nbd磁盘挂载工具。编译:$make -j4
安装:$sudo make install
符号链接:cd /usr/local/binsudo ln -s qemu-system-i386 qemu3. 创建虚拟机
a. 使用qemu-img创建虚拟机镜像
虚拟机镜像用来模拟虚拟机的硬盘在启动虚拟机之前需要创建镜像文件。
qemu-img create -f qcow2 test-vm-1.qcow2 10G-f 选项用于指定镜像的格式
qcow2 格式是 Qemu 最常用的镜像格式
采用来写时复制技术来优化性能。
test-vm-1.qcow2 是镜像文件的名字
10G是镜像文件大小。
镜像文件创建完成后可使用 qemu-system-x86 来启动x86 架构的虚拟机.b. 使用 qemu-system-x86 来启动 x86 架构的虚拟机
qemu-system-x86_64 test-vm-1.qcow2
因为 test-vm-1.qcow2 中并未给虚拟机安装操作系统
所以会提示 “No bootable device”无可启动设备。c. 启动 VM 安装操作系统镜像
qemu-system-x86_64 -m 2048 -enable-kvm test-vm-1.qcow2 -cdrom ./Centos-Desktop-x86_64-20-1.iso
-m 指定虚拟机内存大小默认单位是 MB
-enable-kvm 使用 KVM 进行加速
-cdrom 添加 fedora 的安装镜像。
可在弹出的窗口中操作虚拟机
安装操作系统安装完成后重起虚拟机便会从硬盘 ( test-vm-1.qcow2 ) 启动。之后再启动虚拟机只需要执行qemu-system-x86_64 -m 2048 -enable-kvm test-vm-1.qcow2qemu-img 支持非常多种的文件格式
可以通过 qemu-img -h 查看.
其中 raw 和 qcow2 是比较常用的两种
raw 是 qemu-img 命令默认的
qcow2 是 qemu 目前推荐的镜像格式是功能最多的格式。运行参数
sudo ln -s qemu-system-i386 qemu
如果 qemu 使用的是默认 /usr/local/bin 安装路径
则在命令行中可以直接使用 qemu 命令运行程序。qemu 运行可以有多参数格式如qemu [options] [disk_image]
其中 disk_image 即硬盘镜像文件。部分参数说明1. -hda file / -hdb file /-hdc file /-hdd file: 使用 file 作为 硬盘 0、1、2、3镜像。
2. -fda file / -fdb file: 使用 file 作为软盘镜像可以使用 /dev/fd0 作为 file 来使用主机软盘。
3. -cdrom file: 使用 file 作为光盘镜像可以使用 /dev/cdrom 作为 file 来使用主机 cd-rom。
4. -boot [a|c|d]: 从软盘(a)、光盘(c)、硬盘启动(d)默认硬盘启动。
5. -snapshot: 写入临时文件而不写回磁盘镜像可以使用 C-a s 来强制写回。
6. -m megs: 设置虚拟内存为 msg M字节默认为 128M 字节。
7. -smp n: 设置为有 n 个 CPU 的 SMP 系统。以 PC 为目标机最多支持 255 个 CPU。
8. -nographic: 禁止使用图形输出。
9. 其他A. 可用的主机设备 dev 例如a. vc 虚拟终端。b. null 空设备c. /dev/XXX 使用主机的 tty设备d. file: filename 将输出写入到文件 filename 中。e. stdio 标准输入/输出。f. pipepipename 命令管道 pipename。等。B. 使用 dev 设备的命令如a. -serial dev 重定向虚拟串口到主机设备 dev 中。b. -parallel dev 重定向虚拟并口到主机设备 dev 中。c. -monitor dev 重定向 monitor 到主机设备 dev 中。C. 其他参数a. -s 等待 gdb 连接到端口 1234。b. -p port 改变 gdb 连接端口到 port。c. -S 在启动时不启动 CPU 需要在 monitor 中输入 c才能让qemu继续模拟工作。d. -d 输出日志到 qemu.log 文件。在实验中例如 lab1可能用到的命令如
qemu -hda ucore.img -parallel stdio # 让ucore在qemu模拟的x86-64/32硬件环境中执行
或
qemu -S -s -hda ucore.img -monitor stdio # 用于与gdb配合进行源码调试常用调试命令
qemu中monitor的常用命令 1. help 查看 qemu 帮助显示所有支持的命令。2. q|quit|exit 退出 qemu。3. stop 停止 qemu。4. c|cont|continue 继续执行。5. x /fmt addrxp /fmt addr 显示内存内容其中 x 为虚地址xp 为实地址。参数 /fmt i 表示反汇编缺省参数为前一次参数。 6. p|print 计算表达式值并显示例如 $reg 表示寄存器结果。7. memsave addr size filepmemsave addr size file 将内存保存到文件memsave 为虚地址pmemsave 为实地址。8. breakpoint 相关设置、查看以及删除 breakpointpc执行到 breakpointqemu 停止。暂时没有此功能9. watchpoint 相关 设置、查看以及删除 watchpoint, 当 watchpoint 地址内容被修改停止。暂时没有此功能a. s|step 单步一条指令能够跳过断点执行。b. r|registers 显示全部寄存器内容。c. info 相关操作 查询 qemu 支持的关于系统状态信息的操作。