现实需要模拟
地震损坏了海底光缆,导致我家访问国外网站比较困难。我原以为网速不好的时候用w3m这样的控制台浏览器上网会快点,但事实证明是徒劳。w3m装了插件后可以在控制台下显示图片,中文显示也没有问题,并且可以使用鼠标。的确很奇妙,但速度却似乎比图形的浏览器慢多了。
一直对模拟器这种东西很有兴趣。从模拟插到电视上玩的那种游戏机,到模拟计算机,模拟网络设备,都极令人兴奋。喜欢Mac的人,可以在x86的机器上用PearPC来模拟一台PowerPC的机器,然后安装苹果的操作系统。虽然昔日的开发者不幸因车祸去世,但好在后继有人。
需要学习使用思科设备的人,可以使用Boson公司的NetSim来模拟思科的IOS,并把他们连接成网络来实际运转。但这仅仅是提供了模拟使用IOS的途径。可以用Dynamips来完整模拟路由器硬件,然后在上面安装运行IOS。这样可以完成很多NetSim这样的玩具软件不能完成的功能。(找到两个它的前端,Dynagen和Dynagui)
在系统管理,网络应用,软件调试,网络安全中,VMWare成为必不可少的x86虚拟机。既有Linux版本,也有Windows版本。接近真实地模拟一台计算机,在上面可以安装各种操作系统。可以模拟双CPU,可以像真实的计算机一样设置BIOS,安装系统,有虚拟网卡桥接或NAT两种方式接入宿主主机的网络。并且有免费的VMware Player可用。可以从Ubuntu的源中安装VMware Player,但它无法创建虚拟机配置文件。虚拟机配置文件可以自己编写,或用easyvmx这样的网站在线生成。
如果仅仅要模拟Linux操作系统,那么可以使用一些更加轻量的工具。在Linux中可以使用User-Mode-Linux,Windows中可以选择coLinux。
如果要在Windows中模拟一个Linux的运行环境,以方便在Windows中开发Linux下的程序,或者想把Linux应用程序移植到Windows。那么Cygwin是很好的选择。同样,Linux中也有类似的工具,可以在Linux中模拟Windows的运行环境。Wine,cedega,都是为了在Linux上运行Windows应用程序而产生的。后者专注于运行Windows下的游戏。而这些,都仅仅是模拟一个运行环境,功能有限,但执行效率很高,并且资源占用远远低于虚拟机。
如果要调试一个操作系统内核,会有这样的尴尬。虽然可以用VMWare虚拟一个机器,然后装个操作系统,再然后使用内核调试器通过网络对该系统上的内核态驱动进行远程调试。但如果需要在内核启动的过程中调试怎么办?在系统启动的时候,没有应用软件可用,也没有网络协议栈可用,更别说软件的调试器了。可以买个硬件调试器来做这个工作,可是如果自己没有钱或者舍不得花那么多钱怎么办?
这时候,Bochs和QEMU就是救星。两者都是开源软件,都有Unix和Windows等各种版本,都可以完整模拟各种操作系统,并且都可以使用调试器连接到虚拟主机上充当硬件调试器来调试内核。这两个软件都可以从Ubuntu的源中安装编译好的Linux版本。QEMU在Bochs基础上做了更多工作,因此它似乎更好一些。例如Bochs需要安装特定的Kernel Patch,但QEMU不需要。并且QEMU安装加速器后据说速度约为真实机器的25%,约为Bochs的60倍。
如此看来,qemu+kqemu(这个并非QEMU的那个KDE的GUI前端,而是QEMU的加速器)似乎是更好的选择。另外发现一个qemu的Gnome图形前端qemu-launcher。Ubuntu的源里没有这个软件,可以从这里下载它的deb包。Windows用户可以使用QGui,喜欢KDE的人可以使用KQEMU。
标签: 模拟器

Atom

