想写一个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. "_OBJC_CLASS_$_ALAssetsLibrary", referenced from:和clang: error: linker command failed with exit code 1 (use -v to see invocation)错误

    在项目中使用MWPhotoBrowser未导入ALAssetsLibrary类库时会导致编译时出现异常: "_OBJC_CLASS_$_ALAssetsLibrary", refe ...

  2. django基础PROJECT APP View template

    project 和 app 的区别就是一个是配置另一个是代码: 一个project包含很多个Django app以及对它们的配置. 一个project的作用是提供配置文件,比方说哪里定义数据库连接信息 ...

  3. ComboBox设置Text属性

    WPF  ComboBox 控件设置 Text属性时 必须将 IsEditable="true" 才能显示

  4. Ubuntu 安装配置Jenkins

    一.安装jdk 1. sudo add-apt-repository ppa:webupd8team/java 添加ppa源 如果提示找不到该命令则需要安装: sudo apt-get install ...

  5. numpy.ones(shape, dtype=None, order='C')

    Return a new array of given shape and type, filled with ones. Parameters: shape : int or sequence of ...

  6. Eclipse调试Java程序技巧

    主要步骤.Debug As"->"Java Application".双击设置断点,F5是跳进,F6是执行下一步,F7是跳出 在看这篇文章前,我推荐你看一下Ecli ...

  7. express搭建elasticsearch

    1.首先,我们创建一个Express应用程序!我将使用express.js生成器. npm install -g express-generator express ./autocompleter c ...

  8. C# 开发网页的打印版

    在项目中,有一个需求时是需要打印产品页面.但是打印出来的版本和网页上的版本不太一致,有些图片不需要,网页上以tab选项卡显示的内容,都需要在打印页面中看到..等等 CSS针对这种需求,引入了一个@me ...

  9. 如何解决Failed to start component [StandardEngine[Catalina].StandardHost[127.0.0.1].StandardContext[]]问题

    调试web项目,项目部署到tomcat,报如下错误: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleExc ...

  10. Torando 入门

    1. 前言 Tornado 是使用 Python 编写的一个强大的.可拓展性的 Web 服务器/框架.与其他主流 Web 服务器框架有着明显区别:Tornado 支持异步非阻塞框架.同时它处理速度非常 ...