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

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

    • 零、前言
    • 一、VirtualBox
    • 二、Kali Linux
    • 三、C
    • 四、Rust
    • 五、QEMU 模拟器安装
    • 六、Hello,world测试


零、前言

一直想动手写一个操作系统,但是没有能力从零开始写,故跟着清华大学操作系统实验,完成这个目标,这一篇文章开始,将进行清华大学操作系统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。
x64
选择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,密码为kali
设置外观
打开后可以在DisplayPanel中设置界面字体外观。
然后右键打开命令行,输入sudo su,切换到root权限,默认密码为kali
切换root权限
由于下载工具的自带源很慢,故我们需要更换国内源,我这里用的是中科大的源。
修改/etc/apt/sources.list文件,输入vim /etc/apt/sources.list,按i进入编辑模式,将原本的路径注释掉,然后输入

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

源

编辑好后保存。
然后更新环境,逐条输入,

apt-get upgrade
apt-get update
apt-get clean

三、C

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

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

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

apt-get upgrade
apt-get update
apt-get clean

四、Rust

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

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 工具链:

rustc --version

可以看到当前安装的工具链的版本。
版本
最后安装一些Rust相关的依赖包,依次输入:

rustup target add riscv64gc-unknown-none-elf
cargo install cargo-binutils
rustup component add llvm-tools-preview
rustup component add rust-src

五、QEMU 模拟器安装

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

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 的版本:

qemu-system-riscv64 --version
qemu-riscv64 --version

qemu版本


六、Hello,world测试

我们利用cargo工具建立一个项目,命令行输入cargo new neos --bin
在这里插入图片描述
可以看到默认项目的结构,我们在neos根目录输入cargo run,启动项目。
在这里插入图片描述
成功显示Hello,world!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/410659.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 实现单线程异步互斥锁

文章目录 前言一、异步互斥锁的作用是什么?示例一、创建和销毁 二、如何实现?1、标识(1)标识是否锁住(2)加锁(3)解锁 2、异步通知(1)创建对象(2&a…

CSS||Emmet语法

1、简介 ​ Emmet语法的前身是Zen coding,它使用缩写,来提高html/css的编写速度, Vscode内部已经集成该语法。 ​ 快速生成HTML结构语法 ​ 快速生成CSS样式语法 2、快速生成HTML结构语法 生成标签 直接输入标签名 按tab键即可 比如 div 然后tab 键&#xff0c; 就可以生成 <…

Python进阶知识:整理6 -> 正则表达式

1 基础匹配用法 # 演示Python中正则表达式re模块的3个基础匹配方法 import re # 1. match()方法 从头匹配 string "hello world" result re.match("hello", string) # 如果头部没有匹配成功就直接失败了,后面就不会继续匹配了 print(result) print(r…

Unreal Engine(UE5)中构建离线地图服务

1. 首先需要用到3个软件&#xff0c;Unreal Engine&#xff0c;gis office 和 bigemap离线服务器 Unreal Engine下载地址:点击前往下载页面 Gis office下载地址:点击前往下载页面 Bigemap离线服务器 下载地址: 点击前往下载页面 Unreal Engine用于数字孪生项目开发&#x…

redis7部署集群:包含主从模式、哨兵模式、Cluster集群模式等三种模式

前言&#xff1a; redis部署集群常见的一般有三种模式&#xff1a;主从模式&#xff0c;Sentinel&#xff08;哨兵模式&#xff09;&#xff0c;Redis Cluster&#xff08;高可用Cluster集群&#xff09;&#xff0c;根据不同的需求可自定义选择部署方式。 Redis 主从模式&…

Java_单元测试、反射

一、单元测试 1.1 单元测试快速入门 所谓单元测试&#xff0c;就是针对最小的功能单元&#xff0c;编写测试代码对其进行正确性测试。 我们想想&#xff0c;咱们之前是怎么进行测试的呢&#xff1f; 比如说我们写了一个学生管理系统&#xff0c;有添加学生、修改学生、删除…

OB SQL引擎和存储引擎

文章目录 一 SQL引擎1.1 双模共存1.2 基本操作1.3 查看SQL的执行计划 二 存储引擎2.1 传统数据库存在的问题2.2 LSM-Tree存储2.3 OceanBase转储和合并2.4 控制内存数据落盘2.5 LSMTree存储压缩 三 备份恢复3.1 物理备份系统架构3.2 物理恢复系统架构 一 SQL引擎 1.1 双模共存 …

uni-app的组件(二)

多项选择器checkbox-group 多项选择器&#xff0c;内部由多个 checkbox 组成。 <checkbox-group><checkbox checked color"red" value"1"></checkbox> 篮球<!-- disabled:是否禁用 --><checkbox disabled color"rgba(0,0…

安卓屏幕自动息屏时亮度突然变亮

自然息屏流程 USER_ACTIVITY_SCREEN_BRIGHT&#xff08;亮屏&#xff09; → USER_ACTIVITY_SCREEN_DIM&#xff08;DIM&#xff09; → USER_ACTIVITY_SCREEN_DREAM&#xff08;灭屏&#xff09;变化&#xff0c;最终进入ASLEEP后。在息屏时会执行一个变暗的动画 frameworks\…

ChatGPT 商业提示词攻略书

原文&#xff1a;ChatGPT Business Prompt Playbook 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 一、书系介绍 人工智能发展迅速。非常迅速。 所以我希望你做两件事&#xff1a; (1) 在 Twitter 上关注我&#xff1a;iamkylebalmer (2) 订阅我的免费电子邮件通…

Tensorflow2.0笔记 - 基础数学运算

本笔记主要记录基于元素操作的,-,*,/,//,%,**,log,exp等运算&#xff0c;矩阵乘法运算&#xff0c;多维tensor乘法相关运算 import tensorflow as tf import numpy as nptf.__version__#element-wise运算&#xff0c;对应元素的,-,*,/,**,//,% tensor1 tf.fill([3,3], 4) ten…

数据结构【树+二叉树】

目录 线性表和非线性表 树的概念 树的存储表示 二叉树的概念 特殊二叉树 满二叉树 完全二叉树 二叉树的性质 二叉树的存储结构 顺序存储 链式存储 本篇我们开始进入数据结构中【树】的学习。 线性表和非线性表 逻辑结构&#xff1a;人想象出来的物理结构&#xf…