WSL2 WSL2配置 1.勾选适用于Linux的Windows子系统 后重启
打开“控制面板 ”->点击”程序 “->在“程序和功能 ”中->点击“启用或关闭 Windows 功能 ”-> 选中“适用于 Linux 的 Windows 子系统 ”->选择”立即重新启动 “;
2.启用虚拟机功能
安装 WSL 2 之前,必须启用“虚拟机平台”可选功能。 计算机需要虚拟化功能 才能使用此功能。
以管理员身份打开 PowerShell 并运行:
点击“开始”->搜索“Power shell”->右键“Power shell”->已管理员方式运行
1 > dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
此处最好重启一下不然后续启动arch Linux时会报错error: 0x8004032d(null)
如何没有安装 PowerShell 建议直接从 Microsoft Store 中搜索并下载
3.下载Linux内核更新包
从官网 下载最新的Linux内核更新包并安装 ;
管理员 身份打开PowerShell:
1 2 3 > wsl.exe --update 正在检查更新。 已安装最新版本的适用于 Linux 的 Windows 子系统。
这里如果安装进度一直为0.0%可以试下开启科学上网;
4.将WSL2设置为默认版本
打开 PowerShell运行以下命令,将 WSL 2 设置为默认版本:
1 2 3 > wsl --set-default-version 2 有关与 WSL 2 关键区别的信息,请访问 https://aka.ms/wsl2 操作成功完成。
5.安装所选的Linux分发
打开 Microsoft Store ,并选择你偏好的 Linux 分发版。(我这里使用的是arch Linux)
首次启动新安装的 Linux 分发版时,将打开一个控制台窗口,系统会要求你等待一分钟或两分钟,以便文件解压缩并存储到电脑上。
然后,需要为新的 Linux 分发版创建用户帐户和密码 。
1 2 3 4 5 Installing,this may take a few minutes... Iainstallation successful! Please create a default UNIX user account, The username does not needor to match your windows username. For more information visit: https://aka.ms/wslusersEnter new UNIX username:
这里要关掉科学上网,不然Microsoft Store 可能会打不开;
6.查看当前环境的wsl版本和对应子系统
1 2 3 4 // 在Windows终端中键入 > wsl -l -v NAME STATE VERSION * Arch Running 2
7.注销安装的Linux子系统账户
(名称要与wsl -l -v 命令中NAME一致)
8.删除安装的Linux子系统
系统 -> 应用 -> 安装的应用 删除Arch WSL。
换源 1 2 3 4 5 6 7 8 9 10 11 12 13 14 sudo pacman -Syyu // 防止软件库更新导致某些功能无法使用 sudo pacman -S neovim sudo nvim /etc/pacman.conf 尾部添加 [archlinuxcn] SigLevel = Never Server = https://mirrors.ustc.edu.cn/$repo/$arch 顺便开启 [multilib] Include = /etc/pacman.d/mirrorlist sudo pacman -Syyu sudo pacman -S yay
C/Rust环境配置 1.更新/同步arch Linux内核
这里cmd中需要管理员模式启动 (WSL2中不要开梯子)
2.C开发环境配置
1 sudo pacman -S git base-devel riscv64-linux-gnu-binutils riscv64-linux-gnu-gcc riscv64-linux-gnu-gdb qemu-emulators-full riscv64-elf-gdb
3.Rust开发环境配置
1 curl --proto '=https' --tlsv1.2 -sSf https:
测试是否安装成功:
1 2 3 4 $ cargo --version // 如果cargo无效则重新打开终端进入Linux即可 cargo 1.77.1 (e52e36006 2024-03-26) $ rustc --version rustc 1.77.1 (7cf61ebde 2024-03-27)
切换 nightly 版本,并设置为 rustc 的缺省版本:
1 2 3 4 $ rustup install nightly $ rustup default nightly $ rustc --version rustc 1.79.0-nightly (385fa9d84 2024-04-04)
安装一些Rust相关的软件包:
1 2 3 4 $ rustup target add riscv64gc-unknown-none-elf $ cargo install cargo-binutils $ rustup component add llvm-tools-preview $ rustup component add rust-src
Qemu模拟器 安装
三个选择:
1 1)qemu-base 2)qemu-desktop 3)qemu-full
第一个提示中提示中选择3
,第二个提示默认1
即可。
确认 QEMU 的版本:
1 2 3 4 5 6 $ qemu-system-riscv64 --version QEMU emulator version 9.0.0 Copyright (c) 2003-2024 Fabrice Bellard and the QEMU Project developers $ qemu-riscv64 --version qemu-riscv64 version 9.0.0 Copyright (c) 2003-2024 Fabrice Bellard and the QEMU Project developers
运行 获取代码:
1 2 3 $ git clone https://github.com/rcore-os/rCore-Tutorial-v3.git $ cd rCore-Tutorial-v3$ git checkout ch1
在Qemu模拟的计算机上运行: (第一次可能会有些很慢)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 $ cd os$ LOG=TRACE make run (rustup target list | grep "riscv64gc-unknown-none-elf (installed)") || rustup target add riscv64gc-unknown-none-elf riscv64gc-unknown-none-elf (installed) cargo install cargo-binutils Updating crates.io index Ignored package `cargo-binutils v0.3.6` is already installed, use --force to override rustup component add rust-src info: component 'rust-src' is up to date rustup component add llvm-tools-preview info: component 'llvm-tools' for target 'x86_64-unknown-linux-gnu' is up to date Platform: qemu Finished release [optimized + debuginfo] target(s) in 0.00s [rustsbi] RustSBI version 0.3.1, adapting to RISC-V SBI v1.0.0 .______ __ __ _______.___________. _______..______ __ | _ \ | | | | / | | / || _ \ | | | |_) | | | | | | (----`---| |----`| (----`| |_) || | | / | | | | \ \ | | \ \ | _ < | | | |\ \----.| `--' |.----) | | | .----) | | |_) || | | _| `._____| \______/ |_______/ |__| |_______/ |______/ |__| [rustsbi] Implementation : RustSBI-QEMU Version 0.2.0-alpha.2 [rustsbi] Platform Name : riscv-virtio,qemu [rustsbi] Platform SMP : 1 [rustsbi] Platform Memory : 0x80000000..0x88000000 [rustsbi] Boot HART : 0 [rustsbi] Device Tree Region : 0x87e00000..0x87e010f6 [rustsbi] Firmware Address : 0x80000000 [rustsbi] Supervisor Address : 0x80200000 [rustsbi] pmp01: 0x00000000..0x80000000 (-wr) [rustsbi] pmp02: 0x80000000..0x80200000 (---) [rustsbi] pmp03: 0x80200000..0x88000000 (xwr) [rustsbi] pmp04: 0x88000000..0x00000000 (-wr) [kernel] Hello, world! [TRACE] [kernel] .text [0x80200000, 0x80202000) [DEBUG] [kernel] .rodata [0x80202000, 0x80203000) [ INFO] [kernel] .data [0x80203000, 0x80204000) [ WARN] [kernel] boot_stack top=bottom=0x80214000, lower_bound=0x80204000 [ERROR] [kernel] .bss [0x80214000, 0x80215000)
报错 1.当你在wsl2环境下运行code
命令时报错-bash: code: command not found
时:
在vscode中安装Remote Development
扩展包。
设置Windows下环境变量D:\tools\IDE\VSCode\VSCode\bin
(一定要到bin下)
Ubuntu C/Rust环境配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 // C开发环境 $ 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 // Rust开发环境 $ curl https://sh.rustup.rs -sSf | sh // 安装 rustc 的 nightly 版本,并把该版本设置为 rustc 的缺省版本。 $ rustup install nightly $ rustup default nightly // 安装一些Rust相关的软件包 $ rustup target add riscv64gc-unknown-none-elf $ cargo install cargo-binutils $ rustup component add llvm-tools-preview $ rustup component add rust-src
QEMU模拟器 1 2 3 4 5 6 7 8 9 # 安装编译所需的依赖包 $ 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 libsdl2-dev libslirp-dev \ git tmux python3 python3-pip ninja-build # 下载Qemu $ sudo apt-get install qemu-system $ sudo apt-get install qemu-user
运行 1 2 3 4 5 6 7 8 $ git clone https://github.com/rcore-os/rCore-Tutorial-v3.git $ cd rCore-Tutorial-v3$ git checkout ch1 $ cd os$ LOG=TRACE make run