前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【YSOS】实验零:环境搭建与实验准备

【YSOS】实验零:环境搭建与实验准备

作者头像
正汰
发布2024-02-05 07:52:38
1200
发布2024-02-05 07:52:38
举报

总所周知Web手除了Web啥都学

最近开了个新坑,在学Rust和OS,就在想为什么不结合起来rCore!

实验使用的文档为中山大学YatSenOS操作系统时间课程v2

引用实验文档中的实验说明

本文档提供了一套基于 Rust、面向 UEFI 和 x86_64 的操作系统课程实验方案。 本实验设计期望基于低汇编、避免重复造轮子的宗旨,利用 Rust 语言优秀的包管理和底层支持,借助现有的优秀工程化底层封装,为学生提供一个低负担、现代、面向高级语言的操作系统实验指南。

废话少说,直接开始干活

MacOS环境配置

实验支持使用MacOS with Apple Silicon,但是没有给出相应的配置方法(其实就是Linux:P) 1. 安装brew

代码语言:javascript
复制
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  1. 安装qemu
代码语言:javascript
复制
brew install qemu
  1. 安装rustup
代码语言:javascript
复制
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"

QEMU启动UEFI Shell

初始化仓库、代码完整性等不再赘述,后续如有类似跳过部份不再提示,请以实验调试指南为准

测试qemu能否正常工作

代码语言:javascript
复制
qemu-system-x86_64 -bios ./assets/OVMF.fd -net none -nographic

跑起来了

代码语言:javascript
复制
BdsDxe: failed to load Boot0001 "UEFI QEMU DVD-ROM QM00003 " from PciRoot(0x0)/Pci(0x1,0x1)/Ata(Secondary,Master,0x0): Not Found
BdsDxe: loading Boot0002 "EFI Internal Shell" from Fv(7CB8BDC9-F8EB-4F34-AAEA-3EE4AF6516A1)/FvFile(7C04A583-9E3E-4F1C-AD65-E05268D0B4D1)
BdsDxe: starting Boot0002 "EFI Internal Shell" from Fv(7CB8BDC9-F8EB-4F34-AAEA-3EE4AF6516A1)/FvFile(7C04A583-9E3E-4F1C-AD65-E05268D0B4D1)
UEFI Interactive Shell v2.2
EDK II
UEFI v2.70 (EDK II, 0x00010000)
Mapping table
     BLK0: Alias(s):
          PciRoot(0x0)/Pci(0x1,0x1)/Ata(0x0)
Press ESC in 1 seconds to skip startup.nsh or any other key to continue.
Shell> 

运行第一个UEFI程序

代码语言:javascript
复制
\#![no_std]
#![no_main]

#[macro_use]
extern crate log;
extern crate alloc;

use core::arch::asm;
use uefi::prelude::*;

#[entry]
fn efi_main(image: uefi::Handle, mut system_table: SystemTable<Boot>) -> Status {
    uefi_services::init(&mut system_table).expect("Failed to initialize utilities");
    log::set_max_level(log::LevelFilter::Info);

    let std_num = "2021280167";

    loop {
        info!("Hello World from UEFI bootloader! @ {}", std_num);

        for _ in 0..0x10000000 {
            unsafe {
                asm!("nop");
            }
        }
    }
}

TODO:关于我在Mac按Control + A + X关不掉QEMU这件事(很奇怪,有点影响效率) IDE我没有像教程使用VScode,而是采用了Jetbrain的RustRover但Preview版 我会针对RustRover改动一些配置以匹配我的开发习惯

也不知道以后有没有用,就先写着好了,相比于直接Build&Run我这里多了一步Check,电脑垃圾Build得慢

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-2-4,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MacOS环境配置
  • QEMU启动UEFI Shell
  • 运行第一个UEFI程序
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档