首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

使用 QEMU 进行跨平台开发(2)软件安装使用

使用 QEMU 进行跨平台开发(2)软件安装使用

安装客户操作系统在使用 QEMU 系统模拟模式之前,必须安装一个客户操作系统。根据上文所述,可以使用预先安装的磁盘镜像或准备一个磁盘镜像进行全新安装。后一种情况,必须首先准备一个磁盘镜像用于安装,但安装过程本身就和在普通计算机上安装一样。任何情况下,都必须了解重要的 QEMU 启动选项,它们会影响安装及系统使用。            
准备磁盘镜像通常,当使用 QEMU 时,用磁盘文件代替硬盘。作为替代方案,可以留出硬盘分区或网络空间用于部分或全部存储;尽管如此,磁盘文件还是很方便灵活,因此我推荐使用磁盘文件。QEMU 支持几种不同的文件格式用于模拟磁盘,最有用的是原始磁盘镜像,VMware 3/4 格式和 QEMU 的原有的 Copy-On-Write 版本 1(QCOW)和 2(QCOW2)格式。            
qemu-img 命令生成磁盘镜像。该命令有很多选项,但基本使用相当简单:传递给它 create 参数、-f fmt 参数来设置格式、文件名和镜像大小。原始镜像(-f raw)对于与其他模拟器交换数据非常有用;然而,QCOW2(-f qcow2)支持压缩,能够利用相对小的空间生成看上去很大的磁盘。              
例如,以下命令将生成 200GB 的磁盘镜像文件。一开始,该文件占用主机很小的磁盘空间(只有 256KB);随着使用,大小逐渐增长:            
1
qemu-img create -f qcow2 linuxppc.qcow2 200G




除了生成硬盘镜像,还需要生成包含安装中介的镜像文件。既可以指定 QEMU 作为真实光驱,也可以指定包含光盘镜像的文件,例如从网上下载的或从物理光盘生成的。                           
QEMU 启动选项当开始安装或使用 QEMU 时,必须以合适的选项启动程序,以能够使用模拟器。QEMU 文档提供了一些模糊的选项的信息,但还是能够理解一二的。尤其是,必须指定硬盘镜像以及安装中介或镜像。还有选项是选择不同的固件文件,设置各种硬件特性,等等。可以从简单的开始,然后逐渐进行复杂的配置。            
完整的 QEMU 安装包含若干二进制文件,其中每个都模拟不同的 CPU 架构。二进制文件名采用 qemu-system-arch 的格式,其中 arch 是架构代码,ppc 表示 PowerPC 以及 x86_64 表示 x86-64。一个例外是 x86 系统,它通过 qemu 二进制文件模拟。采用 qemu-arch 格式名称的二进制文件提供各自架构的用户模式模拟。            
为指定硬盘,使用 -hda、-hdb、-hdc 和 -hdd 来引用 Parallel ATA (PATA) 硬盘,-cdrom 指定 CD 或 DVD 镜像文件或设备。这些选项都采用文件名作为参数。光驱占用了 -hdc 的位置,因此不能同时使用这两个选项。            
另一个重要的 QEMU 启动选项是 -boot,它指定了启动设备。使用 -boot c 从第一个硬盘启动,-boot d 从 CD-ROM 设备启动。            
默认情况下,QEMU 提供给用户操作系统仅 128MB RAM。可以在 -m 选项中增加可使用的内存,它的值以兆字节为单位。            
这些选项都设置好后,使用 QEMU 安装 Debian 的 PowerPC 系统会像这样:            
1
qemu-system-ppc -hda linuxppc.qcow2 -cdrom debian-ppc.iso -boot d -m 512




本例假设 debian-ppc.iso 文件包含 Debian PowerPC 安装盘的拷贝,并且可使用默认固件启动。我使用的是 QEMU 0.11.1 和 Debian 5.02a;然而,QEMU 会很苛刻,因此要找到一个解决问题的措施。但系统安装后,可以使用几乎一致的命令来启动系统 — 只要将 -boot d  改成 -boot c。                                         
警告、陷阱和解决措施一个常见的障碍是,尤其是如果您正试图启动一个不熟悉的架构,安装盘可能无法启动。此问题的一个解决方法是通过 -bios 选项指定一个不同的固件文件,它以固件文件名作为选项。读取 /usr/local/share/qemu(或 /usr/share 中的相似的文件夹,如果是用发行包安装)中的固件文件。还可以通过网络搜索找到其他固件选项。            
一个相似的解决方法是使用 -M 选项指定一个架构子类型。输入 qemu-system-arch -M ? 来了解有哪些值可用于您的架构。            
另一种替代方法是使用 -kernel 选项;将用于主机磁盘上的用户平台的 Linux 内核文件名传递给它,QEMU 将会加载并运行,这将会忽略任何平台相关启动加载器或固件特性可能带来的问题。              
由于 QEMU 模拟目标平台的 CPU,它可能会行动迟缓,因此应做好准备花费比一般安装用户操作系统更长的时间。如果可能,应当坚持最小安装需求并避免 X Window System。            
当 QEMU 准备好运行,它会以文字模式窗口中的图形模式在本机系统下运行。  显示了有三个 QEMU 会话的桌面, Windows XP 运行在 x86 模拟器下,FreeBSD 运行在 x86-64 模拟器下,Debian Linux 运行在 PowerPC 模拟器下。            
图 1. QEMU 允许在多个模拟平台上运行多个操作系统高效使用 QEMU安装完客户操作系统后,就可以开始用于软件开发或测试。您需要能够在客户和主机之间传输文件。有三种方法实现这项任务,但使用模拟网络是最灵活的方法。还应考虑 QEMU 模拟与软件开发相关的功能和限制,以发挥模拟器的最大优势。            
管理文件传输QEMU 提供若干网络选项。默认是用户模式网络,它与网络地址翻译(NAT)配置类似:用户操作系统可以使用网络客户端连接其他计算机,包括主机操作系统和其他网络服务器,但其他系统需要特别配置才能连接客户操作系统。QEMU 提供自身的动态主机配置协议(DHCP)和域名系统(DNS)服务器用于客户操作系统本身。对于客户操作系统,主机就是一个网关系统。            
如果您打算使用 Network File System (NFS)、Server Message Block (SMB)/Common Internet File System(CIFS)、Secure Shell (SSH) 或其他客户端从用户与主机传递文件,默认配置已经足够。但是,必须在主机端运行合适的服务器。如果想要初始化其他方向的连接,必须使用 -redir 选项将主机系统上的端口重新指向客户操作系统。例如,以下命令将主机的 2222 端口重新指向客户的 22 端口:            
1
qemu-system-ppc -hda linuxppc.qcow2 -boot c -m 512 -redir tcp:2222::22




执行该命令的结果是可以使用 SSH 通过输入 ssh localhost -p 2222 从主机端登录客户端。也可以从网络中其他计算机访问客户端。因此要设定新的固件规则。当然,需要在客户操作系统运行 SSH 服务器。您可用同样的方式重定向 NFS、SMB/CIFS 或其他端口。            
软件开发技巧现在 QEMU 已安装并运行客户操作系统,现在可以开始开发软件。既可用模拟器下的原有编译器,也可用主机上的跨编译器。对于需要在客户操作系统反复编译和测试软件的大型开发项目,跨编译器可能更快,但其安装配置已超出本文范围。模拟器下运行的编译器适合于小型项目,或不经常编译软件的项目。            
对于软件,计算机就像是目标平台的真实例子,可用于最实际的用途。一些特性,如字节顺序、CPU 一致性以及其他硬件基本特性就像在一台真实计算机上一样运行正常。我使用过真实的 PowerPC Apple iMac 和基于 QEMU 的 PowerPC 系统开发和测试全局惟一标识符(GUID)分区表(GPT) fdisk 程序的 PowerPC 版本,该程序需要知道 CPU 的字节顺序,在我看来,基于 QEMU 的系统与真实的 iMac 别无二致,除了 QEMU 系统有些慢。            
这说明,如果深入探究,确实有些差异。例如,QEMU 的模拟硬盘会返回 “QEMU HARDDISK” 的模式字符串,与真实的硬盘驱动器不同。总的来说,QEMU 的虚拟硬盘有些过时;硬盘都是 PATA 或 Small Computer System Interface (SCSI) 设备,这根据具体平台,视频硬件也过时了。可以在 QEMU 文档中找到虚拟硬件的详细信息。请注意各个版本的详细信息都不同。            
在 Linux 下,QEMU 会话占用很少的 CPU 时间,除了客户操作系统工作时。但 QEMU 会话会占用指定给它的 RAM 容量。因此,从实际出发,需要给主机系统大量内存,尤其是打算同时运行多于一个或两个 QEMU 会话时。            
更深入的内容QEMU 是个有多个选项的大安装包,其中很多让一些开发人员很感兴趣。例如,可以更改模拟网卡的模式,给客户机器一个真实网络中单独的 Internet Protocol(IP) 地址 ,将各种硬件端口重新定向到客户操作系统,组合选取各种硬件选项。如果这些特性对您很重要,那么这些 QEMU 文档将会非常重要。
返回列表