百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

XV6 操作系统入门系列-01-环境配置

liuian 2025-08-05 19:31 2 浏览

xv6 是一个用于教育目的的简单 Unix 操作系统,基于 Unix 第六版(Version 6, V6)开发,运行在 RISC-V 处理器上。它由麻省理工学院(MIT)开发,用于操作系统课程(Operating System Engineering[1])教学,帮助学生理解操作系统的基本概念和实现原理。

最近我突发奇想,想再研究一遍操作系统 xv6 。当即打开电脑,根据官方教程一通安装,成功启动 xv6 ,过程非常顺利!最大的感受就是,现在安装 xv6 依赖的软件真是太简单了,真是学习操作系统最好的时候。

学习过程往往需要一个梯子,xv6 是最好的学习操作系统的梯子,毫无疑问。我希望我的这个系列文章,也成为一个好的梯子,给想学习操作系统的同学足够的帮助。

第一步-安装依赖

在早些年,要想运行 xv6 可太难了,经常会碰到各种各样的问题。但是现在按照官方的安装教程[2],非常顺利。 如果我说请点开另外的链接来查找安装指令,可太令人恼火了。所以我汇总在这里:

  • o Linux-Ubuntu24 及以后的版本
sudo apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu
  • o Windows-使用 WSL2
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu
  • o MacOS
# 安装MacOS上的XCode开发工具
xcode-select --install
# 安装Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 安装riscv编译工具链
brew tap riscv/riscv
brew install riscv-tools
# 安装CPU模拟器平台QEMU,模拟RISC-V处理器。
brew install qemu

第二步-下载源代码

下载源码需要用到 git 工具,源代码分为三个部分

  • o xv6 的源代码 git clone https://github.com/mit-pdos/xv6-riscv.git
  • o xv6 的教材 git clone https://github.com/mit-pdos/xv6-riscv-book.git
  • o xv6 的实验代码 git clone git://g.csail.mit.edu/xv6-labs-2024

我们进入xv6-riscv 文件夹,输入 make qemu ,如果出现如下画面,说明我们的环境搭建成功了,并且成功运行了 xv6 操作系统。

官方没有说清楚的内容

1. 如何退出 xv6

这是很多初学者非常容易遇到的不值得卡住的困难:如何退出 xv6。资料会告诉我们按下 Ctrl + a x。但是注意了,这存在重大歧义。 实际上,这个快捷键对应三个步骤:

  • o 同时按下 Ctrla 键;
  • o 同时放松 Ctrla 键;
  • o 单独按下 x 键。 如果这个提示对你有帮助,就请给我点个赞吧。

2. 如何配置官方推荐的 Debug 工具——GDB

第一步,如果你使用的是 Linux 或者 Window,这里没有什么问题。但是如果你使用的是 MacOS,你会遇到没有 GDB 的情况,请不要慌张,我们只需要安装一下它:

brew install riscv64-elf-gdb

第二步,我们配置 GDB,让它能够自动读取 xv6 项目文件夹下的 GDB 的配置文件。

mkdir -p ~/.config/gdb # 在用户配置目录下创建gdb文件夹
touch ~/.config/gdb/gdbinit # 创建用户个人的gdb全局配置文件
echo 'set auto-load safe-path /' > ~/.config/gdb/gdbinit # 允许GDB自动加载配置文件

第三步,在 xv6-riscv 文件夹下,调用 make qemu-gdb 来编译可 Debug 的 xv6 操作系统镜像。我们可以看到,make 同时生成了镜像文件 fs.img 和 针对这个项目 gdb 配置文件 .gdbinit

编译

第四步,在保持第三步的 terminal 不变的情况下,打开一个新的 terminal,调用 gdb 来进入 debug 界面。

  • o Linux 或者 Windows:gdb-multiarch
  • o MacOS: riscv64-elf-gdb

GDB调试

小结

我们提炼总结一下上面的内容。我们一共安装了四个内容,它们的依赖关系是这样的:首先下载 XV6 源码,然后调用 Risc-V 编译工具编译成二进制文件,然后使用 Qemu 模拟器运行二进制文件,最后调用 GDB 调试工具调试 Qemu。

工具依赖关系

引用链接

[1] Operating System Engineering: https://pdos.csail.mit.edu/6.828/2024/index.html
[2] 官方的安装教程:
https://pdos.csail.mit.edu/6.828/2024/tools.html

相关推荐

苹果ios打包的ipa应用APP怎么不能安装?多种安装不上的原因排查

亲爱的同学们,非常高兴能和同学们一起探讨关于苹果应用安装失败的问题。作为一个开发者,我们很可能会遇到这样的情况:开发好一个应用,兴致勃勃地想把它运行到手机上去测试,结果发现安装失败了。而此时,定位问题...

Flutter 系列 - 环境搭建

#头条创作挑战赛#本文同步本人掘金平台的文章:https://juejin.cn/post/7002401225270362143Flutter作为火热的跨端工具包,在github上超过12...

XV6 操作系统入门系列-01-环境配置

xv6是一个用于教育目的的简单Unix操作系统,基于Unix第六版(Version6,V6)开发,运行在RISC-V处理器上。它由麻省理工学院(MIT)开发,用于操作系统课程(Ope...

速递|已获2000万美元融资,苹果前高管携Unblocked挑战代码理解“黑箱难题”

图片来源:Unblocked每位开发者都有自己独特的编码风格。尽管公司制定了最佳实践并编写了文档,开发者要理解他人的代码库仍非易事。为解决这一问题,DennisPilarinos开发了一款名为U...

C语言之编译器集合

C语言有多种不同的编译器,以下是常见的编译工具及其特点:一、主流C语言编译器1.GCC(GNUCompilerCollection)特点:开源、跨平台,支持多种语言(C、C++、Fortran...

Xamarin for Visual Studio v4.0正式发布

XamarinforVisualStudio让开发者可以在Windows上用VisualStudio开发原生iOS,Android和Windows应用程序。XamarinforVis...

macOS/iOS开发必备:Dylib文件的深度解析与安全防护

在macOS和iOS开发中,dylib文件是开发者们不可或缺的工具。它不仅能够实现代码复用、减少内存占用,还能支持程序的模块化更新。然而,随着技术的发展,dylib文件的安全性也面临着诸多挑战,例如被...

微软Islandwood项目启动:iOS应用轻松移植至Win10

IT之家讯5月1日消息,在昨天的Build2015开发者大会上,微软详细阐述了iOS应用程序移植到Win10平台的更多细节信息。现在,微软正式开启了ProjectIslandwood,该项目旨在搭...

macOS26中被库克删掉的启动台,有开源的项目实现了

这是一个第三方实现的,只实现了最基本的功能,包括:启动台应用程序文件夹打开应用删除应用为什么要做这个macOS26版本中,自带的启动台功能被库克老小子删除了,导致使用起来很不习惯。所以就自己做了...

环境配置劝退?Rust + Slint开发环境搭建全攻略,手把手教你避坑!

各位对科技充满好奇,又跃跃欲试想亲手写代码的朋友们!是不是每次下定决心要学习一门新语言、尝试一个新框架时,都会被“环境配置”这第一道坎儿给劝退?下载一堆软件,安装各种工具,然后面对一堆看不懂的错误提示...

MyEclipse移动开发教程:构建可分发的PhoneGap应用程序

本教程将用PhoneGap远程构建服务(remotebuildservices)去构建一个PhoneGap应用程序。当然,你也可以在本地构建PhoneGap应用程序。需要多说一句的是,Phone...

Android和iOS应用可以快速移植到Win10

|责编:刘菲菲在今天凌晨的Build2015开发者大会上,微软宣布所有Android和iOS应用,都可以通过简单的修改代码,直接生成适用于Win10的应用。也就是说,开发者们不需要学习更多内容,就...

Injection for Xcode:成吨的提高开发效率

本文为投稿文章,作者:@没故事的卓同学直接放demo演示动图:我很久以前就希望有这么一种功能,直接修改某行代码,F5一下就能刷新这个实例,而不用重写build整个项目。靠夭,我不是在说前端!没想居然有...

抖音品质建设 - iOS启动优化《原理篇》

前言启动是App给用户的第一印象,启动越慢用户流失的概率就越高,良好的启动速度是用户体验不可缺少的一环。启动优化涉及到的知识点非常多面也很广,一篇文章难以包含全部,所以拆分成两部分:原理和实践。本...

蓝鸥郑州iOS培训老师分享的iOS支付知识

最近常用朋友问iOS支付方面的问题,郑州iOS培训老师就和大家分享一些关于iOS支付方面的知识,希望对大家有所帮助。支付宝iOS使用支付宝进行一个完整的支付功能,大致有以下步骤:1>先与支付宝...