bochs安装DOS,配置网络

bochs安装DOS,配置网络

虽然我最常用的虚拟机软件是VMWare,但偶尔也从网上了解一下别的虚拟机产品,比如:Virtual PC,被微软收购的商业虚拟机软件,我最早接触的虚拟机软件就是这个,不过和VMWare对比后发现没有后者灵活;还有VirtualBox,被Sun收购的开源虚拟机软件,在开源社区中人气较高,性能似乎很厉害,我没用过不敢评论。最近了解了下Bochs这 款虚拟机软件,使用感觉是:开源、速度慢。有人会说“既然慢,哪还用它干什么”,其实使用虚拟机,除非你有一个性能很强悍的主机可以支撑起虚拟机中系统作 为正常工作需要的系统外,其它情况都是用在特殊场合的,比如:程序测试、调测系统级程序、复杂结构组网测试等。因为Bochs和别的虚拟机软件的设计理念 不同:它强调良好的平台移植性和硬件模拟的真实性,这就导致了Bochs和采用其它虚化技术(Virtualization)的虚拟机软件性能上的差距。 不过从另一个角度来看,对于从事系统内核开发/测试的人员来说,Bochs恰恰是个福音——它最大程度地保证了硬件平台模拟的真实性。而且Bochs还可 以以调试模式运行,这意味着你将获得一个“硬件调试器”,例子:Xfocus上的这个牛人用Bochs调测Windows的内核引导程序。

下面是我尝试的在Bochs下安装DOS系统的过程,还附带了点DOS系统网络配置方法。

配置Bochs   返回页首

环境:
宿主系统: Windows XP Pro (SP2)
虚拟机软件:Bochs 2.3.6
虚拟系统:MS DOS 7.1

参考:体验多套操作系统 - Bochs

下面是我对Bochs的配置文件bochsrc.txt中的常用配置项的理解:

  1. display_library

    按照bochsrc.txt的解释,display_library是用来实现Bochs VGA的代码。如果不指定,Bochs会选择一个默认的。Windows下指定:

    display_library: win32
    # 后面可以加 options="legacyF12" 或 options="windebug"

    可能Windows下默认就是这个,所以显式地指定后不会有什么速度变化。

  2. romimage

    ROM BIOS的镜像的设置。64K大小的romimage通常加载到地址0xf0000。128K的romimage通常加载到0xe0000。

  3. cpu count=Count of Processors
    ips=Emulated Instructions per Second

    ips可以理解为处理器的指令执行速度,在运行Guest OS时Bochs会在窗口状态条显示这个速度的运行值。设置ips时,不要太大于这些值。比如我的系统执行时(Pentium M 735,1.70GHz),运行值大致在5,000,000到8,000,000间,所以我设ips=10,000,000。

  4. megs

    模拟的物理内存。

  5. optromimage[1-4]

    可以加载最多4个可选rom image。这些rom image的加载地址不应该和标准的rom image(romimage)或video bios(vgaromimage)重叠。这些rom image只要有0x55AA标记,就会被bios初始化。利用它们可以存储代码和数据,加载后可以让boot loader使用。

  6. vgaromimage

    指定video/VGA rom bios的image,它加载到0xc0000。

  7. VGA

    指定display extension功能,根据加载的VGA bios来定。none表示使用标准VGA。Bochs VBE VGA bios可以使用vbe(VGABIOS-lgpl-latest就是这种bios image文件),Cirrus SVGA bios可以使用cirrus。我的Guest OS为DOS 7.1时,使用cirrus扩展(VGA bios image为VGABIOS-lgpl-latest-cirrus文件)没发现显示速度有什么变化。

  8. floppya

    指定第一个软驱,可以指定软盘 image。

  9. ata[0-3]

    设置ATA控制器,最多4个,一般不用改。注:ata3默认使用irq=9,而ethernet NIC的设置(ne2k)也通常设为irq=9,因为我没有真的使用ata3,所以不知道会不会有冲突。

  10. ata[0-3]-[master, slave]

    设置挂在ata上的设备。和一般真实系统类似,第一块硬盘挂到ata0-master上:

    ata0-master: type=disk, path="hd0.img", mode=flat, cylinders=203, heads=16, spt=63

    hd0.img这个disk image文件可以由Bochs自带的程序bximage生成,它会告诉你生成 image的CHS(柱面数,磁头数,每磁道扇区数)参数,把它粘到ata0-master后面。其实,如果mode=flat,bximage生成的 disk image文件就是一个符合CHS大小的空白文件。mode有个可选值vmware3,说明Bochs支持VMware的disk image文件格式,不过没试。

    第一个光驱挂在ata1-master上,可以支持光盘image:

    ata1-master: type=cdrom, path="image.iso", status=inserted
  11. boot

    设置引导顺序,比如:

    boot: floppy, cdrom, disk
  12. log

    Bochs运行时产生的日志文件路径。不想产生日志则Windows下设置路径为nul(和Unix下的空设备/dev/null类似)。如果想输出日志内容到Bochs启动时的控制台,设置为:"-"。

  13. vga_update_interval

    指定经过多少周期,video memory要为更新被扫描一次。默认值是40000,但bochsrc-sample.txt中却设置为300000,和cpu: ips的有关。这个值影响Guest OS的屏蔽显示速度,不要设置比40000大。

  14. keyboard_serial_delay

    从键盘传送字符到控制器的延迟,单位微秒。bochsrc-sample.txt中设置为250,这里设置为100。

  15. ne2k

    Ethernet NIC的设置。对于Windows Bochs先要安装WinPcap驱 动程序。设置WinPacp驱动绑定主机上的网卡后(将网卡属性中的Network Monitor Driver - Netmon数据包捕获驱动激活),激活这个主机网卡(主机可以使用VMware的虚拟网卡),使用Bochs自带的niclist产生Bochs中模拟 的NE2000网卡的参数,粘到ne2k后,比如:

    ne2k: ioaddr=0x300, irq=9, mac=b0:c4:20:00:00:01, ethmod=win32, ethdev=\Device\NPF_{72E4788B-C560-4D5E-8A2F-2318B8FD3CAA}
  16. sb16

    定义SB16声音系统的模拟。bochsrc-sample.txt中给出如下的例子:

    sb16: midimode=1, midi=/dev/midi00, wavemode=1, wave=/dev/dsp, loglevel=2, log=sb16.log, dmatimer=600000

    虽然midi和wave指定是Unix下的设备文件路径格式,但上面的这个设置在Windows下可以起作用(可能因为Windows下midi和 wave没有什么效果)。但这样的配置安装上MS DOS 7.1后,发出的midi声音和其它声音很慢,所以就不再使用sb16选项了。

安装配置MS DOS 7.1   返回页首

使用MS DOS 7.1的安装光盘镜像安装,很简单。如果想禁止DOS 7.1初始化时显示的logo,可以把logo.sys改名为其它,比如logo.001。下面是DOS下网络的配置。

参考:

  • DOS下联网的方法
  • 微软的Microsoft Network Client使用说明:How to Set Up the MS Network Client Version 3.0 for MS-DOS
  • 微软的Microsoft Network Client知识库文章:README.TXT: Microsoft Network Client version 3.0
  • Microsoft Network Client 3安装过程

    执行setup.exe,选择安装到的路径,默认为C:\NET。

    Change Names菜单中设置用户名、主机名、工作组和Microsoft网络域。

    Change Setup Options菜单中设置重定位器、系统启动选项、登录到域、网络工具弹出界面的快捷键(默认Ctrl+Alt+N)。

    Change Network Configuration菜单中设置NIC(包括驱动、中断号、IO基址), 注意这些数据要和Bochs中ne2k选项的设置一致,Microsoft Network Client 3可以自动检测出来NE2000 Compatible的NIC驱动,只须调整中断号和IO基址就可以了。NIC设置好后,向其下添加需要的协议。初始时只有一个协议:NWLink IPX Compatible Transport,这个协议和Microsoft网络和Internet/Intranet没有关系,但是去掉它会有问题,就留着。添加2个协 议:Microsoft NetBEUI和Microsoft TCP/IP,可以设置Microsoft TCP/IP协议,包括禁用自动配置(如果启用自动配置,但又不存在DHCP服务的话,网络模块初始化时会很长时间等待)、IP地址与子网掩码、默认网 关。注意:这里用空格而不是“.”来分隔。

    安装时的配置信息在几个安装路径下的ini文件中保存(system.ini、protocol.ini),可以手动修改。也可以再次运行安装后的setup.exe程序修改设置。

    system.ini中设置的主机名(通过setup.exe的Change Names菜单设置)不起作用,ping仍然不认识这个主机名,可以在hosts这个文件中加一个IP地址与主机名对应的条目(相当于Unix下的 /etc/hosts文件),这样TCP/IP就能静态解析这个主机名了,也可以试一下lmhosts文件。

    DNS服务和dnr.exe、tcputils.ini几个文件有关,但没有试验成功,所以还不能用域名访问Internet/Intranet。

    如果在config.sys中不加载emm386.exe内存管理模块,net.exe start在运行时会提示:"Error 8: There is not enough memory available",而加载emm386.exe时又可能会影响其它应用,比如Turbo C++ 3。

  • 使用net.exe访问共享路径

    Microsoft Network Client程序启动后就可以使用:

    net use E: \\host\share

    上面命令把主机名为host上的共享路径share映射为驱动器E:,断开映射命令为:

    net use E: /delete

注意:

Microsoft Network Client的当前登录用户名要在共享服务主机上分配相应的权限,否则可能没有写权限。

当共享服务主机是Windows时,并且autoexec.bat中启动lock volume功能时(通过调用lockdrv.bat最终调用lock.exe),在覆盖共享路径下已存在文件时,DOS会报错并系统停止,提示:DOS 7.1 has disabled direct disk access to protect your long filenames. To override this protection, see the LOCK /? command for more information。但是去掉autoexec.bat中的lockdrv.bat后,仍然出现这个错误。

启动Microsoft Network Client时,会提示你输入用户名,直接回车则使用默认用户名,即在setup.exe的Change Names菜单中设置的用户名(保存在system.ini中),然后输入该用户对应的密码,注意这里的用户名和密码都要和共享服务主机上的设置一致。接 着,有提示是否创建当前用户的密码列表文件来保存密码。

一旦使用net use映射过共享服务主机上的路径,则下次在启动Microsoft Network Client时会自动映射这个路径,但如果密码不对的话,实际上这个映射驱动器路径是无法访问的(提示Access denied),可以使用net use E: /delete先取消这个映射,然后再次映射。

你可能感兴趣的:(bochs安装DOS,配置网络)