Mit6.828|Lab1.1 搭建实验环境

文章目录

      • 前言
      • 介绍
      • 新鲜的ubuntu
      • 安装gcc+gdb
      • 安装qemu
      • 下载lab,运行qmeu

前言

6.828是mit(麻省理工)的操作系统课,一步一步教你搭建一个os,完成了程序员的愿望,博主今年大二,打算跟着这个神级os课程实现一个os,并且用博客记录下来。

环境: win10 + ubuntu 20.4双系统

介绍

这个实验要做的是:在虚拟机QEMU上写我们的操作系统,并用在qemu上用gdb调试我们的代码。 所以我们要准备的qemu和gcc+gdb,这个在官网上也有介绍,要自己读。

ps: 我们要写的操作系统,官方命名成jos,而xv6,其实就是一个类unix的操作系统 ,

jos就是在xv6基础上改写的,所以当我们不会实现的时候,可以去参考xv6的源码

新鲜的ubuntu

刚装了两个月,连git都没有,上来还得安装git
6.828需要用git下载一些源码,如果你不会使用git,官方还很贴心的给出了教程。

友情提示:一定要去官网看一看!
在这里还以个人理解写以下官网视图:
上面的导航中最重要的是Labs 里面包含了6个实验的内容和工具集和引导,贯穿了整个实验
Mit6.828|Lab1.1 搭建实验环境_第1张图片

安装gcc+gdb

官方应该是提供了一个叫做雅典娜athena的服务器方便学生下载,但我们并不是mit的学生呀!所以要自己下载gdb和qemu

  1. 在命令行中输入:
    sudo apt-get install build-essential
    build-essential包含了gcc和gdb是c语言的开发包,博主安装的过程中,经历了需要换源才能完整安装成功,所以万事开头难,不要畏惧,加油!

    参考:toolsUsed

装完之后,我们再创建一个文件夹,用来放qemu虚拟机和lab的源码
mkdir 6.828

安装qemu

仔细阅读QEMU部分你会发现原来官方提供了qemu的补丁版本,我们直接安装mit提供的版本

切换到6.828下,输入:

git clone https://github.com/geofft/qemu.git -b 6.828-1.7.0 qemu 

根据文档描述: 还要下载几个包

sudo apt install libsdl1.2-dev
sudo apt install libtool-bin
sudo apt install libglib2.0-dev
sudo apt install libz-dev
sudo apt install libpixman-1-dev

3. 下载完之后继续输入:

Configure the source code (optional arguments are shown in square brackets; replace PFX with a path of your choice)
./configure --disable-kvm --disable-werror [--prefix=PFX] [--target-list="i386-softmmu x86_64-softmmu"]

./configure 是一个用来配置的脚本,根据意思知道方括号内的可选选项,其中PFX要替换成你系统下的一个路径:

./configure --disable-kvm --disable-werror --target-list="i386-softmmu x86_64-softmmu" --python=python2.7 --prefix=/home/mia/Documents/qemu

为什么要加上python=python2.7呢,因为后面会报错,貌似它只能识别python2

做完这步后,你会发现上面你配置的路径下会多出下面五个文件夹
在这里插入图片描述
4. make & make install

其中如果报错的解决方法也有博主写了:报错解决办法)

下载lab,运行qmeu

# git clone https://pdos.csail.mit.edu/6.828/2017/jos.git

执行make
qemu 不是一个 executable file
解决方法: 打开lab下conf文件夹的env. mk文件, 修改qemu:
Mit6.828|Lab1.1 搭建实验环境_第2张图片
其中qemu就是你在 ./configureprefix的路径,如果没有,默认是usr/local

如果出现

+ as kern/entry.S
+ cc kern/entrypgdir.c
+ cc kern/init.c
+ cc kern/console.c
+ cc kern/monitor.c
+ cc kern/printf.c
+ cc kern/kdebug.c
+ cc lib/printfmt.c
+ cc lib/readline.c
+ cc lib/string.c
+ ld obj/kern/kernel
ld: warning: section `.bss' type changed to PROGBITS
+ as boot/boot.S
+ cc -Os boot/main.c
+ ld boot/boot
boot block is 390 bytes (max 510)
+ mk obj/kern/kernel.img

就说明编译成功了

再执行 make qemu
报错: permission denied,权限不够
这就是博主卡了好几天的原因!而且目前中文网站都没有解释! 于是只能千辛万苦爬出去… 原因是:其实上面在conf文件中对qemu的配置是错的!它需要的是一个文件而不是目录,即qemu安装目录下bin中的qemu-i386 (建议去安装目录看一看,其实上图也解释了,这里不多叙述)

终于成功:
Mit6.828|Lab1.1 搭建实验环境_第3张图片

到这里:恭喜你!你脱离苦海,可以开始了你的os之旅了(更苦的海了!)

你可能感兴趣的:(6.828,操作系统,c)