6.828学习笔记1 - 准备实验工具

 

1、6.828中用到的工具

    学习中需要用到两类工具:x86的模拟器和编译工具链。

    x86模拟器是为了模拟目标机。实际上使用真的x86计算机也可以作为6.828课程的目标机,而且如果真的要编写一个操作系统的话,肯定是要运行在真的计算机系中才有意义。课程中使用模拟器是为了简化学习工具,购买计算平台也是一笔不小的花销。

    编译工具链是对我要编写的操作系统源代码进行编辑、编译、调试等的工具。

2、工具的安装

    6.828中用到的工具看似简单明了,一类模拟目标机,一类管理操作系统代码。但是由于隐含了背后的联合开发方法,因此安装时需要额外的辅助工具。如果对联合开发不了解的话,就会头绪纷乱而没有章法。

    要理解联合开发方法,首先需要注意的是,我将在课程中得到的操作系统包括两个部分:一个是运行在目标机上的操作系统软件;另一个是在宿主机上编写出来并能成功编译的操作系统源代码。采用联合开发方法是没办法的事,目标上原来就没有操作系统在运行,又怎么运行编译工具链为自己开发软件,甚至开发自己呢?!

    因此我们需要的是整个联合开发环境,不同的情况下,需要的工具差距很大。

    如果我使用真的x86计算机作为目标机,那么通过某种方式将我编译得到的操作系统软件安装在目标机上即可;但如果我使用x86模拟器模拟目标机,那么就需要模拟器的运行环境。这个运行环境不用区分硬件和软件,我将它称为系统1。对操作系统源代码进行编辑、编译的编译工具链是软件,这些工具本身也要在一个运行环境上才能运行。同样不区分硬件和软件,我将它称为系统2。    

    下面看看我的情况。

    首先,我不考虑使用真的x86计算平台作为目标机,那么我就需要搭建系统1和系统2。

    其次,系统1和系统2可能相同也可能不同。6.828推荐使用搭载linux的系统,因为在linux是良好的开发平台。如果使用搭载linux的系统,那么我们可以让同一个系统(也就是x86计算机运行linux)同时实现系统1和系统2的功能。这时需要安装什么软件呢,答案是运行在linux系统中的QEMU(x86模拟器)和linux系统中的工具链。等等,这不就是最初给的两类工具吗?是的,如果我用linux系统进行联合开发的话,似乎就是这么简单。然而,我用的是安装了windows系统的计算机,而且开始时我没有想到而这差别这么大。

    最后,使用搭载windows的系统构建联合开发环境需要哪些工具呢?第一个是运行在windows系统中的QEMU(x86模拟器)。第二个是linux系统中的编译工具链。为什么不使用windows系统中的编译工具链呢?原因在于windows系统作为开发平台评价不高,所以还是选择linux开发环境比较好。为了运行linux系统中的编译工具链,我在windows系统中使用VMware软件实现了linux虚拟机(ubuntu14.04)。然后在linux虚拟机上安装编译工具链。

    具体的安装过程如下:

    (1)安装VMware软件;

    (2)下载ubuntu14.04的32位版本iso;

    (3)运行VMware利用ubuntu的iso文件制作虚拟机;

    (4)运行ubuntu14.04虚拟机,检查编译工具链是否已存在:

        a. 在终端中输入objdump -i,输出elf32-i386;

        b. 在终端中输入gcc -m32 -print-libgcc-file-name,输出/usr/lib/gcc/i686-linux-gnu/4.8/libgcc.a;

        由于工具链已存在,没有继续安装课程中说明的“更好的工具链”。

     (5)安装qemu的windows版。

    我曾想使用cygwin,但是没有成功。不过却意外的找到了廖雪峰的个人网站,里面对git的介绍非常符合我这种想了解一点但又不深入了解,而又想又一个清晰的了解的人。还找到一个windows下的git工具,git bash,也很方便。

    总之,使用windows操作系统作为开发平台,从工具安装上就已经非常不方便了。以后我腰找个ubuntu操作系统来试一下。

 

    

    

 

posted on 2017-04-12 14:21  寻找理性之光  阅读(660)  评论(0编辑  收藏  举报

导航