惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
量子位
D
DataBreaches.Net
博客园 - 司徒正美
J
Java Code Geeks
博客园 - 【当耐特】
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
aimingoo的专栏
aimingoo的专栏
B
Blog
The Cloudflare Blog
D
Docker
I
InfoQ
爱范儿
爱范儿
MongoDB | Blog
MongoDB | Blog
腾讯CDC
月光博客
月光博客
Hugging Face - Blog
Hugging Face - Blog
Microsoft Azure Blog
Microsoft Azure Blog
Vercel News
Vercel News
阮一峰的网络日志
阮一峰的网络日志
小众软件
小众软件
S
SegmentFault 最新的问题
GbyAI
GbyAI
有赞技术团队
有赞技术团队

博客园 - 木木ちゃん

Lab 1: Utilities Chapter 1: Operating system interfaces 操作系统接口 线性注意力机制学习笔记 关于二分查找的简单思考 DWDP: 在NVL72上的高性能分布式权重数据并行 NCCL EP 论文解读 Megatron-LM-Moe 论文阅读笔记 (ISCA 2025) Chimera: Communication Fusion for Hybrid Parallelism in Large Language Models (Sigcomm'25) Stellar: 阿里新一代云AI RDMA网络 deepseek-v3.2-exp: 节前发版之打工人的悲鸣 关于Leetcode 812题的简单思考 减少KVCache tuple hash: 尝试在set/map中使用tuple google_test Linux相关配置+双系统安装记录 SkipList Conga:分布式拥塞感知与负载均衡数据中心(Sigcomm'14) Megatron-LM Efficient AI training system MiniOB Lab4: join tables & group by MiniOB Lab3 布隆过滤器:原理与leveldb中的实现 第三章 SQL入门
Lab 0: 准备工作
木木ちゃん · 2026-09-03 · via 博客园 - 木木ちゃん

0 准备工作

课程主页1
本实验将会在ubuntu 26.04上进行。

安装

sudo apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu qemu-system-riscv gcc-riscv64-unknown-elf

检验

$ qemu-system-riscv64 --version
QEMU emulator version 10.2.1 (Debian 1:10.2.1+ds-1ubuntu3.2)
Copyright (c) 2003-2025 Fabrice Bellard and the QEMU Project developers

$ riscv64-linux-gnu-gcc --version
riscv64-linux-gnu-gcc (Ubuntu 15.2.0-16ubuntu1) 15.2.0
Copyright (C) 2025 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

# 裸机编译器。
$ riscv64-unknown-elf-gcc --version
riscv64-unknown-elf-gcc (14.2.0+19) 14.2.0
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

准备课程文件

git clone git://g.csail.mit.edu/xv6-labs-2025
cd xv6-labs-2025
make qemu
# 进入到shell界面,通过ctrl-a + x 退出。

debug 技巧

首先我们需要将课程提供的 gdbinit 文件放入到safe path中安全加载。将下面的内容写入 ~/.config/gdb/gdbinit

add-auto-load-safe-path /path/to/xv6-labs-2025/.gdbinit

采用tmux进行分屏。在一边的屏幕上执行 make qemu-gdb。编译如果成功会出现:

*** Now run 'gdb' in another window.
qemu-system-riscv64 -machine virt -bios none -kernel kernel/kernel -m 128M -smp 3 -nographic -global virtio-mmio.force-legacy=false -drive file=fs.img,if=none,format=raw,id=x0 -device virtio-blk-device,drive=x0,bus=virtio-mmio-bus.0 -S -gdb tcp::26000

在另一个窗口,我们执行 gdb-multiarch。然后我们执行:

target remote localhost:26000

# 图形化界面debug。
tui enable    

直接continue,直到显示出来shell的 $ 后输入ctrl + c,线程会自己挂起。我们可以看看有什么。

img

这时候我们就可以用 file user/_xxx ,tab来寻找自己需要加载的ELF文件即可。

img