清华大学操作系统rCore实验-第零章-Lab环境搭建

清华大学操作系统实验---rCore环境搭建


零、前言

一直想动手写一个操作系统,但是没有能力从零开始写,故跟着清华大学操作系统实验,完成这个目标,这一篇文章开始,将进行清华大学操作系统rCore 实验。本章是环境搭建,有一些个人特色,完成实验的基础上,尝试回答实验后的编程题问答题,如有错误,请大家指出并帮助纠正,不胜感激。


一、VirtualBox

由于VMWare专业版要收费,又不想使用盗版,故采用了VirtualBox 。VirtualBox是一款开源虚拟机软件 。使用者可以在VirtualBox上安装并且执行Solaris、Windows、DOS、Linux、OS/2 Warp、BSD等系统作为客户端操作系统。

下载地址为https://www.virtualbox.org/wiki/Downloads,可以根据不同的系统装不同的版本(https://www.virtualbox.org/wiki/Downloads)。

注意 ,windows11下载安装前需要下载Microsoft Visual C++ Redistributable packages

选择64位的,下载好后可以安装了,安装路径建议不要装在C盘,其余选项默认即可。


二、Kali Linux

由于我的专业是信息安全 ,故我选择我最常用的Kali Linux 系统作为实验环境。

在官网https://www.kali.org/get-kali/#kali-virtual-machines下载,

选择VirtualBox版本,下载并解压号后,双击打开kali-linux-2023.4-virtualbox-amd64.vdi文件。

注意打开后,在网络那一栏需要将网卡先设置为NAT模式 ,最终配置好环境后为保安全起见,需要将网卡设置为仅主机模式

然后启动系统,默认用户名为kali ,密码为kali

打开后可以在DisplayPanel 中设置界面字体外观。

然后右键打开命令行,输入sudo su,切换到root 权限,默认密码为kali

由于下载工具的自带源很慢,故我们需要更换国内源,我这里用的是中科大的源。

修改/etc/apt/sources.list文件,输入vim /etc/apt/sources.list,按i 进入编辑模式,将原本的路径注释掉,然后输入

bash 复制代码
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib

编辑好后保存。

然后更新环境,逐条输入,

bash 复制代码
apt-get upgrade
apt-get update
apt-get clean

三、C

由于会涉及C语言 的开发,我们需要安装用于本机开发环境交叉开发环境的C语言编译环境。

bash 复制代码
apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu

等待安装好,然后重新升级软件:

bash 复制代码
apt-get upgrade
apt-get update
apt-get clean

四、Rust

首先安装 Rust 版本管理器 rustup 和 Rust 包管理器 cargo:

bash 复制代码
export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static
export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
curl https://sh.rustup.rs -sSf | sh

等待安装好,我们可以确认一下我们正确安装了 Rust 工具链:

bash 复制代码
rustc --version

可以看到当前安装的工具链的版本。

最后安装一些Rust相关的依赖包,依次输入:

dart 复制代码
rustup target add riscv64gc-unknown-none-elf
cargo install cargo-binutils
rustup component add llvm-tools-preview
rustup component add rust-src

五、QEMU 模拟器安装

首先我们安装编译所需的依赖包

bash 复制代码
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 \
              git tmux python3 python3-pip ninja-build

然后逐条输入apt-get upgradeapt-get update,将这些依赖包更新到最新版本。

然后我们安装qemu ,输入apt-get install qemu-systemapt-get install qemu-user-staticapt-get install qemu-user

此时我们可以确认 QEMU 的版本:

bash 复制代码
qemu-system-riscv64 --version
qemu-riscv64 --version

六、Hello,world测试

我们利用cargo 工具建立一个项目,命令行输入cargo new neos --bin

可以看到默认项目的结构,我们在neos根目录输入cargo run,启动项目。

成功显示Hello,world!


相关推荐
apocelipes5 分钟前
常用编程语言和库的正则表达式性能对比
c语言·c++·python·性能优化·golang·开发工具和环境
用户120487221614 小时前
Linux驱动编译与加载
linux·嵌入式
花褪残红青杏小9 小时前
Rust图像处理第9节-Sobel 边缘检测:第一个真正用卷积的算法
rust·webassembly·图形学
用户8055336980310 小时前
Input 子系统架构:Core、Handler、Driver 三层是怎么协作的
linux·嵌入式
用户8055336980310 小时前
RK-Forge外设系列开篇 - 把板子从「能启动」变成「能用」:Ethernet/SPI/MMC 三个纯接线外设
linux·github·嵌入式
doiito12 小时前
【Agent Harness】Gliding Horse L2 作战地图深度优化:给多 Agent 上下文装上“精准导航”
ai·rust·架构设计·系统设计·ai agent
花褪残红青杏小19 小时前
Rust图像处理第8节-暗角 & 复古胶片特效:四周衰减中心高亮
rust·webassembly·图形学
七歌杜金房1 天前
我终于又有了自己的 Linux 电脑
linux·debian·mac
独孤留白1 天前
从C到Rust:Rust 的 Trait 不是Interface,那是什么?
rust