2006年12月23日 星期六

现实需要模拟

地震损坏了海底光缆,导致我家访问国外网站比较困难。我原以为网速不好的时候用w3m这样的控制台浏览器上网会快点,但事实证明是徒劳。w3m装了插件后可以在控制台下显示图片,中文显示也没有问题,并且可以使用鼠标。的确很奇妙,但速度却似乎比图形的浏览器慢多了。

一直对模拟器这种东西很有兴趣。从模拟插到电视上玩的那种游戏机,到模拟计算机,模拟网络设备,都极令人兴奋。喜欢Mac的人,可以在x86的机器上用PearPC来模拟一台PowerPC的机器,然后安装苹果的操作系统。虽然昔日的开发者不幸因车祸去世,但好在后继有人。

需要学习使用思科设备的人,可以使用Boson公司的NetSim来模拟思科的IOS,并把他们连接成网络来实际运转。但这仅仅是提供了模拟使用IOS的途径。可以用Dynamips来完整模拟路由器硬件,然后在上面安装运行IOS。这样可以完成很多NetSim这样的玩具软件不能完成的功能。(找到两个它的前端,DynagenDynagui)

在系统管理,网络应用,软件调试,网络安全中,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的运行环境。Winecedega,都是为了在Linux上运行Windows应用程序而产生的。后者专注于运行Windows下的游戏。而这些,都仅仅是模拟一个运行环境,功能有限,但执行效率很高,并且资源占用远远低于虚拟机。

如果要调试一个操作系统内核,会有这样的尴尬。虽然可以用VMWare虚拟一个机器,然后装个操作系统,再然后使用内核调试器通过网络对该系统上的内核态驱动进行远程调试。但如果需要在内核启动的过程中调试怎么办?在系统启动的时候,没有应用软件可用,也没有网络协议栈可用,更别说软件的调试器了。可以买个硬件调试器来做这个工作,可是如果自己没有钱或者舍不得花那么多钱怎么办?

这时候,BochsQEMU就是救星。两者都是开源软件,都有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。

标签:

8 条评论:

时间 12/29/2006 3:37 下午 , Anonymous MapLeaf 说...

Shit,什么破blog,我刚些了一段长篇大论,居然发表不成,也懒得再写了...

 
时间 12/29/2006 3:53 下午 , Blogger Sanhe 说...

写完后,先全选,复制,然后再提交。
这样万一出错了,剪贴板上还有一份。
欢迎再次发表长篇大论。

 
时间 12/29/2006 10:24 下午 , Blogger 冰岩 说...

你不知道,那个iris软件在你走后已经在机房得到了推广,我的课和康弘的网络安全都在用。
但遗憾的是毕竟是sniffer软件,只能截获网卡数据。我想分析一下路由器的hdlc就没办法了,除非有硬件的协议分析仪。
还有,不知能不能截获无线网卡的帧

 
时间 12/30/2006 9:47 上午 , Blogger Sanhe 说...

1. 我居然推广使用盗版软件,真是后悔。当然你出于教育用途,可以勉强容忍。
2. Iris并不是一个强大的协议分析仪,事实上我在使用Windows的时候也不用它。如果你想要专业的,考虑用WildPackets(http://www.wildpackets.com)公司的产品。以太网可以用他们的EtherPeek NX,w无线网络则使用AiroPeek。
3. 用软件的协议分析仪为什么不能分析HDLC?

 
时间 12/30/2006 10:59 上午 , Blogger 冰岩 说...

路由器之间互联才用hdlc和ppp,但是软件不能装到路由器上。只能装到电脑上,然后截获以太网卡的数据链路层的帧.

 
时间 12/30/2006 11:02 上午 , Blogger 冰岩 说...

看来真是光缆坏了www.wildpackets.com访问很慢。

 
时间 12/30/2006 11:50 上午 , Blogger Sanhe 说...

我那个是反问,并非疑问,不好意思。
协议分析软件是不能装到路由器上,但路由器却可以模拟到你的PC上呀。为什么不尝试用Dynamips在你的系统上模拟两个路由器,然后配置它们之间的HDLC,接着用协议分析仪抓包分析呢?

 
时间 12/30/2006 11:59 上午 , Blogger Sanhe 说...

或者用VMWare模拟Juniper公司的JunOS,然后配置HDLC,再抓包分析。我听一个开发SNMP管理软件的友人说AdventNet公司的AdventNet Simulation Toolkit可以模拟网络设备,但我不清楚它能否模拟功能完备的路由器,能否模拟HDLC和PPP。

 

发表评论

<< 主页