iT邦幫忙

0

[6.1810] 環境設置 ( QEMU 與 toolchain )

  • 分享至 

  • xImage
  •  

系列文章 : [6.1810] 跟著 MIT 6.1810 學習基礎作業系統觀念

我使用的作業系統是 Ubuntu,所以這邊的 command 不確定在其他的作業系統能不能成功的被運行。

這一篇筆記有幾個目標

  • 編譯 QEMU
  • 安裝 RISC-V 的 toolchain
    • riscv64-unknown-elf-gcc
    • riscv64-unknown-linux-gnu-gcc
  • 編譯 xv6
  • 能在 QEMU 上運行 xv6
  • 能使用 gdb 對 xv6 進行 debug


設定環境

mkdir xv6-riscv
export WORK_SPACE=$PWD/xv6-riscv

編譯 QEMU

cd ${WORK_SPACE}

git clone --recurse-submodules git@github.com:qemu/qemu.git

cd qemu

# 用 stable-7.2 發現 slirp 會使用 deprecated 的 function,導致 build failed
git checkout stable-10.0

./configure --enable-debug --enable-plugins --prefix=/opt/install/path  --target-list=riscv32-linux-user,riscv32-softmmu,riscv64-linux-user,riscv64-softmmu

make -j16

安裝 RISC-V 的 toolchain

cd ${WORK_SPACE}

# gdb
sudo apt-get install gdb-multiarch

mkdir toolchain
cd toolchain

# get riscv64-unknown-elf-*
wget https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2026.02.13/riscv64-elf-ubuntu-24.04-gcc.tar.xz
tar Jxvf riscv64-elf-ubuntu-24.04-gcc.tar.xz

# get riscv64-unknown-linux-gnu-*
wget https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2026.02.13/riscv64-glibc-ubuntu-24.04-gcc.tar.xz
tar Jxvf riscv64-glibc-ubuntu-24.04-gcc.tar.xz

編譯 xv6,並在 QEMU 上運行 xv6

cd ${WORK_SPACE}
export PATH=$PWD/toolchain/riscv/bin/:$PATH
export PATH=$PWD/qemu/build/:$PATH

make qemu

假如我們開機成功的話,會顯示

xv6 kernel is booting

hart 2 starting
hart 1 starting
init: starting sh
$ 

想要離開模擬的話,可以 ctrl-a + x
ctrl 跟 a 一起按,放開之後迅速按 x

嘗試使用 gdb 去 debug xv6

# 開啟 QEMU,並運行 xv6
qemu-system-riscv64 -machine virt -bios none -kernel kernel/kernel -m 128M -smp 3 -nographic -global virtio-mmio.force-legacy=false -drive file=fs.i
mg,if=none,format=raw,id=x0 -device virtio-blk-device,drive=x0,bus=virtio-mmio-bus.0
 -s -S

# 開啟 gdb, 並與 QEMU 連線
gdb-multiarch ./kernel/kernel
(gdb) target remote localhost:1234

圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言