【参考】环境部署 - rCore-Tutorial-deploy - GitBook :
https://rcore-os.github.io/rCore-Tutorial-deploy/docs/pre-lab/env.html
【参考】实验环境配置 — rCore-Tutorial-Book-v3 0.1 文档 :
https://rcore-os.github.io/rCore-Tutorial-Book-v3/chapter0/5setup-devel-env.html
【参考】qemu/qemu: Official QEMU mirror : https://github.com/qemu/qemu
测试环境:
腾讯云 cvm.S5.SMALL2(中国-上海) Ubuntu Server 18.04.1 LTS 64位;
阿里云 ecs.t6-c2m1.large(印度尼西亚-雅加达)Ubuntu Server 20.04.1 LTS 64位;
WSL 2 Ubuntu 20.04 LTS(本地-境内)
使用体验
*ubuntu 软件源仓库,rust 仓库 云服务器使用自家镜像仓库,本地使用清华,中科大镜像。
腾讯云:github 丢包极其严重,控制台无法使用ctrl + c/v
快捷键(20210619)
阿里云:github 没有丢包(可能服务器海外的缘故),性能除外,整体使用流畅。
本地:github 偶尔丢包(不稳定),性能加持,解压,编译速度奇快,网络除外,整体使用舒适。
可参考:x64: WSL 2 环境安装 - 零一魔法 - CSDN: https://blog.csdn.net/m0_49270962/article/details/118057987
【参考】Getting started - Rust Programming Language :
https://www.rust-lang.org/learn/get-started
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
若官方脚本运行出现网络速度较慢的情况,可以选择 修改为 rustup 镜像地址:
(https://blog.csdn.net/m0_49270962/article/details/118058074)
根据提示,安装 nightly
版本。
Tips
在安装中选择 nightly complete
版本,会报错
error: failed to install component: 'rustc-docs-x86_64-unknown-linux-gnu', detected conflict: 'share/doc/rust/html/rustc'
解决方案
方法一:使用 nightly default
安装方案,
方法二:先使用 stable default
方案,再通过以下命令安装并切换到 nightly
版本
rustup install nightly
rustup default nightly
rustc --version
可参考:修改 cargo 软件包镜像地址 - 零一魔法 - CSDN博客: https://blog.csdn.net/m0_49270962/article/details/118058433
# 增加 RISC-V 三元组
rustup target add riscv64imac-unknown-none-elf
# rustup target add riscv64gc-unknown-none-elf
# 增加需要的 cargo-binutils
cargo install cargo-binutils --vers ~0.2
rustup component add llvm-tools-preview rust-src
Tips
# 报错
error: linker `cc` not found
|
= note: No such file or directory (os error 2)
error: aborting due to previous error
error: could not compile `memchr`
To learn more, run the command again with --verbose.
warning: build failed, waiting for other jobs to finish...
error: linker `cc` not found
|
= note: No such file or directory (os error 2)
...
error: aborting due to previous error
error: failed to compile `cargo-binutils v0.2.0`, intermediate artifacts can be found at `/tmp/cargo-installZT2MKV`
Caused by:
build failed
解决方案
# 手动安装 gcc
sudo apt install gcc
【参考】Running 64- and 32-bit RISC-V Linux on QEMU — RISC-V - Getting Started Guide :
https://risc-v-getting-started-guide.readthedocs.io/en/latest/linux-qemu.html#prerequisites
sudo apt install qemu
sudo apt update
sudo apt install autoconf automake autotools-dev curl \
libmpc-dev libmpfr-dev libgmp-dev gawk build-essential \
bison flex texinfo gperf libtool patchutils bc \
zlib1g-dev libexpat-dev pkg-config libglib2.0-dev \
libpixman-1-dev git tmux python3
Tips
# 报错
E: Unable to locate package libmpc-dev
E: Unable to locate package libmpfr-dev
E: Unable to locate package libgmp-dev
E: Package 'gawk' has no installation candidate
E: Package 'bison' has no installation candidate
E: Package 'flex' has no installation candidate
E: Package 'texinfo' has no installation candidate
E: Unable to locate package gperf
E: Unable to locate package patchutils
E: Package 'git' has no installation candidate
解决方案
# 更新软件包列表
sudo apt update
# 下载
wget https://download.qemu.org/qemu-5.0.0.tar.xz
# 解压
tar xvJf qemu-5.0.0.tar.xz
cd qemu-5.0.0
./configure --target-list=riscv64-softmmu,riscv64-linux-user
make -j$(nproc)
sudo make install
qemu-system-riscv64 --version
qemu-riscv64 --version
【参考】第二章:最小化内核 - 使用 Qemu 运行内核 - 《rCore 手册(rCore tutorial doc)》 - 书栈网 · BookStack :
https://www.bookstack.cn/read/rCore_tutorial_doc/1661c9c62f632357.md
【参考】rcore-os/rCore: Rust version of THU uCore OS. Linux compatible. :
https://github.com/rcore-os/rCore
git clone https://github.com/rcore-os/rCore-Tutorial-v3.git
cd rCore-Tutorial-v3
git checkout main
cd os
make run
Tips
# 报错
Could not allocate dynamic translator buffer
解决方案
# 允许模拟器过量使用内存
sudo sysctl vm.overcommit_memory=1