xv6 macOS 运行环境
前言
oh,技术真的浮躁,也真的没用~~
来看个有意思的例子:
fastjson2 FASTJSON2是FASTJSON项目的重要升级,目标是为
下一个十年
提供一个高性能的JSON库
第一时间,我就笑喷了!
先不说 fastjson 漏洞百出,就算 fastjson2 真的很优秀,也没必要···这样吧···国家也才五年一个计划···
这体现出啥呢?会吹才会赢!
不会吹怎么办?不怎么办,躺平!
老实干活,研究点自己喜欢的东西,也不需要研究出啥,就当取悦自己,还有就是锻炼身体啊!同志们!
或者可以选择润出国去,可是万一老外也在卷···
所以!再次盯上了 xv6,学习一下操作系统吧!
环境准备
我的是 macOS 12.4 版本
指引文档是 https://pdos.csail.mit.edu/6.828/2020/tools.html
1.安装 Xcode developer tools 和 Homebrew
这个因为之前已经安装了,如果没有安装,按照文档执行相应命令应该没问题
2.安装 risc-v compile toolchain
一开始害怕版本问题,去 git clone 了对应的仓库,但是图中有一个子 module 一直 pull 不下来,放弃。
使用文档中的命令:
$ brew tap riscv/riscv
$ brew install riscv-tools
等待比较久,最终我这边目前安装的版本是 11.1.0,后续似乎没有什么版本兼容问题,gdb 也可以启动
3.安装 qemu 5.1.0 并手动编译
这个踩了一个坑,通过 brew install qemu 安装的是一个高版本 qemu
这个版本的 qemu 在运行 xv6 时,会卡主不动!!!
最终去官网下载了一个 5.1.0 版本,手动编译即可!
qemu 各版本源码地址:https://download.qemu.org/
不得不说这个东西的作者,同时也是 QuickJS 和 FFmpeg 的作者,Fabrice Bellard,我只能说天才就是天才,热爱就是热爱!一个人可以顶100个人!
感觉他做的东西,才叫做技术
吹捧完毕
4.下载 xv6 源码
https://pdos.csail.mit.edu/6.828/2020/tools.html
可以从这里的 Labs tab 中跟着学习下载,同时 xv6 tab 下也有一个理论知识的 pdf
比如,进入 Lab: Xv6 and Unix utilities
$ git clone git://g.csail.mit.edu/xv6-labs-2020
Cloning into 'xv6-labs-2020'...
...
$ cd xv6-labs-2020
$ git checkout util
Branch 'util' set up to track remote branch 'util' from 'origin'.
Switched to a new branch 'util'
记得切分支之后运行
make qemu
最终输出一长串 log 后,出现 init: starting sh,那么就 OK 了!
5.如何 Debug
打开两个 terminal,都进入 xv6 源码目录
其中一个 terminal 输入
make qemu-gdb
查看输出,会有一个端口号输出,如 tcp::25501
在另一个 terminal 输入
riscv64-unknown-elf-gdb kernel/kernel # 表示调试某个可执行文件
之后会有一堆输出,进入 gdb 调试,terminal 开头也会有 (gdb) 字样,这时输入,就可以开始调试了!
target remote localhost:25501
具体的 gdb 相关命令,我也不是很熟
可以输入
b exec # 表示的是在 exec 出打断点,b = break
之后输入
c # continue,就是运行到断点出
相应的第一个 terminal 也会运行到对应断点位置,有对应的输出!
小功告成!