



本书附带的代码已建好完整的编译环境,如果已安装MicrosoftVisual Studio 2008,则可以直接编译。图1.1所示解决方案'ntos'中的11个项目均以“Win32控制台应用程序”模板创建。
    图1.1
各项目功能描述如下。
· acpi:高级配置与电源接口驱动。
· disk:磁盘类驱动。
· kd:调试组件,用于osloader.exe和ntoskrnl.exe连接。
· ntfs:文件系统驱动,用于读取ntdll.dll和smss.exe文件。
· ntoskrnl:ReactOS核心模块。
· osloader:内核加载器(Loader模块),ntldr的后半部分。
· pci:PCI总线驱动。
· rtl:运行时链接库。
· scsiport:SCSI端口驱动。
· startup:内核加载器(SU模块),ntldr的前半部分。
· uniata:微端口驱动。
在编译ntos解决方案时需要注意,因为项目startup是由nasm编写的,所以需要指定nasm.exe来编译,具体指令见make.bat文件:
   在该文件中,还用到了qemu-img.exe程序,它提供了一个很有用的命令,可以将.img格式文件转换成VMware所使用的.vmdk格式文件。nasm.exe和qemu-img.exe都可以在ntos\system32目录找到。
事实上,以C语言编译的话有点慢,特别是编译ntoskrnl时,因为文件比较多。笔者曾改用C++编译,速度相对快了一点,但却带来了一个问题,那就是C++代码的安全性要求比较高,一些类型必须匹配,否则编译无法通过。而且,需要修改的代码也比较多,在兼容性方面很不友好,所以最后还是决定仍然使用C。每次重新编译都是一个漫长的过程,一般在10分钟左右。编译完成同时生成ntos.img和ntos.vmdk两个文件。其中,ntos.img用于Bochs虚拟机,而ntos.vmdk用于VMware虚拟机。