分享
 
 
 

用VMWARE搭建开发操作系统的环境

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

很多人觉得开发底层系统用BOCHS会更好一些,能够跟踪每个指令的执行,不过我觉得开发过程中,需要利用EMULATER一步步跟踪指令的时间并不长,在设置了IDT表,启动了MONITOR功能之后就不需要了,而VMWARE提供的直接硬盘访问,串口互联等功能可能是BOCH都不具备的功能。(当然,最主要的原因是我还不太会用BOCHS)

环境需求:

(1) 内存:在256M以上

我的机器是512M, 推荐这个数值或更大,因为在运行时需要同时启动两个虚拟系统, 以128M/64M来分配的话,就要占用192M的物理内存,再加上VMWARE本身占用的内存,在256M的机器上,我是调整成96M/32M才能同时启动(不是最大),虽然可行,但内存少也会导致虚拟系统运行效率降低。

(2) 操作系统:XP或NT2000

需要能够运行VMWARE软件,所以WIN95/98都不行。

使用LINUX作为宿主操作系统也行,但我没试过。

(3) 虚拟软件:VMWARE 4.0/4.5

再低的版本没试,所以不知道是否可行,当然版本越高越好。

(4) 其它软件:Linux安装盘(映象文件)

对LINUX的版本没什么要求,但要注意,我们要用到里面的开发/编译工具,版本越新,提供的工具版本也越新。另外该LINUX最好提供GRUB的安装.

(5) 有足够的硬盘空间,最好是有两块硬盘,而且有一个硬盘的某些分区是没使用的。

除了在虚拟机上跑,应该还希望在实机上跑跑看吧。

如果只用一个硬盘也可以,但要求你会使用GRUB引导WINDOWS.

搭建步骤:

(0) 安装VMWARE

(1) 在VMWARE上建立两个VM。一个用于编译/跟踪(develop_vm),一个用于运行(run_vm)

(2) develop_vm的创建

Guest OS选择LINUX

内存可以设大一些,因为在这上面要跑Linux,还要完成软件的编译和跟踪。

硬盘可以采用Virtual Disk,容量可以设大一些。

* 进入Advance设置

* 设备连接点连到IDE 0:0

需要安装网卡,采用Host-only模式即可。

(3) 在develop_vm上安装LINUX,安装模式随自已,但必需包含开发工具,

即gcc, binutils,make等软件是必需安装的。minicom也应该有。安装后要注意安装VMWare Tools

(4) run_vm的创建

Guest OS选择LINUX

内存可以小一些,视内存情况而定,要确保deveop_vm和run_vm能同时运行。

硬盘采用直接物理硬盘方式,可以激活所有分区。

* 进入Advance设置

* 设备连接点连到IDE 0:0

* 在MODE中,选中Independent. 并选择Persistent。

(5) 在run_vm上安装LINUX, 选择最小模式安装.

实际上run_vm并不需要安装任何操作系统,但我们利用LINUX安装可以实现两个目标

* 将一个分区格式化成EXT2(EXT3)格式系统。

* 在引导扇区和文件系统上安装GRUB

安装LINUX时建议如下:

* 使用GRUB作BOOT LOADER, 安装到MBR上

* 不需要安装多个分区目录,只要建立"/"分区即可。甚至SWAP也可以没有.

(6) 分别在develop_vm和run_vm上分别添加串口(Serial)

属性选择"使用命名管道"(Use named pipe)

两个VM中的管道名需要一致。

在develop_vm中选择“This end is the server",在run_vm中选择"This end is the client"

都选择"The other end is a virtual machine.

(7) 在run_vm中启动Linux,修改Boot loader的引导配置文件. 我使用的是GRUB. 下面只以GRUB为例

% cd /boot/grub

% vi grub.conf

文件改成如下内容:

#grub.conf

default=0

timeout=1

title Self Develop OS

root (hd0,0)

kernel /boot/xxxx-0.1 ro root=/dev/hda1

#eof

关于kernel那一行,root=??? 需要根据你在run_vm的安装的分区情况页定。

(8) 在develop_vm上,执行添加硬盘设备操作。

* 选择直接物理硬盘方式(该硬盘即run_vm使用的硬盘)

* 启用Advance设置

* 将该硬盘挂到IDE0:1

* 在MODE中,选中Independent. 并选择Persistent.

(9) 在develop_vm上启动LINUX, 创建目录/mnt/devos

目录名其实是随意的,我只是举例。

(10) 如果你习惯使用SourceInsight或VC等的编辑工具(不习惯vi),可以将源码建在WINDOWS中的某个目录下,然后使用VMWARE的Shared Folders功能将其MOUNT到develop_vm中。(注意只有在develop_vm上安装了VMWare Tools之后才能有这个功能),

这样就可以在WINDOWS下写代码,在develop_vm虚拟机下编译,在run_vm虚拟机上测试运行了。

开发事项和疑问解答:

(1) 使用gcc/gas作为开发的编译工具

linux是开发操作系统最好的借鉴代码,所以gcc/gas应该是最合适的工具。

(2) 遵守MultipleBoot规范。可以参考GRUB的文档,非常简单!

(3) 使用root帐号进行编译,在MAKEFILE中,添写将执行程序COPY到run_vm中的过程

#......

xxxxos-0.1: ?????

......

mount /dev/hdb? /mnt/devos <- 注意这里的hdb?和run_vm的hda?是对应的!

cp -f xxxxos-0.1 /mnt/devos/boot/xxxxos-0.1

umount /mnt/devos

执行mount时,会有警告提示,完全可以忽略不管。

(4) 如果你想用实机测试,那么只需要用run_vm使用的硬盘引导就OK了。

(5) 如果宿主机使用LINUX, 是不是就不需要设置两个虚拟机了

develop_vm除了用来编译之外,另一个功能是通过minicom(或其它串口应用)让develp_vm与run_vm通信互联。宿主机使用LINUX,可以完成编译的功能,但无法完成与run_vm通信的功能。

(6) develop_vm和run_vm之间用串口互联的目的是什么。

在开发初期,这个串口可以用来作为标准输入输出,实现基本的交互(要比实现KEYBOARD/VGA简单)。 但我更倾向于利用这个串口作MONITOR. 这样就可以对代码进行跟踪了(这样才能替代BOCHS的优势)。

使用串口不是必需的,但如果有,而且实现了Monitor功能,你就能体会到它的好处。

(7) 为什么不将编译的代码放到develop_vm上,在run_vm用网络引导的模式。

如果只是开发操作系统那样用。但这种模式不只可用开发编写操作系统,也可以用开发BOOT LOADER,适用性更强些。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有