• MIT-6.828-JOS-环境搭建


    MIT 6.828是操作系统中最经典的一门课程。完成所有的lab就相当于完成了一个迷你的操作系统。我跟的是2018年的课程,课程首页在6.828课程官网。当然所有资料都是英文的,所以难度也不低,这里推荐几本非常有用的参考书:《x86汇编语言-从实模式到保护模式》,《程序员的自我修养-链接、装载与库》,《深入理解计算机系统》,很多知识在这些书中都有提到,参考着看会有奇效。

    概述

    本文主要讲解实验前的环境搭建,主要分为两个部分,一个是x86模拟器QEMU的安装,另一个是编译工具链。参考资料:官方文档

    实验环境

    我的机子装的win10的系统,现在win10支持WSL,在windows上也能享受到原生linux一样的体验。我一般用Xshell登陆本地WSL,体验很不错。

    前期准备

    首先从官网clone实验的框架代码到本地:git clone https://pdos.csail.mit.edu/6.828/2018/jos.git lab

    编译工具链

    编译工具链是一个工具集包括c编译器,汇编编译器,连接器。在命令行下执行gcc -m32 -print-libgcc-file-name,如果输出/usr/lib/gcc/i486-linux-gnu/version/libgcc.a 或 /usr/lib/gcc/x86_64-linux-gnu/version/32/libgcc.a就说明没有问题了。否则执行sudo apt-get install -y build-essential gdb进行安装(Ubuntu系统下)。在64位的机器上还需要安装32位支持库sudo apt-get install gcc-multilib否则后面make的时候可能会出现"__udivdi3 not found"的情况。

    QEMU模拟器安装

    QEMU是一款模拟器,按照官方文档的提示我们需要从源码安装针对课程定制过的QEMU。步骤如下:

    1. clone源码:git clone https://github.com/mit-pdos/6.828-qemu.git qemu。这里最好还是老老实实从官方文档提供的地址下载,虽然有点慢。但是这门课程每年都可能修改qemu。
    2. 执行./configure --disable-kvm --target-list="i386-softmmu x86_64-softmmu"。这一步可能会报错:
      1. 问题1:
        1. 出现:ERROR: Python not found. Use --python=/path/to/python
        2. 解决:添加--python=python3,还是不行提示Note that Python 3 or later is not yet supported。安装python2.7,然后使用--python=python2.7选项。
      2. 问题2:
        1. 出现:ERROR: pkg-config binary 'pkg-config' not found
        2. 解决:执行apt-get install -y pkg-config
      3. 问题3:
        1. 出现:ERROR: zlib check failed. Make sure to have the zlib libs and headers installed.
        2. 解决:执行sudo apt-get install zlib1g-dev
      4. 问题4:
        1. 出现:ERROR: glib-2.12 gthread-2.0 is required to compile QEMU
        2. 解决:sudo apt-get install libglib2.0-dev
      5. 问题5:
        1. 出现:ERROR: pixman >= 0.21.8 not present.
        2. 解决:sudo apt-get install libpixman-1-dev
      6. 问题6:
        1. 出现:vl.c: In function ‘main’: vl.c:2778:5: error: ‘g_mem_set_vtable’ is deprecated [-Werror=deprecated-declarations] g_mem_set_vtable(&mem_trace); ^ In file included from /usr/include/glib-2.0/glib/glist.h:32:0, from /usr/include/glib-2.0/glib/ghash.h:33, from /usr/include/glib-2.0/glib.h:50, from vl.c:59: /usr/include/glib-2.0/glib/gmem.h:357:7: note: declared here void g_mem_set_vtable (GMemVTable *vtable); ^ cc1: all warnings being treated as errors rules.mak:57: recipe for target 'vl.o' failed make: *** [vl.o] Error 1
        2. 解决:QEMU源码根目录下的Makefile文件最后加上一行 QEMU_CFLAGS+=-w
    3. 执行make && make install。至此QEMU安装完毕。

    编译执行

    在lab源码根目录下执行make,如果看到

    就说明编译成功了。然后执行make qume,看到如下信息就说明环境搭建好了。

  • 相关阅读:
    IoC就是IoC,不是什么技术,与GoF一样,是一种 设计模式。
    控制反转是Spring框架的核心。
    一种是CI(Constructor Injection)构造方法注入,另一种是SI(Set Injection) set 注入
    IOC 的理解与解释
    java 单例模式5种写法
    AOP(Aspect Oriented Programming),即面向切面编程
    AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题
    ioc和aop的区别?
    JAVA设计模式之单例模式
    详解JNDI的lookup资源引用 java:/comp/env
  • 原文地址:https://www.cnblogs.com/gatsby123/p/9746193.html
Copyright © 2020-2023  润新知