想写一个OS很久了,今天开始正式动工了!!

大家都知道操作系统是计算机科学中十分重要的一门基础学科。但是以前在学习这门课时,仅仅只是把目光停留在课本上一些关于操作系统概念上的叙述,并不能对操作系统有着深层次的理解。毕竟实践出真理。 MIT的操作系统课程6.828是一门被广泛好评的入门课程。它最重要的特点就是它实践第一的教学原则。在这门课程中会涉及到非常丰富的实验,也会有非常多的动手机会。而且授课者更是亲自构建了一个简化的基于Unix内核的操作系统xv6。所有的实验都是在这个操作系统上完成。虽然它功能很简单,但是它能够帮助我们真正的了解操作系统在做什么。 这一系列博文就是用来记录我学习JOS的过程的!

废话不多说。

在开始做lab之前的第一件事当然是搭建开发环境了。

本文就来简单说明一下开发环境的搭建过程。

我是采用Parallels Desktop来运行linux ubuntu 12.04。开发环境也都是在这个上面搭建的。

首先我们需要安装git和QEMU,用以下命令就可以安装QEMU

 $ sudo apt-get install git
$ git clone git://git.qemu-project.org/qemu.git
Cloning into 'qemu'...
remote: Counting objects: 131834, done.
remote: Compressing objects: 100% (29320/29320), done.
remote: Total 131834 (delta 104345), reused 129302 (delta 102090)
Receiving objects: 100% (131834/131834), 45.42 MiB | 300 KiB/s, done.
Resolving deltas: 100% (104345/104345), done.
Checking out files: 100% (2849/2849), done.
$ cd qemu/
$ ./configure
$ make
$ sudo make install

这中间会出现很多问题,下面大致说一下

在运行./configure时,会出现缺少一些程序的问题,显示如下

Error: zlib check failed

Make sure to have the zlib libs and headers installed.

其实需要安装的远不止上面的显示信息。

下面大致罗列一些需要安装的软件和相应解决的命令

  c++ compiler: sudo apt-get install g++

  libtool : sudo apt-get install libtool

  glib: sudo apt-get install libglib2.0-dev

  pixman: sudo apt-get install libpixman-1-dev  

  zlib: sudo apt-get intall zlib1g-dev

  

dtc:

git submodule update --init dtc

cd dtc

git fetch origin #

git rebase origin/master

make

这中间有一个先后顺序,记得不要搞混

到这里运行./configure就可以成功显示一些配置信息,接下来,make一下就可以了。虽然这个过程有点点长、

编译完成后运行sudo make install ,此时qemu就已经安装上了。

接下来就是将xv6在qemu上运行起来了。

git clone https://github.com/fatsheepzzq/6.828mit.git

cd lab

make

这样xv6就开始编译了。我们可以看一下它生成的最后一个信息 mk obj/kern/kernel.img,这个kernel.img就是内核映像文件,另外obj目录在make之前是没有的,它是make指令生成的,它里面将会有许多的文件我们之后会重点观察。

最后运行make qemu,此时qemu就开始自动加载我们的操作系统内核映像文件了。

本章完结

JOS环境搭建的更多相关文章

  1. 自学php的几个例子(包含AMP(Apache、MySQL、PHP)环境搭建链接)

    学习PHP之前需要先搭建PHP运行的环境(即服务器+PHP+数据库)来使PHP成功运行,具体环境搭建教程可参考pharen(http://www.cnblogs.com/pharen/archive/ ...

  2. .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门

    2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文章,原因是.NET Core的入门门槛相当高, ...

  3. Azure Service Fabric 开发环境搭建

    微服务体系结构是一种将服务器应用程序构建为一组小型服务的方法,每个服务都按自己的进程运行,并通过 HTTP 和 WebSocket 等协议相互通信.每个微服务都在特定的界定上下文(每服务)中实现特定的 ...

  4. rnandroid环境搭建

    react-native 环境搭建具体步骤这个大家已经玩烂了,这个主要是记录下来自己做win7系统遇到的坑 1.com.android.ddmlib.installexception 遇到这个问题,在 ...

  5. python开发环境搭建

    虽然网上有很多python开发环境搭建的文章,不过重复造轮子还是要的,记录一下过程,方便自己以后配置,也方便正在学习中的同事配置他们的环境. 1.准备好安装包 1)上python官网下载python运 ...

  6. springMVC初探--环境搭建和第一个HelloWorld简单项目

    注:此篇为学习springMVC时,做的笔记整理. MVC框架要做哪些事情? a,将url映射到java类,或者java类的方法上 b,封装用户提交的数据 c,处理请求->调用相关的业务处理—& ...

  7. 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~

    一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...

  8. Nexus(一)环境搭建

    昨天,成功搭建了自己的 Maven 环境(详见:Maven(一)环境搭建),今天就来研究和探讨下 Nexus 的搭建! 使用背景: 安装环境:Windows 10 -64位 JDK版本:1.7 Mav ...

  9. 「译」JUnit 5 系列:环境搭建

    原文地址:http://blog.codefx.org/libraries/junit-5-setup/ 原文日期:15, Feb, 2016 译文首发:Linesh 的博客:环境搭建 我的 Gith ...

随机推荐

  1. FFMPEG实现的转码程序

    本例子是由FFEMPG的doc/example例子transcode.c修改而来,可以根据需求任意转换音视频的编码. 原来的例子的作用更类似于remux,并没有实现转码的功能,只是实现了格式转换,比如 ...

  2. H.264 码率设置

    一.什么是视频码率 视频码率是视频数据(包含视频色彩量.亮度量.像素量)每秒输出的位数.一般用的单位是kbps. 二.设置视频码率的必要性 在网络视频应用中,视频质量和网络带宽占用是相矛盾的.通常情况 ...

  3. Gym 100801B Black and White(构造)

    题意:给定X,Y,分别表示由'.'和'@'组成的连通块的个数. 思路:假如X<Y,我们用两部分来构造这个结果,第一部分由一个'.'连通块和Y-(X-1)割'@'连通块组成,第二个部分由X-1个' ...

  4. 【转】Lucas定理 & 逆元学习小结

    (From:离殇灬孤狼) 这个Lucas定理是解决组合数的时候用的,当然是比较大的组合数了.比如C(1000000,50000)% mod,这个mod肯定是要取的,要不算出来真的是天文数字了. 对于一 ...

  5. BZOJ2563阿狸和桃子的游戏

    2563: 阿狸和桃子的游戏 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 952  Solved: 682[Submit][Status][Discu ...

  6. (转)python set 用法

    转载自:http://hi.baidu.com/����_xu/blog/item/5b9650c513bd3f049d163d8b .html python的set和其他语言类似, 是一个 基本功能 ...

  7. myeclipse保存时弹出Building workspace

    最近做项目,每次保存修改的东西.myeclipse都会building workspace(重新编译)一下.并且那 building的速度真不够慢的啊. 严重影响编程速度. 在网上也发现遇到此问题的很 ...

  8. 【转载】ruby 中数组函数示例(1)(转)

    函数名称 说明 示例 &      数组与,返回两数组的交集 [1,2] & [2,3] =>[2]   * 复制数组n次 [1,2]*2       => [1,2,1, ...

  9. centos6 搭建IPSEC

    http://www.maxwhale.com/how-to-install-l2tp-vpn-on-centos/ http://blog.earth-works.com/2013/02/22/ho ...

  10. 关于Android进程的启动和消亡

    在打开一个应用程序的时候,packagemanager会根据manifest文件去查找有没有相应的进程已启动,若果没有启动,那么就启动一个新的进程 进程退出有两种方式,用finish结束主activi ...