xv6 是 MIT 设计的一个教学型操纵系统。xv6 可在 Intel X86 框架上运行,为了方便,建议将 xv6 运行在 QEMU 虚拟机器上,本人的实验环境是 ubuntu 18.04 。

1. 安装系统

  1. 安装 QEMU 软件。

    sudo apt-get install qemu  # 安装软件
    man qemu-system-i386 # 查看使用说明
  2. 下载 xv6 ,本人学习的版本是基于 X86 框架的 xv6-rev11,如果安装了 git 可以直接拉取我的仓库主分支。

    sudo apt-get install git   # 安装 git 工具
    git clone https://github.com/professordeng/xv6-expansion.git # 拉取代码
    cd xv6-expansion # 进入目录
  3. 编译运行

    sudo apt-get install gcc   # gcc 负责编译
    make # 编译
    make qemu-nox # 运行

    运行上面的指令若没有出错就会进入 xv6 系统操作界面,显示信息如下:

    qemu-system-i386 -nographic -drive file=fs.img,index=1,media=disk,format=raw -drive file=xv6.img,index=0,media=disk,format=raw -smp 2 -m 512
    xv6...
    cpu1: starting 1
    cpu0: starting 0
    sb: size 1000 nblocks 941 ninodes 200 nlog 30 logstart 2 inodestart 32 bmap start 58
    init: starting sh

    其中 qemu-system-i386 就是模拟下的 X86 平台,-nographic 不需要图形设备(对服务器友好),-smp 是选择启动 CPU 的核数(2 核),-m 是指给此系统分配的内存大小。

  4. 使用 QEMU 调试功能

    按 ctrl + a,再按 c,进入 QEMU 调试功能,包括但不限于以下功能

    • 按 q 退出虚拟机器。
    • 输入 info registers 查看所有寄存器信息。
    • 按 ctrl + a,再按 c 又回到 xv6 系统。
    • 输入 info mem 显示映射的虚拟地址和权限。
    • 输入 info pg 显示当前页表结构。
  5. 补充

    xv6 也可以使用 make qemu 启动,此时会启动两个窗口。鼠标被捕捉后可以用 Alt + Ctrl 组合键解脱。

2. 简单使用系统

执行 make qemu-nox 进入 xv6 操作系统后,就可以使用系统了。xv6 实现了一小部分 Linux 系统上通用的命令,例如:

ls                        # 显示当前目录下的文件
cat README.md # 将 README.md 的内容打印到屏幕上
echo hello # 输出 hello 到屏幕上
cat README.md | grep qemu # 用管道连接两个命令
wc README.md # 对 README.md 的内容进行统计
rm wc # 删除 wc 文件

这是一些常见的命令,还有一些其他命令可用 ls 查看。

  • 拓展(可以跳过)

    通过 ctrl + p 查看进程信息(由 proc.c 文件中的 procdump() 内核函数实现)。可以看到 sleep 进程后面跟着一串数字,是调用栈中关于函数调用的地址。例如

    1 sleep init 80103e27 80103ec7 80104879 80105835 8010564f
    2 sleep sh 80103dec 801002ca 80100f9c 80104b62 80104879 80105835 8010564f

    打开另一个终端,利用 addr2line 工具,执行如下命令

    addr2line -e kernel 80103e27

    可以知道地址 0x80103e27 对应于 kernel 内核代码 proc.c 文件的第 445 行,显示信息如下:

    /home/ubuntu/xv6-expansion/proc.c:445

    查看 proc.c 文件的第 445 行可知,该行代码位于 sleep() 函数中。

2. 修改系统代码

接下来做个最简单的热身动作,打开 main.c 文件,将 cprintf() 函数打印的启动提示信息 cpu0: starting 0 修改成 cpu0: let 0 go,然后执行下面指令进入系统

make
make qemu-nox

你会发现系统提示信息已经改变,恭喜你,你开始动手修改 xv6 操作系统了。

xv6 操作系统的环境搭建的更多相关文章

  1. xv6实验环境搭建

    安装bochs 因为要运行的是xv6,所以不能直接使用 apt-get 直接获取软件.apt-get获取到的软件不支持SMP (Symmetric Multi-Processing).因此,需要下载源 ...

  2. 【MIT6.828】centos7下使用Qemu搭建xv6运行环境

    title:[MIT6.828]centos7下使用Qemu搭建xv6运行环境 date: "2020-05-05" [MIT6.828]centos7下搭建xv6运行环境 1. ...

  3. 1-web应用之LAMP源码环境搭建

    目录 一.LAMP环境的介绍     1.LAMP环境的重要性     2.LAMP组件介绍 二.Apache源码安装     1.下载Apache以及相关依赖包     2.安装Apache以及相关 ...

  4. Linux环境搭建-在虚拟机中安装Centos7.0

    最近在空闲时间学习Linux环境中各种服务的安装与配置,都属于入门级别的,这里把所有的学习过程记录下来,和大家一起分享. 我的电脑系统是win7,所以我需要在win7上安装一个虚拟机-VMware,然 ...

  5. Win7+Eclipse+Hadoop2.6.4开发环境搭建

    Hadoop开发环境搭建 感谢参考网站:http://www.cnblogs.com/huligong1234/p/4137133.html 一.软件准备 JDK:jdk-7u80-windows-x ...

  6. 【转】RHadoop实践系列之一:Hadoop环境搭建

    RHadoop实践系列之一:Hadoop环境搭建 RHadoop实践系列文章,包含了R语言与Hadoop结合进行海量数据分析.Hadoop主要用来存储海量数据,R语言完成MapReduce 算法,用来 ...

  7. Xamarin环境搭建

    Xamarin的环境搭建 Xamarin在osx下面的环境搭建包括开发者帐号申请,下载安装Xamarin以及Xcode,以及Xamarin Studio上编写第一个应用程序.Xamarin是一个跨平台 ...

  8. iOS开发教程之:iPhone开发环境搭建

    安装条件: 硬件:一台拥有支持虚拟技术的64位双核处理器和2GB以上内存的PC. 注意:运行MAC OS,需要电脑支持虚拟技术(VT),安装时,需要将VT启动,在BIOS中开启. 软件: Window ...

  9. linux内核学习之一:环境搭建--安装Debian7.3

    本系列文章假设读者已对linux有一定的了解,其实学习linux内核不需要有很深的关于linux的知识,只需要了解以下内容:linux基础知识及基本shell命令:现代操作系统的基本概念:C语言和gc ...

随机推荐

  1. 构建密钥验证ssh

    1.需要两个虚拟机,每一个创建一个用户登录到用户根下   2.每个用户都要创建密钥对   3.把两个用户的公用密钥用ssh-copy-id -i 命令将公用的密钥复制到另一个用户中   4.在客户端开 ...

  2. js 实现淘宝无缝轮播图效果,可更改配置参数 带完整版解析代码[slider.js]

    前言:         本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽.         本篇文章为您分析一下原生JS写淘宝无缝轮播图效果 需求分析: ...

  3. 痞子衡嵌入式:揭秘i.MXRT1170 eFuse空间访问可靠性的保护策略(冗余与ECC)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MXRT1170的eFuse空间访问可靠性保护策略. 关于i.MXRT系列的eFuse/OTP,痞子衡之前在介绍Boot时写过 ...

  4. 源码阅读:Masonry(三)—— MASViewAttribute

    该文章阅读的 Masonry 的版本为 1.1.0. 这个类我们可以叫它"约束视图及其属性类",它封装了设置约束的视图和其设置约束的属性,也就是 view1 和 attr1,或是 ...

  5. python selenium(环境搭建)

    一:自动化了解知识 工具安装 什么样的项目适合做自动化? 自动化测试一般在什么阶段开始实施? 你们公司自动化的脚本谁来维护?如何维护? 自动化用例覆盖率是多少? 自动化的原理 通过 webdriver ...

  6. Fiddler手机端抓包环境设置与过滤(二)

    经过了上一篇,我们已经配好了PC与手机端的抓包环境可以实现抓包.传送机:https://www.cnblogs.com/jc-home/p/11668712.html 但是如果不经过筛选的话抓到的内容 ...

  7. win10 安装Maven

    1.将apache-maven-3.0.5-bin.zip解压到指定目录(最好不要有中文字符) 2.配MAVEN_HOME 3.验证是否安装成功  代开cmd窗口  mvn -v 4.修改本地仓库位置 ...

  8. CentOS安装boost

    安装其实很简单的: tar zxvf boost_1_59_0.tar.gz cd boost_1_59_0 ./bootstrap.sh --prefix=/usr/local/boost ./b2 ...

  9. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之十一(四十七)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  10. 如何选择IO调度器

    概述 由于对multi-quque的IO调度算法不太熟悉,为了避免误人子弟,本文暂时只会介绍如何选择single-queue的IO调度算法.等将来对multi-queue有充分认识后再补充. 如果不清 ...