Windows下的开发环境
Windows下的开发环境
我们在介绍QEMU时提到过,在Windows下你需要一个虚拟的Linux来帮你编译操作系统的源代码。将操作系统内核编译链接成ELF格式有诸多好 处,我们不但可以用Linux下现成的工具(比如readelf)来分析编译好的内核,还可以在必要时参考Linux内核的源代码来帮助我们自己的开发, 总之这拉近了我们与Linux之间的距离。所以不要因为在Windows下也离不开Linux这件事而沮丧,况且装一个Linux是件很容易的事情。
不过装一个虚拟的Linux跟装一个真实的Linux还是有所不同,主要在于两点。一是我们仅仅想用这个Linux来做编译链接的工作,所以在选择组件的 时候尽量去除不必要的内容,这样可以节省时间和空间;二是要确保你选择的虚拟机容易跟宿主机进行网络通信,因为你需要将宿主机上的源代码拿给虚拟机来编 译。
安装方法可以有多种选择,比较简单的方法是通过光盘安装,当然这个光盘也可以是“虚拟”的,也就是一个光盘映像。首先到你所中意的Linux 发行版的官方网站下载一个安装光盘的映像,有些发行版还提供免费或付费的邮寄服务,读者可以根据自己的喜欢自行选择。这里假设你得到的是光盘映像,文件名 为inst.iso。
有了光盘映像,我们还缺少一个硬盘映像,读者可以用前文提到过的bximage来生成它,也可以使用下面的命令:
$ qemu-img create hd.img 1500M
这样就能生成一个大小约为1.5GB的硬盘映像了。
接下来就可以进行安装了:
$ qemu -cdrom inst.iso -hda hd.img -boot d
安装过程从略,注意尽量精简你的组件,不要安装太多无用的东西。这些组件对我们是必需的:GCC、GNU Make、NASM、Samba。如果它们在安装时默认没有装上,那么你需要在系统安装结束后将它们安装上。由于目前大多数虚拟机都具有好用的网络功能, 所以安装它们并非难事。
装完之后,我们还需要解决让宿主机和虚拟机通信的问题。其实你可以把它们看成是局域网中的两台机器,局域网中适用的方法这里同样适用,所以Samba就很适合。
首先在Windows中以可读写方式共享一个文件夹,假设叫做OrangeS,然后在虚拟的Linux上运行下面这条命令:
$ sudo mount -t smbfs -o username=user,password=blah //10.0.2.2/OrangeS /mnt
其中假设你的宿主机IP地址为10.0.2.2。这样在Linux的/mnt目录下就能看到Windows共享文件夹下的内容了,你可以在虚拟机中随意读写,就像对待本地文件一样。
这样一来,你的编译环境就安装完成了,接下来,如同在Linux下一样,你还需要一个编辑器。据说始终有一部分人使用记事本(notepad)来编写代 码,不管基于何种理由,希望你不要这样做,因为你可以找到许多比notepad更适合编写代码的编辑器,有收费的,也有免费的,它们通常都具备关键字颜 色,自动缩进等方便开发者的功能,可以大大提高工作效率。
总结一下的话,搭建一个Windows下的开发环境,你需要做以下工作:
• 安装Windows。
• 安装Bochs(安装程序可到其官方网站获取)。
• 安装一个你喜欢的编辑器用来编写代码。
• 安装一个速度较快的虚拟机,如QEMU(安装程序可到其官方网站获取})。
• 在速度较快的虚拟机上安装一个Linux。
• 在虚拟的Linux中安装GCC、GNU Make、NASM、Samba──如果它们没有默认被安装上的话。
• 在虚拟的Linux和宿主机之间共享一个可读写的文件夹。
将来你的开发过程看起来很可能是这样的:
• 在Windows中用编辑器编写代码。
• 在虚拟Linux中用Make调用GCC、NASM及其他工具来生成内核并写入磁盘映像。
• 在Windows中用Bochs来运行你的操作系统。
• 如果有问题的话。
o 用各种方法来调试,比如用Bochs;
o 返回第1步。