From f815f812d7668caeace1b7f82f56b290602ac725 Mon Sep 17 00:00:00 2001 From: GZTime Date: Sun, 24 Mar 2024 23:23:09 +0800 Subject: [PATCH] =?UTF-8?q?Lab=206:=20=E7=A1=AC=E7=9B=98=E9=A9=B1=E5=8A=A8?= =?UTF-8?q?=E4=B8=8E=E6=96=87=E4=BB=B6=E7=B3=BB=E7=BB=9F=20(#19)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Zhe Tang Co-authored-by: Linloir <30849181+Linloir@users.noreply.github.com> Co-authored-by: Smallorange666 <141314494+Smallorange666@users.noreply.github.com> Co-authored-by: Harvey Mo <108322627+Master7Sword@users.noreply.github.com> Co-authored-by: Aether Chen <15167799+chenjunyu19@users.noreply.github.com> --- docs/css/extra.css | 4 + docs/general/faq.md | 37 +- docs/labs/0x00/tasks.md | 10 + docs/labs/0x01/tasks.md | 34 +- docs/labs/0x02/tasks.md | 24 +- docs/labs/0x03/tasks.md | 4 +- docs/labs/0x04/tasks.md | 4 +- docs/labs/0x05/tasks.md | 4 +- docs/labs/0x06/index.md | 5 +- docs/labs/0x06/tasks.md | 420 ++++++++++++++++++ docs/labs/0x07/index.md | 2 +- docs/labs/0x08/index.md | 124 +++++- docs/labs/assets/storage.png | Bin 0 -> 211420 bytes docs/wiki/assets/fat/directory-structure.png | Bin 0 -> 161049 bytes docs/wiki/assets/fat/fat-sector.png | Bin 0 -> 91156 bytes docs/wiki/assets/fat/fat-structure.png | Bin 0 -> 54022 bytes docs/wiki/assets/fat/file-structure.png | Bin 0 -> 52974 bytes docs/wiki/ata.md | 82 ++++ docs/wiki/fat.md | 249 +++++++++++ docs/wiki/fs.md | 105 +++++ docs/wiki/uart.md | 2 +- mkdocs.yml | 3 + src/0x00/pkg/boot/Cargo.toml | 4 +- src/0x01/pkg/boot/Cargo.toml | 4 +- src/0x01/pkg/boot/src/main.rs | 2 +- src/0x01/pkg/kernel/.cargo/config.toml | 3 - src/0x01/pkg/kernel/src/utils/macros.rs | 3 + .../pkg/kernel/src/interrupt/exceptions.rs | 2 +- .../pkg/kernel/src/interrupt/syscall/mod.rs | 2 +- src/0x06/pkg/kernel/src/drivers/ata/bus.rs | 234 ++++++++++ src/0x06/pkg/kernel/src/drivers/ata/consts.rs | 95 ++++ src/0x06/pkg/kernel/src/drivers/ata/mod.rs | 99 +++++ src/0x06/pkg/kernel/src/drivers/filesystem.rs | 50 +++ src/0x06/pkg/storage/Cargo.toml | 13 + src/0x06/pkg/storage/src/common/block.rs | 81 ++++ src/0x06/pkg/storage/src/common/device.rs | 21 + src/0x06/pkg/storage/src/common/error.rs | 82 ++++ src/0x06/pkg/storage/src/common/filehandle.rs | 36 ++ src/0x06/pkg/storage/src/common/filesystem.rs | 58 +++ src/0x06/pkg/storage/src/common/io.rs | 60 +++ src/0x06/pkg/storage/src/common/macros.rs | 71 +++ src/0x06/pkg/storage/src/common/metadata.rs | 63 +++ src/0x06/pkg/storage/src/common/mod.rs | 24 + src/0x06/pkg/storage/src/common/mount.rs | 52 +++ src/0x06/pkg/storage/src/fs/fat16/bpb.rs | 170 +++++++ .../pkg/storage/src/fs/fat16/directory.rs | 47 ++ src/0x06/pkg/storage/src/fs/fat16/direntry.rs | 262 +++++++++++ src/0x06/pkg/storage/src/fs/fat16/file.rs | 64 +++ src/0x06/pkg/storage/src/fs/fat16/impls.rs | 67 +++ src/0x06/pkg/storage/src/fs/fat16/mod.rs | 58 +++ src/0x06/pkg/storage/src/fs/mod.rs | 1 + src/0x06/pkg/storage/src/lib.rs | 24 + .../pkg/storage/src/partition/mbr/entry.rs | 86 ++++ src/0x06/pkg/storage/src/partition/mbr/mod.rs | 72 +++ src/0x06/pkg/storage/src/partition/mod.rs | 88 ++++ 55 files changed, 3073 insertions(+), 38 deletions(-) create mode 100644 docs/labs/assets/storage.png create mode 100644 docs/wiki/assets/fat/directory-structure.png create mode 100644 docs/wiki/assets/fat/fat-sector.png create mode 100644 docs/wiki/assets/fat/fat-structure.png create mode 100644 docs/wiki/assets/fat/file-structure.png create mode 100644 docs/wiki/ata.md create mode 100644 docs/wiki/fat.md create mode 100644 docs/wiki/fs.md create mode 100644 src/0x06/pkg/kernel/src/drivers/ata/bus.rs create mode 100644 src/0x06/pkg/kernel/src/drivers/ata/consts.rs create mode 100644 src/0x06/pkg/kernel/src/drivers/ata/mod.rs create mode 100644 src/0x06/pkg/kernel/src/drivers/filesystem.rs create mode 100644 src/0x06/pkg/storage/Cargo.toml create mode 100644 src/0x06/pkg/storage/src/common/block.rs create mode 100644 src/0x06/pkg/storage/src/common/device.rs create mode 100644 src/0x06/pkg/storage/src/common/error.rs create mode 100644 src/0x06/pkg/storage/src/common/filehandle.rs create mode 100644 src/0x06/pkg/storage/src/common/filesystem.rs create mode 100644 src/0x06/pkg/storage/src/common/io.rs create mode 100644 src/0x06/pkg/storage/src/common/macros.rs create mode 100644 src/0x06/pkg/storage/src/common/metadata.rs create mode 100644 src/0x06/pkg/storage/src/common/mod.rs create mode 100644 src/0x06/pkg/storage/src/common/mount.rs create mode 100644 src/0x06/pkg/storage/src/fs/fat16/bpb.rs create mode 100644 src/0x06/pkg/storage/src/fs/fat16/directory.rs create mode 100644 src/0x06/pkg/storage/src/fs/fat16/direntry.rs create mode 100644 src/0x06/pkg/storage/src/fs/fat16/file.rs create mode 100644 src/0x06/pkg/storage/src/fs/fat16/impls.rs create mode 100644 src/0x06/pkg/storage/src/fs/fat16/mod.rs create mode 100644 src/0x06/pkg/storage/src/fs/mod.rs create mode 100644 src/0x06/pkg/storage/src/lib.rs create mode 100644 src/0x06/pkg/storage/src/partition/mbr/entry.rs create mode 100644 src/0x06/pkg/storage/src/partition/mbr/mod.rs create mode 100644 src/0x06/pkg/storage/src/partition/mod.rs diff --git a/docs/css/extra.css b/docs/css/extra.css index 8f784100..2703b3da 100644 --- a/docs/css/extra.css +++ b/docs/css/extra.css @@ -97,3 +97,7 @@ table.wikitable { .wikitable caption { font-weight: bold; } + +[data-md-color-scheme="default"] .transparent-img { + filter: invert(1) hue-rotate(180deg) +} diff --git a/docs/general/faq.md b/docs/general/faq.md index 8abacb0e..3347ac91 100644 --- a/docs/general/faq.md +++ b/docs/general/faq.md @@ -4,27 +4,27 @@ no_comments: true # 常见问题及解答 -## 为什么选择基于 UEFI 而不是自己使用汇编编写 bootloader? +## 实验设计问题 -汇编是一种非常底层的语言,对于大部分同学的学习经历来说,只在组成原理课程上接触过简单的 MIPS / RISC-V,而 x86 / ARM 基本接触很少。根据以往的经验,汇编的调试、编写、理解对于同学们都是很大的挑战。 +### 相较于 CPP,本实验设计为什么选择 Rust 语言? -因此在设计层面希望能够减少汇编的使用,利用现有的运行环境框架如 UEFI,结合可以直接编译成 UEFI 可执行文件的 Rust 语言,达成这一目的。 +这部分内容的重点是“重复造轮子”的问题,其所指的并不是指操作系统的设计,否则有 Linux 了就没必要开发其他 OS Kernel 了,而更多指对于底层的封装和抽象、语言的支持等。 -同时,相对于以往面向于 x86 的方案首先需要手动处理从 16 位到 32 位的切换这一历史遗留问题,从指令集和操作系统层面,这都造成了对于过时设计的非必要的学习成本,在本就不长的实验周期中无形减少学生学到的知识份额。 +1. 不需要为架构无关的数据结构“造轮子” -## 相较于 CPP,本实验设计为什么选择 Rust 语言? + 在 CPP 的实现中,std 库与系统底层架构强耦合,在裸操作系统中无法使用,因此就连 `vector` 这类**架构无关的数据结构都需要自己实现**;在 rust 中,这些架构无关的代码被放在了 `core` 和 `alloc` 两个底层包中,因此可以直接使用诸如 `Vec`、`String` 这些数据结构和相关功能。 -这部分内容的重点是“重复造轮子”的问题,其所指的并不是指操作系统的设计,否则有 Linux 了就没必要开发其他 OS Kernel 了,而更多指对于底层的封装和抽象、语言的支持等。 +2. 不需要为数据格式化等杂项“造轮子” -1. 在 CPP 的实现中,std 库与系统底层架构强耦合,在裸操作系统中无法使用,因此就连 `vector` 这类**架构无关的数据结构都需要自己实现**;在 rust 中,这些架构无关的代码被放在了 `core` 和 `alloc` 两个底层包中,因此可以直接使用诸如 `Vec`、`String` 这些数据结构和相关功能。 + 在 CPP 的实现中,比如 `printf` 的格式化实现是不透明的,想要重写的话就需要修改其源代码,而**阅读 std 的头文件、源代码对于大部分人来说都是比较灾难性的体验**;而在 rust 中,当我们为一个结构体实现了 `Write` triat (类似于接口)后,就天然的实现了 `write_fmt` 这些功能,可以**直接利用现有的语言体系进行格式化输出**。 -2. 在 CPP 的实现中,比如 `printf` 的格式化实现是不透明的,想要重写的话就需要修改其源代码,而**阅读 std 的头文件、源代码对于大部分人来说都是比较灾难性的体验**;而在 rust 中,当我们为一个结构体实现了 `Write` triat (类似于接口)后,就天然的实现了 `write_fmt` 这些功能,可以**直接利用现有的语言体系进行格式化输出**。 +3. 不需要为堆内存分配的兼容性“造轮子” -3. 在 CPP 的实现中,`vector` 底层使用的 `malloc` 函数**无法直接替换和修改**,这也是无法直接使用的核心原因;在 rust 中,内存分配的底层操作是被抽象的,只需要借助 `#[global_allocator]` 声明堆分配器,就可以为**裸操作系统带来动态内存分配的能力**,这一内存分配可以直接使用现有的实现,实际代码不到十行,带来的效果是开发基本与非裸机一致,可以使用全部诸如 `Box` 等特性,也为同学们未来可能的项目开发累积使用经验。 + 在 CPP 的实现中,`vector` 底层使用的 `malloc` 函数**无法直接替换和修改**,这也是无法直接使用的核心原因;在 rust 中,内存分配的底层操作是被抽象的,只需要借助 `#[global_allocator]` 声明堆分配器,就可以为**裸操作系统带来动态内存分配的能力**,这一内存分配可以直接使用现有的实现,实际代码不到十行,带来的效果是开发基本与非裸机一致,可以使用全部诸如 `Box` 等特性,也为同学们未来可能的项目开发累积使用经验。 虽然从语言方面,Rust 带来的内存安全和新颖的语言设计概念都是值得学习的,对后续无论是编译原理还是现代特性理解都有帮助。但**客观来说,Rust 学习也存在很高的门槛**,虽然在实验设计中准备了很多的缓冲和学习机会,但还是需同学们自己进行权衡。 -## 本实验设计与 rCore 实验设计的差异? +### 本实验设计与 rCore 实验设计的差异? THU 的 rCore 课程实验是一个非常优秀的操作系统课程设计,它的设计目标是让学生能够从零开始,了解操作系统的各个部分,包括内核、驱动、文件系统、网络等等。 @@ -36,6 +36,19 @@ THU 的 rCore 课程实验是一个非常优秀的操作系统课程设计,它 > 如果需要进行多架构支持,需要对页表、寄存器、控制等内容进行抽象和统一,这部分的工程化抽象开销会很大的增加学生的学习成本。 -## 面对多种实验方案,我都想先进行尝试,切换实验的成本如何? -在 Lab 3(第四次实验)开始前,如果想要切换还有机会;如果实现到进程相关的内容,由于没有前期的铺垫和学习,再切换实验带来的成本就比较大了。 +### 为什么选择基于 UEFI 而不是自己使用汇编编写 bootloader? + +汇编是一种非常底层的语言,对于大部分同学的学习经历来说,只在组成原理课程上接触过简单的 MIPS / RISC-V,而 x86 / ARM 基本接触很少。根据以往的经验,汇编的调试、编写、理解对于同学们都是很大的挑战。 + +因此在设计层面希望能够减少汇编的使用,利用现有的运行环境框架如 UEFI,结合可以直接编译成 UEFI 可执行文件的 Rust 语言,达成这一目的。 + +同时,相对于以往面向于 x86 的方案首先需要手动处理从 16 位到 32 位的切换这一历史遗留问题,从指令集和操作系统层面,这都造成了对于过时设计的非必要的学习成本,在本就不长的实验周期中无形减少学生学到的知识份额。 + +## 实验实践问题 + +### 面对多种实验方案,该如何选择? + +对于学校提供的多种实验方案,笔者秉持鼓励尝试,自行选择的态度。 + +但是在选择实验方案时,需要考虑到教师的要求和切换实验的成本:**在 Lab 3(第四次实验)开始前**,如果想要切换还有机会;如果实现到进程相关的内容,由于没有前期的铺垫和学习,再切换实验带来的成本就比较大了。 diff --git a/docs/labs/0x00/tasks.md b/docs/labs/0x00/tasks.md index e9ca4c97..45855b61 100644 --- a/docs/labs/0x00/tasks.md +++ b/docs/labs/0x00/tasks.md @@ -287,6 +287,16 @@ targets = [ "x86_64-unknown-uefi" ] 在配置好的工作区中执行编译时,Rust 会自动下载并安装对应的工具链。 +!!! note "rust-analyzer 在非 x86 平台上总是提示错误?" + + 可以通过 VSCode 配置项:`rust-analyzer.cargo.target` 来指定目标平台: + + ```json + { + "rust-analyzer.cargo.target": "x86_64-unknown-uefi" + } + ``` + ### 运行第一个 UEFI 程序 编译一个 UEFI 程序时,我们没有操作系统所提供的标准库,也没有操作系统提供的 Interpreter,因此我们需要使用 `#![no_std]` 来声明我们的程序不依赖标准库,使用 `#![no_main]` 来声明我们的程序不依赖操作系统的入口函数。 diff --git a/docs/labs/0x01/tasks.md b/docs/labs/0x01/tasks.md index 2b344a7c..c5becf3c 100644 --- a/docs/labs/0x01/tasks.md +++ b/docs/labs/0x01/tasks.md @@ -312,7 +312,7 @@ pub fn get_serial_for_sure<'a>() -> spin::MutexGuard<'a, SerialPort> { `spin::Mutex` 是一个基于自旋锁实现的互斥锁,它的 `try_lock` 方法尝试获取互斥锁的所有权,如果获取成功,则返回一个 `MutexGuard`,这个 `MutexGuard` 将会在离开作用域时自动释放互斥锁。 -部分有关于“自选锁”和“互斥锁”的实现代码如下所示: +部分有关于“自旋锁”和“互斥锁”的实现代码如下所示: ```rust pub fn lock(&self) -> SpinMutexGuard { @@ -447,9 +447,37 @@ char read_serial() { #### 串口驱动的测试 -在 `pkg/kernel/src/utils/macros.rs` 中,你可以找到 `print!` 和 `println!` 宏面向串口输出的实现。 +在 `pkg/kernel/src/utils/macros.rs` 中,你可以找到 `print!` 和 `println!` 宏面向串口输出的实现: -在调用 `drivers::serial::init()` 后,如果能够正常看到 `[+] Serial Initialized.` 的输出,说明串口驱动已经成功初始化。 +```rust +#[macro_export] +macro_rules! print { + ($($arg:tt)*) => ( + $crate::utils::print_internal(format_args!($($arg)*)) + ); +} + +#[doc(hidden)] +pub fn print_internal(args: Arguments) { + interrupts::without_interrupts(|| { + if let Some(mut serial) = get_serial() { + serial.write_fmt(args).unwrap(); + } + }); +} +``` + +因此,按照预期,在调用 `drivers::serial::init()` 后,如果能够正常看到 `[+] Serial Initialized.` 的输出,说明串口驱动已经成功初始化。 + +!!! question "为什么在输出时使用 `get_serial()` 获取串口?" + + 在内核中,为了确保串口不会同时被多方“一起访问”,需要用互斥锁来保护串口的访问。 + + `get_serial()` 函数尝试获取串口的互斥锁,如果获取成功,则返回一个 `MutexGuard`,这个 `MutexGuard` 将会在离开作用域时自动释放互斥锁。 + + 然而,与 `get_serial_for_sure()` 更加强势,如果无法获取直接 panic,不留余地,这通常用于“必须获取到,否则是异常”的情况。 + + **对于前者的情况,如果在已经获取了串口的互斥锁之后,依然尝试进行 `print!` 输出,将会导致对应的输出内容被忽略,因为串口已经被占用。** ### 日志输出 diff --git a/docs/labs/0x02/tasks.md b/docs/labs/0x02/tasks.md index c35bb445..995fcd9a 100644 --- a/docs/labs/0x02/tasks.md +++ b/docs/labs/0x02/tasks.md @@ -513,9 +513,19 @@ static int init_serial() { } ``` +同时,为了能够接收到 IO 设备的对应中断,你需要为 IOAPIC 启用对应的 IRQ: + +```rust +enable_irq(Irq::Serial0 as u8, 0); // enable IRQ4 for CPU0 +``` + +!!! warning "请勿配置错误" + + 在实践中,有大量同学将 IRQ (Interrupt Request) 和 IRQ 对应的中断向量号 (Interrupt Vector) 混淆,导致串口中断无法正常工作。 + 为了承接全部(可能的)用户输入数据,并将它们统一在标准输入,需要为输入准备缓冲区,并将其封装为一个驱动,创建 `src/drivers/input.rs` 文件,使用 `crossbeam_queue` crate 实现一个无锁输入缓冲区。 -!!! tip "在 memory 初始化的过程中,你已经有了内核堆分配的能力,可以动态分配内存。" +!!! tip "在 memory 初始化的过程后,你已经有了内核堆分配的能力,可以动态分配内存。" 按照下列描述,补全 `src/drivers/input.rs` 驱动代码: @@ -572,7 +582,7 @@ static int init_serial() { *Note: `String::with_capacity` 可以帮助你预先分配足够的内存。* -串口的输入中断与时钟中断类似,在 `src/interrupt/serial.rs` 中补全代码,为 IRQ4 Serial0 设置中断处理程序: +串口的输入中断与时钟中断类似,在 `src/interrupt/serial.rs` 中补全代码,为 **IRQ4 Serial0** 设置中断处理程序: ```rust use super::consts::*; @@ -594,7 +604,15 @@ fn receive() { } ``` -你需要补全 `receive` 函数,利用刚刚完成的 `input` 驱动,将接收到的字符放入缓冲区。 +最后,你需要补全 `receive` 函数,利用刚刚完成的 `input` 驱动,将接收到的字符放入缓冲区。 + +!!! warning "中断导致的“并发访问”" + + 或许你会困惑:只有一个 CPU,为什么会导致并发访问,进而导致死锁的产生?就算暂时无法获取锁,等待一会也能获取到吧? + + 这里需要区分一些概念,与常见的用户态“多线程”的并发不同,中断所导致的“并发访问”是**强制性**的,并且需要**主动恢复**,循环等待的过程**并不存在抢占**。 + + **基于上述信息,结合思考题 3 给出的例子,尝试描述锁操作、中断的相关过程,完成该思考题。** ## 用户交互 diff --git a/docs/labs/0x03/tasks.md b/docs/labs/0x03/tasks.md index 0eef72eb..a697034c 100644 --- a/docs/labs/0x03/tasks.md +++ b/docs/labs/0x03/tasks.md @@ -164,7 +164,7 @@ pub struct ProcessContextValue { 在 PID 的设计中,**本实验使用 `0` 表示当前没有进程在运行**,因此在 `Processor` 结构体初始化时,将其初始化为 `0`。 -为了支持*实际上不计划支持的*多处理器,实验设计把 `Processor` 结构体放在一个静态数组之中,数组的长度为 `MAX_CPU_NUM`。 +为了给扩展实验的多处理器支持预留可行性,实验设计把 `Processor` 结构体放在一个静态数组之中,数组的长度为 `MAX_CPU_COUNT`: ```rust const MAX_CPU_COUNT: usize = 8; @@ -546,7 +546,7 @@ pub fn new_test_thread(id: &str) -> ProcessId { 1. 它们是否按照预期的顺序保存和恢复执行? 2. 有没有进程插队、执行状态不正确、执行时间不平均的情况? 3. 它们使用的栈是否符合预期? - 4. 有没有进程存在不再调度几次后继续执行的情况? + 4. 是否有进程存在声明退出后继续执行的情况? 5. 就绪队列中是否存在重复的进程? ## 缺页异常的处理 diff --git a/docs/labs/0x04/tasks.md b/docs/labs/0x04/tasks.md index 07211265..16b80caa 100644 --- a/docs/labs/0x04/tasks.md +++ b/docs/labs/0x04/tasks.md @@ -52,7 +52,7 @@ 通常而言,用户程序并不直接自行处理系统调用,而是由用户态库提供的函数进行调用。 -在编写 C 语言时 `printf`、`scanf` 等函数并不是直接调用系统调用,以 gcc on Linux 的一般行为为例,这些函数被定义在 `glibc` 中,而 `glibc` 会处理系统调用。相对应的,在 Windows 上,也会存在 `msvcrt` (Microsoft Visual C Run-time) 等库。 +在编写 C 语言时 `printf`、`scanf` 等函数并不是直接调用系统调用。以一般的 GNU/Linux 程序为例,这些函数被定义在 `glibc` (GNU C Library) 中,而 `glibc` 会处理系统调用。相对应的,在 Windows 上,也会存在 `msvcrt` (Microsoft Visual C Run-time) 和 `ucrt` (Universal C Runtime) 等库。 为了让用户态程序更好地与 YSOS 进行交互,处理程序的生命周期,便于编写用户程序等,需要提供用户态库,以便用户程序调用。 @@ -950,7 +950,7 @@ The factorial of 999999 under modulo 1000000007 is 128233642. 2. 😋 尝试在 `kernel/src/memory/frames.rs` 中实现帧分配器的回收功能 `FrameDeallocator`,作为一个最小化的实现,你可以在 `Allocator` 使用一个 `Vec` 存储被释放的页面,并在分配时从中取出。 -3. 🤔 基于帧回收器的实现,在 `elf` 中实现 `unmap_range` 函数,从页表中取消映射一段连续的页面,并使用帧回收器进行回收。利用它实现进程栈的回收(利用 `ProcessData` 中存储的页面信息),页表的回收将会在后续实现用实现,暂时不需要处理。 +3. 🤔 基于帧回收器的实现,在 `elf` 中实现 `unmap_range` 函数,从页表中取消映射一段连续的页面,并使用帧回收器进行回收。之后,在合适的地方,结合 `ProcessData` 中存储的页面信息,利用这个函数实现进程栈的回收。其他进程资源(如页表、代码段、数据段等)的回收将会在后续实验中实现,目前暂时不需要考虑。 4. 🤔 尝试利用 `UefiRuntime` 和 `chrono` crate,获取当前时间,并将其暴露给用户态,以实现 `sleep` 函数。 diff --git a/docs/labs/0x05/tasks.md b/docs/labs/0x05/tasks.md index f375e5d6..42bde379 100644 --- a/docs/labs/0x05/tasks.md +++ b/docs/labs/0x05/tasks.md @@ -443,7 +443,7 @@ lock inc qword [obj.main::COUNTER::h2889e4585a2a2d30] 正因如此,在进行内核编写的过程中遇到的 `Mutex` 和 `RwLock` 等用于保障内核态数据一致性的锁机制**均是基于自旋锁实现的**,_你可能在之前的实验中遇到过系统因为自旋忙等待导致的异常情况_。 -#### 自旋锁 +### 自旋锁 自旋锁 `SpinLock` 是一种简单的锁机制,它通过不断地检查锁的状态来实现线程的阻塞,直到获取到锁为止。 @@ -482,7 +482,7 @@ unsafe impl Sync for SpinLock {} 在进行循环等待时,可以使用 `core::hint::spin_loop` 提高性能,在 x86_64 架构中,它实际上会编译为 `pause` 指令。 -#### 信号量 +### 信号量 得利于 Rust 良好的底层封装,自旋锁的实现非常简单。但是也存在一定的问题: diff --git a/docs/labs/0x06/index.md b/docs/labs/0x06/index.md index 24d6aad1..66a1f532 100644 --- a/docs/labs/0x06/index.md +++ b/docs/labs/0x06/index.md @@ -1,6 +1,6 @@ # 实验六:硬盘驱动与文件系统 -!!! tip "
 by" +!!! tip "作为一座巨大的图书馆的守护者,你需要确保每一本书都被正确地归类、保护和维护,以便访客在任何时候都能找到他们需要的知识。
 by ChatGLM" ## 实验目的 @@ -23,6 +23,9 @@ 对于本次实验内容,你需要参考学习如下实验资料: +- [文件系统概述](../../wiki/fs.md) +- [ATA 硬盘简介](../../wiki/ata.md) +- [FAT 文件系统](../../wiki/fat.md) ## 实验任务与要求 diff --git a/docs/labs/0x06/tasks.md b/docs/labs/0x06/tasks.md index 549e7a52..3f9b24eb 100644 --- a/docs/labs/0x06/tasks.md +++ b/docs/labs/0x06/tasks.md @@ -1 +1,421 @@ # 实验六:硬盘驱动与文件系统 + +!!! danger "在执行每一条命令前,请你对将要进行的操作进行思考" + + **为了你的数据安全和不必要的麻烦,请谨慎使用 `sudo`,并确保你了解每一条指令的含义。** + + **1. 实验文档给出的命令不需要全部执行** + + **2. 不是所有的命令都可以无条件执行** + + **3. 不要直接复制粘贴命令执行** + +## 合并实验代码 + +!!! tip "如何使用本次参考代码" + + 本次给出的参考代码为**增量补充**,即在上一次实验的基础上进行修改和补充。因此,你需要将本次参考代码与上一次实验的代码进行合并。 + + 合并后的代码并不能直接运行,你需要基于合并后的代码、按照文档进行修改补充,才能逐步实现本次实验的功能。 + +本次实验中提供的代码量较大,但主要部分是类型抽象和相关定义,基本没有函数逻辑,因此不要求理解后开始实验任务,用到某些类型的时候转至定义查询即可。 + +![](../assets/storage.png) + +在所给出的代码中,主要需要补全的内容存放在 `pkg/kernel/src/drivers/ata/bus.rs` 和 `pkg/storage/src/fs/fat16/impls.rs` 中,对应任务为 ATA 磁盘驱动和 FAT 16 文件系统。 + +在 `pkg/storage/src/common` 中,提供了众多有关存储的底层结构: + +- `block.rs`: 提供了数据块的抽象,用于存储数据,内部为指定大小的 `u8` 数组。 +- `device.rs`: 目前只提供了块设备的抽象,提供分块读取数据的接口。 +- `error.rs`: 定义了文件系统、磁盘、文件名可能遇到的一系列错误,并定义了以 `FsError` 为错误类型的 `Result`。 +- `filesystem.rs`: 定义了文件系统的抽象,提供了文件系统的基本操作接口。 +- `io.rs`: 定义了 `Read`、`Write` 和 `Seek` 的行为,不过在本次实验中只需要实现 `Read`。 +- `metadata.rs`:定义了统一的文件元信息,包含文件名、修改时间、大小等信息。 + +同时,有了接口定义了统一的行为之后,可以利用他们来实现具有更丰富功能的结构体: + +- `filehandle.rs`: 定义了文件句柄,它持有一个实现了 `FileIO` trait 的字段,并维护了文件的元数据。 +- `mount.rs`: 定义了挂载点,它持有一个实现了 `Filesystem` trait 的字段,并维护了一个固定的挂载点路径,它会将挂载点路径下的文件操作请求转发给内部的文件系统。 + +在 `pkg/storage/src/partition/mod.rs` 中,定义了 `Partition` 结构体,和 `PartitionTable` trait,用于统一块设备的分区表行为。 + +在其他目录下,是需要同学们实现的 MBR 分区表和 FAT 16 文件系统。 + +在 `pkg/kernel/src/drivers/ata` 中,定义了 ATA 磁盘驱动的相关结构体和接口。 + +在 `pkg/kernel/src/drivers/filesystem` 中,定义了根文件系统的挂载和初始化等操作。 + +!!! warning "实验说明" + + 作为一套相对独立的模块,存储结构、文件系统相关的内容可以被单独作为一个库进行编译实现。这样方便进行代码复用,并且赋予了对其进行独立测试的能力。 + + 同时,本次实验专注于实现**文件系统的只读操作**,重点是如何正确解析一个现实存在的文件系统,从而赋予内核直接从磁盘读取文件的能力。 + + 而文件系统的设计、写入、组织的内容,留作 Lab 8 中的扩展实验进行。 + +## MBR 分区表 + +作为熟悉代码结构的起步内容,我们先来实现 MBR 分区表的解析。 + +MBR(Master Boot Record)是一种磁盘分区表的标准,它位于磁盘的第一个扇区,占用 512 字节。在 MBR 中,有 4 个主分区表项,每个占用 16 字节,用于描述磁盘的分区信息。 + +之所以称为 “Boot Record”,是因为在 MBR 的定义中中还包含了引导程序的代码,在 Legacy BIOS 系统中,计算机会首先加载 MBR 中的引导程序,然后由引导程序加载操作系统。本实验使用 UEFI 进行引导工作,实际上并不会使用 MBR 中的引导程序。 + +MBR 分区表的结构如下,可以参考 [MBR - OSDev](https://osdev.org/MBR) 和 [Master Boot Record - wikipedia](https://en.wikipedia.org/wiki/Master_boot_record): + +
Offset Size (bytes) Description
0x000 440 MBR Bootstrap (flat binary executable code)
0x1B8 4 Optional "Unique Disk ID / Signature"
0x1BC 2 Optional, reserved 0x0000
0x1BE 16 First partition table entry
0x1CE 16 Second partition table entry
0x1DE 16 Third partition table entry
0x1EE 16 Fourth partition table entry
0x1FE 2 (0x55, 0xAA) "Valid bootsector" signature bytes
+ +其中,每个分区表项的结构如下,可以参考 [wikipedia](https://en.wikipedia.org/wiki/Master_boot_record#PTE) 获取更详细的定义: + +
OffsetSize (bytes)Description
0x001Status (bit 7 set = active or bootable)
0x013CHS Address of partition start
0x041Partition type
0x053CHS address of last partition sector
0x084LBA of partition start
0x0C4Number of sectors in partition
+ +在分区表的解析实现中,只需要关心分区表项的解析,不需要关心其他的字段。因此,需要你在 `partition/mbr/mod.rs` 的 `parse` 函数中,根据 MBR 的结构定义,按照对应的偏移量,提取四个 `MbrPartition` 并进行存储。 + +对于分区表项,需要你在 `partition/mbr/entry.rs` 中,补全对应的结构体定义。 + +笔者为大家提供了一个便捷的宏:`define_field`,它的定义可以在 `common/macros.rs` 中找到,并且为各位补有文档注释,以做说明如何使用。 + +同时,这里以 `MbrPartition` 的定义为例子,再做一些解释: + +```rust +impl MbrPartition { + // ... + define_field!(u8, 0x00, status); + // ... +} +``` + +这里的 `define_field!` 宏,接受三个参数,分别是字段的类型、字段的偏移量和字段的名称。它会自动为你生成一个 `status()` 的函数,用于获取字段的值。 + +字段的类型可以是 `u8`、`u16`、`u32`,分别对应 1、2、4 字节的整数;同时还有 `[u8; n]` 的类型,用于表示固定长度的字节数组,同时也会提供一个对应的从 `&[u8]` 转换为 `&str` 的函数。 + +你可以在下方的 `Debug` trait 的实现中看到这些函数的使用,你需要补全其中展示的全部函数,并尝试通过文件附带的单元测试。 + +对于 `0x01-0x03` 和 `0x05-0x07` 两组三字节的内容分别表示了开始和结束的 CHS 地址,包含三组内容:磁头号、扇区号和柱面号,分别占用 8、6 和 10 比特,因此无法使用 `define_field` 进行简单定义,需要你自行实现 `head`、`sector` 和 `cylinder` 所对应的函数,对 `data` 进行解析。 + +对于后续的磁盘访问,更多通过 LBA 字段进行寻址,实际上并不会用到 CHS 的相关内容。 + +!!! tip "运行单元测试" + + 在 Lab 0 中已经简单设计了如何运行单元测试。你可以在 `partition/mbr/entry.rs` 中找到 `tests` 模块,其中包含了测试用例,你可以通过 `cargo test` 来运行它们。 + + 为了能够单独运行 `mbr` 模块的测试,你可以先注释掉 `lib.rs` 中对其他模块的引用,并处理在 `partition` 中相关需要补全的代码。 + + 如果想要在测试时看到测试输出,可以使用 `cargo test -- --nocapture` 运行测试,需要注意的是,你应当在 `pkg/storage` 目录下执行,或使用 `--package ysos_storage` 参数指定包名。 + +## 磁盘驱动 + +在实现了 MBR 分区表解析后,笔者预计你对现有的代码结构已经有了一定的认知。现在,我们来实现 ATA 磁盘驱动,使得内核能够通过它访问“真实”的虚拟磁盘,并读取并解析其中的数据。 + +为了在内核中使用 `storage` 包的内容,需要对 `Cargo.toml` 进行修改,添加引用: + +```toml +[dependencies] +storage = { package = "ysos_storage", path = "../storage" } +``` + +!!! note "明确概念:实验将实现 PATA 的 PIO 模式驱动,参考 [ATA PIO Mode - OSDev](https://wiki.osdev.org/ATA_PIO_Mode)" + +回顾一下之前编写串口驱动的过程,它与即将实现的驱动类似,都是 PIO 来进行数据传输: + +- 根据规范定义端口,使用端口进行读写操作控制外设寄存器 +- 按照规定修改外设寄存器,使得设备按照预期的方式运行 +- 通过数据和状态寄存器,实现数据的发送和接收 +- 通过启用设备的中断,实现异步的数据传输(与轮询方式相对) + +在 [ATA 硬盘简介](../../wiki/ata.md) 中,介绍了 ATA 硬盘的基本工作原理,以及相关概念。 + +在 `kernel/src/drivers/ata/bus.rs` 中,定义了 `AtaBus` 结构体,它扮演了实际与 CPU 进行数据交换的角色,而在 `mod.rs` 中定义的 `AtaDrive` 则扮演了磁盘的抽象。 + +这种设计类似于过往的实现中将 `serial` 与 `uart16550` 分开,不过磁盘会有自己的 `model` 等信息,需要获取并存储在 `AtaDrive` 中。 + +### 发送命令 + +为了与磁盘进行交互,需要向磁盘发送命令,在 `drivers/ata/consts.rs` 中,定义了 `AtaCommand` 枚举,它表示了一系列的命令。 + +在本实验中,你需要实现 28-bit 模式下的 LBA 读写命令,并且还会使用到 `IdentifyDevice` 命令,用于获取磁盘的信息。 + +上述三个命令的调用过程比较类似,因此可以把发送命令并等待设备就绪的过程封装为一个函数,它被定义在 `drivers/ata/bus.rs` 中,可以参考 [x86 28-bit PIO - OSDev](https://wiki.osdev.org/ATA_PIO_Mode#28_bit_PIO) 的内容,这里给出发送命令的过程: + +1. 将当前块的 LBA 偏移分别存入四个寄存器中 +2. 同时使用 `drive` 寄存器选择磁盘 +3. 发送命令 +4. 等待设备就绪,判断是否出错 +5. 等待数据请求就绪 + +28-bit 的 LBA 地址应当按照如下方式存入寄存器,最高四位被放置在 `drive` 寄存器的低四位: + + + + + + + + + + + + + + + + + + + +
28241680
drivelba_highlba_midlba_low
+ +而 `drive` 寄存器的高四位则用来进行磁盘及寻址方式的选择,具体定义如下: + +
Bit Abbreviation Function
0 - 3 In CHS addressing, bits 0 to 3 of the head. In LBA addressing, bits 24 to 27 of the block number.
4 DRV Selects the drive number.
5 1 Always set.
6 LBA Uses CHS addressing if clear or LBA addressing if set.
7 1 Always set.
+ +### 磁盘识别 + +在完成命令发送部分后,尝试补全 `identify_drive` 函数。可以直接调用上文实现好的 `write_command` 函数,根据规范,`block` 参数使用 `0` 进行传递。 + +对于识别出的磁盘,会带有一个 512 字节的数据块,你需要根据 ATA 规范中的定义,参考 [IDE - OSDev](https://wiki.osdev.org/IDE),将这些数据解析为 `AtaDrive` 的相关信息,这里给出部分会用于补全 `drivers/ata/mod.rs` 的信息。 + +```cpp +#define ATA_IDENT_SERIAL 20 // 20 bytes +#define ATA_IDENT_MODEL 54 // 40 bytes +#define ATA_IDENT_MAX_LBA 120 // 4 bytes (unsigned int) +``` + +!!! success "阶段性成果" + + 在完成命令发送,并按照注释补全 `identify_drive` 函数后,你可以自行修改相关函数,测试 `AtaDrive` 的 `open` 函数。 + + 在操作系统初始化结束后,使用 `AtaDrive::open(0, 0)` 获取磁盘信息,为了确保通过编译,可以先忽略 `filesystem.rs`。 + + 如果顺利,你应该会看到 `Drive QEMU HARDDISK QM00001 (504 MiB) opened` 的日志字样。 + +### 读写数据 + +在编写 `write_command` 函数时,你或许会注意到 `sector_count` 寄存器直接被设置为了 1。 + +虽然 ATA 驱动支持一次读取多个扇区,但从抽象和实现角度,本实验还是采取了每次写指令只读一块的方式。由于 ATA 本身的速度就很慢,并且作为实验实现,这样能够更加灵活和便捷。 + +经过上述函数的统一,读写磁盘的操作变得十分简单:在使用 `write_command` 指明需要进行的操作后,从 `data` 寄存器中每次 16 位地与 `buf` 进行数据交互。 + +!!! tip "注意数据的端序" + +在为 `Bus` 实现了 `read_pio` 和 `write_pio` 之后,你还需要在 `drivers/ata/mod.rs` 中补全块设备的实现。 + +`AtaDrive` 通过 `bus` 和 `drive` 字段存储了对应的磁盘信息,`BUSES` 的定义已经为大家定义完善,你需要借助这些内容,补全 `impl BlockDevice for AtaDrive` 中对应的 `FIXME` 的内容。 + +!!! success "阶段性成果" + + 在为 `AtaDrive` 实现了块设备的 trait 后,尝试使用 `MbrTable::parse(drive)` 解析磁盘分区表。 + + 如果顺利,你应当能够正确获取首个分区的相关信息,包括其类型、起始 LBA 和大小。尝试添加日志来记录这些信息,并补充在报告中。 + +## FAT16 文件系统 + +!!! warning "阅读提示" + + 请认真阅读 [FAT 文件系统](../../wiki/fat.md) 的内容,它将解释 FAT 文件系统的结构和实现。 + + 本教程后续内容将重点关注代码层面的实现内容,不再解释相关的专有名词。 + +在 `pkg/storage/src/fs/fat16/mod.rs` 中,定义了 `Fat16Impl` 结构体,它是 FAT16 文件系统的主要抽象。 + +而实现 `FileSystem` trait 的 `Fat16` 结构体则持有一个 `handle: Arc`,这样设计的原因是为了将文件系统的信息可以共享给 `File` 结构体,从而给予 `File` 查询 FAT 表、读写块设备的能力。 + +!!! info "关于实验要求" + + 需要注意的是,虽然保留了足够的灵活性和兼容性,**本实验并不要求实现 FAT16 全部的功能,而是实现能够满足目的的最小化子集**。对于实验目标来说,只需要为文件系统实现只读访问、加载并列出目录的能力即可。其余内容作为不重要的功能,不作实验要求。 + +!!! warning "本实验**不要求**对 FAT32 文件系统进行兼容!" + +### BPB + +首先,你需要在 `fs/fat16/bpb.rs` 中实现 `Fat16Bpb` 中内容的定义,BPB 作为存储整个 FAT 文件系统的关键信息的数据结构,可以让我们了解当前磁盘上文件系统的基本信息。 + +与 MBR 的内容类似,你需要使用 `define_field` 宏来定义 `Fat16Bpb` 的字段,字段的定义请参照 [FAT 文件系统](../../wiki/fat.md) 中的描述,同时根据 `Debug` trait 的内容,确保补全对应的函数。 + +??? quote "一些趣事" + + 在笔者几年前进行实验时,由于 MBR 与 BPB 的尾部 magic number 都是 `0xAA55`,导致了一段时间的概念混淆。 + + 本实验的教程带领大家梳理完成 MBR 和 BPB 的作用和所属后,同学们大概率不会再混淆文件系统的层次结构了。 + +同时,实验为大家准备了两份测试用例,你可以在 `fs/fat16/bpb.rs` 中找到 `tests` 模块,参考 MBR 部分的测试方法,通过 `cargo test` 来运行它们。 + +### DirEntry + +在 `fs/fat16/direntry.rs` 中,你需要实现和补全 `DirEntry` 的内容,它是 FAT16 文件系统中的目录项,用于存储文件的元信息。 + +`parse` 函数接受了一个 `&[u8]` 类型的数据块,你需要根据 FAT 文件系统的规范,将这些数据解析为 `DirEntry` 结构体。 + +与先前的 MBR 和 BPB 不同,这里的 `DirEntry` 并不持有 `data` 数据作为自身的字段,而是通过 `parse` 函数直接解析 `&[u8]`,并返回一个 `DirEntry` 的实例。 + +而对于 `ShortFileName` 类型,你则需要实现从日常使用的文件名到磁盘数据的转化函数,具体来说,你需要实现 `parse` 函数,将一个 `&str` 类型的文件名 `foo.bar` (忽略大小写)转化为 `ShortFileName` 类型,并存储 `FOO BAR`。 + +!!! note "**作为最小实现子集,在本实验中,你不需要考虑长文件名功能的支持。**" + +`DirEntry` 也为大家准备了一份测试用例,通过 `cargo test` 来运行并尝试通过它。 + +### Fat16Impl + +在实现了上述文件系统的数据格式之后,你需要在 `fs/fat16/impls.rs` 中实现你需要的一系列函数,包括但不限于: + +- 将 `cluster: &Cluster` 转换为 `sector` +- 根据当前 `cluster: &Cluster`,利用 FAT 表,获取下一个 `cluster` +- 根据当前文件夹 `dir: &Directory` 信息,获取名字为 `name: &str` 的 `DirEntry` +- 遍历文件夹 `dir: &Directory`,获取其中文件信息 +- 其他你可能需要的帮助函数 + +在实现了一系列函数后,为 `impl FileSystem for Fat16` 补全实现: + +- `Iterator` 可以简单利用 `Vec::into_iter` 作为返回值,不需要考虑懒求值。 +- `FileHandle` 的 `file` 部分直接使用 `fs/fat16/file.rs` 中定义的 `File` 结构体,并使用 `Box` 包装。 + +最后,为 `File` 实现 `Read` trait,需要注意: + +- `cluster` 链需要使用上述函数读取 FAT 表进行获取。 +- `offset` 用于记录当前文件读取到了什么位置,需要实时更新。 +- 一个 `cluster` 中存在多个 `sector`,你需要根据 `bpb` 信息进行读取操作。 +- `buf` 参数是不定长的,你需要考虑文件长度、块长度以及缓冲区长度,来决定什么时候终止读取。 + +除此之外,本部分的实现不作任何要求,阅读并理解给出的 [FAT 文件系统](../../wiki/fat.md) 内容,尝试实现文件系统的功能。 + +同时,由于文件系统的实现相对较为严格,笔者鼓励大家多多查找相关已有实现,参考完善自己的文件系统,下面给出几个可供参考的仓库: + +- [embedded-sdmmc-rs](https://github.com/rust-embedded-community/embedded-sdmmc-rs) +- [rust-fatfs](https://github.com/rafalh/rust-fatfs) + +## 接入操作系统 + +在实现了上述内容后,相信你已经迫不及待想要去进行调试你的文件系统是否能够正确运行了。 + +参考给出的 `kernel/src/drivers/filesystem.rs`,结合你的 `AtaDrive`,将 `Partition` 作为参数,初始化一个 `Fat16` 结构体,并使用 `Mount` 将其存放在 `ROOTFS` 变量中。 + +### 列出目录 + +之后,补全 `ls` 函数,根据 `read_dir` 返回的迭代器,列出并打印文件夹内的文件信息。 + +为了实现的便利,可以定义添加如下的系统调用,专用于**在内核态直接打印文件夹信息**,而不是将这些数据传递给用户态处理: + +```rust +// path: &str (arg0 as *const u8, arg1 as len) +Syscall::ListDir => list_dir(&args), +``` + +同时,补全你的用户态库,接入此系统调用。 + +### 读取文件 + +为了读取一个文件,约定一个用户态程序需要遵循 `open` - `read` - `close` 过程。 + +在 `utils/resources.rs` 中扩展 `Resource` 枚举: + +```rust +pub enum Resource { + File(FileHandle), + // ... +} +``` + +在对 `Resource` 的实现中,可以直接使用 `file.read(buf)` 进行读取,而对于写入操作,由于不做要求,你可以直接忽略。 + +!!! success "阶段性成果" + + 为你的 Shell 添加 `ls` 和 `cat` 指令吧! + + 为了进行一些测试,你可以在系统启动前在 `esp` 目录下放置一些文件,然后在 Shell 中使用 `ls` 和 `cat` 来查看文件信息和内容。 + + 请在报告中展示:一个包含有 `Hello filesystem from !` 的 `/hello.txt` 文件能够被正确读取。 + +## 探索 Linux 文件系统 + +在 Linux 下拥有 “一切皆文件” 的思想,文件系统的设计和实现是 Linux 内核中的一个重要部分。在实现了基本的用于文件访问的文件系统后,通过下列的小实验来接触、理解 Linux 文件系统的设计: + +!!! tip "为了进行以下的内容,你需要准备一个基于 Linux 的操作系统。" + +!!! danger "特权访问提示" + + 下面列出的特殊文件中,部分需要特权才能访问。 + + **请在访问时注意权限问题,进行只读操作,切勿随意修改内容,以免造成数据丢失、系统崩溃。** + +1. procfs + + 在 `/proc` 中,你可以找到一系列的文件和文件夹,探索他们并回答如下问题: + + - 解释 `/proc` 下的数字目录代表什么,其内部存在什么内容? + - `/proc/cpuinfo` 和 `/proc/meminfo` 存储了哪些信息? + - `/proc/loadavg` 和 `/proc/uptime` 存储了哪些信息? + - 尝试读取 `/proc/interrupts` 文件,你能够从中获取到什么信息? + - 尝试读取 `/proc/self/status` 文件,你能够从中获取到什么信息? + - 尝试读取 `/proc/self/smaps` 文件,你能够从中获取到什么信息? + - 结合搜索,回答 `echo 1 > /proc/sys/net/ipv4/ip_forward` 有什么用?尝试据此命令,从系统调用角度,解释 “一切皆文件” 的优势。 + +2. devfs + + Linux 将设备也作为“文件”,默认挂载于 `/dev` 目录下,探索他们并回答如下问题: + + - `/dev/null`、`/dev/zero`、`/dev/random` 和 `/dev/urandom` 分别有什么作用? + - 尝试运行 `head /dev/kmsg` 并观察输出,结合搜索引擎,解释这一文件的作用。 + - `/dev/sdX` 和 `/dev/sdX1` (X 为一个字母,1 为数字)是什么?有什么区别?如果你正在使用的 Linux 系统中不存在这样的文件,请找到功能类似的文件,并解释。 + - `/dev/ttyX`、`/dev/loopX`、`/dev/srX` 分别代表什么设备? + - 列出 `/dev/disk` 下的目录,尝试列出其中的“软连接”,这样的设计有什么好处? + - 尝试运行 `lsblk` 命令,根据你的输出,解释其中的内容。 + +3. tmpfs + + 在 Linux 中 `/dev/shm`、`/run` 或者 `/var/run` 目录下,存储了一个特殊的文件系统,它是一个内存文件系统,探索它并回答如下问题: + + - 列出这些目录,尝试找到扩展名为 `pid` 的文件。应用程序如何利用它们确保**某个程序只运行一个实例**? + - 列出这些目录,尝试找到扩展名为 `lock` 的文件。应用程序如何利用它们确保**某个资源只被一个程序访问**? + - 列出这些目录,尝试找到扩展名为 `sock` 或 `socket` 的文件。应用程序如何利用它们实现**进程间通信**? + - `tmpfs` 的存在对于操作系统有什么作用?尝试从性能、安全性、系统稳定性几方面进行回答。 + +4. 在完全手动安装一个 Linux 操作系统时,我们常常会将待安装的磁盘(分区)格式化后,使用 `mount` 挂载于 `/mnt` 目录下。之后,可以使用 `chroot` 切换根目录,在“新的操作系统”中进行安装后期的工作。 + + 然而在 `chroot /mnt` 之前,还需要进行一些额外的挂载操作: + + ```bash + mount proc /mnt/proc -t proc -o nosuid,noexec,nodev + mount sys /mnt/sys -t sysfs -o nosuid,noexec,nodev,ro + mount udev /mnt/dev -t devtmpfs -o mode=0755,nosuid + ... + ``` + + 尝试解释上述举例的的挂载命令,思考为什么需要这样的挂载操作?如果不进行这些操作,在 `chroot` 之后会失去哪些能力? + +## 思考题 + +1. 为什么在 `pkg/storage/lib.rs` 中声明了 `#![cfg_attr(not(test), no_std)]`,它有什么作用?哪些因素导致了 `kernel` 中进行单元测试是一个相对困难的事情? + +2. 留意 `MbrTable` 的类型声明,为什么需要泛型参数 `T` 满足 `BlockDevice + Clone`?为什么需要 `PhantomData` 作为 `MbrTable` 的成员?在 `PartitionTable` trait 中,为什么需要 `Self: Sized` 约束? + +3. `AtaDrive` 为了实现 `MbrTable`,如何保证了自身可以实现 `Clone`?对于分离 `AtaBus` 和 `AtaDrive` 的实现,你认为这样的设计有什么好处? + +4. 结合本次实验中的抽象和代码框架,简单解释和讨论如下写法的异同: + + 1. 函数声明: + + - `fn f(f: T) -> usize` + - `fn f(f: impl Foo) -> usize` + - `fn f(f: &dyn Foo) -> usize` + + 2. 结构体声明: + + - `struct S { f: T }` + - `struct S { f: Box }` + +5. 文件系统硬链接和软链接的区别是什么?Windows 中的 “快捷方式” 和 Linux 中的软链接有什么异同? + +6. 日志文件系统(如 NTFS)与传统的非日志文件系统(如 FAT)在设计和实现上有哪些不同?在系统异常崩溃后,它的恢复机制、恢复速度有什么区别? + +## 加分项 + +1. 😋 你的操作系统拥有了直接读取文件系统的能力,不妨将加载用户态应用的工作从 bootloader 手中接过: + + - 重新修改 `spawn` 函数的实现,接受一个文件路径。 + - 使用 `read_all` 加载对应的文件。 + - 将文件内容传入 `elf_spawn`。 + - 在操作系统初始化后,使用文件路径生成 Shell 程序。 + - 修改对应的系统调用,将 `Spawn` 调用的参数从应用名称改为路径。 + - 赋予你的 Shell 从磁盘启动用户程序的能力! diff --git a/docs/labs/0x07/index.md b/docs/labs/0x07/index.md index 89b19c77..a7d04eae 100644 --- a/docs/labs/0x07/index.md +++ b/docs/labs/0x07/index.md @@ -7,7 +7,7 @@ 1. 实现帧分配器的内存回收,操作系统的内存统计。 2. 实现操作系统栈的自动增长。 -3. 尝试实现 mmap 系统调用,实现用户态的内存管理算法。 +3. 尝试实现简单的 mmap 系统调用,实现用户态程序的整页内存的分配。 ## 实验基础知识 diff --git a/docs/labs/0x08/index.md b/docs/labs/0x08/index.md index 31a7e932..5d4fd315 100644 --- a/docs/labs/0x08/index.md +++ b/docs/labs/0x08/index.md @@ -1,4 +1,126 @@ # 实验八:扩展实验 -!!! tip "
 by" +!!! tip "海阔凭鱼跃,天高任鸟飞。
 ——《古今贤文》" +## 实验任务与要求 + +首先,祝贺你已经顺利完成了前面的实验,你已经拥有了一个基本的操作系统内核,它可以在 QEMU 中运行,并且可以通过串口输出进行交互。 + +它有自己的进程管理机制,可以从磁盘中加载用户程序进行执行;它有自己的同步互斥机制,可以让多个线程安全地访问共享资源;它有自己的内存管理机制,可以在内核态和用户态之间进行内存的分配和释放。 + +在这个实验中,你需要在这个基础上,**自主实现一些更加有趣的功能**,例如图形输出、文件系统、内存分配、块设备缓存层等。 + +请从下列任务中,**选择一到两个目标进行实现**: + +### VGA 显示输出 + +串口输出只是最基本的交互方式,尝试在 bootloader 中,利用 `get_handle_for_protocol::` 获取到 VGA 显示的模式、分辨率、缓冲区地址等信息。 + +之后通过利用 `embedded-graphics` 等库,实现一个简单的图形输出驱动,赋予操作系统绘制图形的能力,之后实现一个简单的 Shell 显示,并激活键盘输入的驱动,通过和串口启动共享缓冲区的方式,响应键盘输入。 + +#### 实现目标 + +1. 在 bootloader 中,获取图形输出的相关信息,并传递给内核。 +2. 实现一个简单的图形输出驱动,支持基本的 VGA 图形绘制操作。 +3. 利用 `embedded-graphics` 实现字符渲染。 +4. 为 VGA 显示实现一个 Shell 输出,使其能够输出字符、清屏等,并将其对接到合适的日志输出。 + +#### 加分项 + +1. 利用键盘输入中断,为 QEMU 的 GUI 界面实现输入输出。 +2. 尝试将 Shell 部分限制在屏幕的下半部分,并在上半部分实现一些图像的绘制。作为一个例子,你可以利用 `sleep` 等方式,实现一个不断绘制转动的钟表的进程,并让它作为一个后台进程运行。 + +### 可读写的临时文件系统 + +根据现有的其他 OS 实验中的文件系统设计、或参考现有的文件系统设计,结合你学过的算法、组织数据的方式,实现一个简单的文件系统的驱动。 + +可以是目录结构文件系统(例如参考 FAT32),可以是日志文件系统(例如参考 ext4、NTFS)。实现之后利用帧分配器在操作系统初始化分配一段内存空间,将其作为块设备,使用你的文件系统对其进行格式化、挂载、读写等操作。为了更好的实现你可能需要适当增大启动 OS 的内存量。 + +#### 实现目标 + +1. 将启动目录挂载至 `/boot` 目录下。 +2. 将临时文件系统挂载至 `/tmp` 目录下。 +3. 创建 `/tmp/mydir` 目录。 +4. 创建 `/tmp/mydir/hello.txt` 文件。 +5. 向 `/tmp/mydir/hello.txt` 文件写入一段字符序列,包含你的学号。 +6. 读取 `/tmp/mydir/hello.txt` 文件,将其中的字符序列打印到屏幕上。 + +#### 加分项 + +1. 尝试实现文件系统的硬链接,并测试读写操作。 +2. 修改 QEMU 参数,挂载一块虚拟磁盘,尝试实现文件的持久化。 + +### 内存管理算法 + +在上次实验实现了内存页面的分配和释放后,用户态有了自己的能力去管理自己的页面,但是其实际的动态内存分配还是依赖于内核提供的服务。 + +在这个实验目标中,你可以尝试实现一些内存管理算法,例如 Buddy 算法、Slab 算法等,将其作为内存分配器,为用户态提供更加灵活的内存分配服务。 + +不过,在这一目标中,你大概率需要一个链表,你可以找一些现成的实现,或者选择完全的自己实现。 + +#### 实现目标 + +1. 在 `pkg` 下添加一个新的包,用于实现能够测试的内存分配器。 +2. 参考 `storage` 包进行测试配置,并配置好 `no_std` 等属性。 +3. 在其中实现你的内存管理算法,参考 `LockedHeap` 的内存初始化方式,管理一段内存。 +4. 编写测试程序,并测试你的内存分配器能否正确分配内存。 + +#### 加分项 + +1. 成功利用 `mmap` 和你自己实现的内存分配器,实现用户态的内存管理。 +2. 尝试让你的内存分配器支持调用 `mmap` 进行扩容。 + +!!! tip "将你的内存分配器作为 `static` 变量在线程间共享使用有助于避免线程导致的内存错误。" + +### 块设备的缓存层 + +在 `storage` 包中,基于目前已有的实现,实现一个块设备的缓存层。 + +这里给出一个缓存设备结构体的设计参考: + +```rust +pub struct CachedDevice +where + B: BlockTrait, + C: CacheManager, +{ + cache: C, + device: Arc>, +} +``` + +其中,`CacheManager` trait 定义缓存层的缓存管理器,在预期的实现中,你并不需要在这里实现具体的缓存算法和数据结构,而将其留在 `kernel` 中实现。 + +#### 实现目标 + +1. 对设备缓存层、缓存管理器、缓存块进行抽象,并进行泛型设计。 +2. 缓存管理器提供缓存块的获取、存储能力。 +3. 缓存块实现脏数据标记、缓存块的读写,并为自身实现 `Drop` 时的自动写回。 +4. 为设备缓存层实现 `BlockDevice` trait。 +5. 在内核中定义实际的缓存结构体,为它实现缓存管理器的相关功能。 +6. 在最后的实现中,你应当能够将缓存层作为 `Fat16` 的 `inner`。 + +#### 加分项 + +1. 向操作系统暴露缓存的使用情况,并在系统状态中进行展示。 +2. 验证缓存是否能带来一定的性能提升,设计相关测试并记录输出。 + +### 多核进程调度 + +在之前的实现中,进程只会在同一个核心上被调度执行,而在实际的多核系统中,多个核心可以并行地执行多个进程。 + +在这个目标中,你需要实现一个简单的多核调度器,使得内核能够在多个核心上调度多个进程。 + +!!! note "实现**不要求性能**,结合能够找到的资料和相关理论知识,能够验证多核运行就是成功。" + +#### 实现目标 + +1. 修改 `apic` 初始化部分,利用 `cpuid` 使得它能够在多核系统中正确初始化多个 LAPIC。 +2. 初始化部分建议查阅文档,并参考其他现有的实现。 +3. 尝试实现操作系统的多核调度,并进行适当的日志显示。 +4. 尝试在用户态验证,并输出运行的核心序号、进程 ID 等。 + +#### 加分项 + +1. 尝试实现进程亲和性,使得进程能够在特定的核心上运行。 +2. 实现多核多队列模型,或尝试实现任一负载均衡算法(二选一)。 diff --git a/docs/labs/assets/storage.png b/docs/labs/assets/storage.png new file mode 100644 index 0000000000000000000000000000000000000000..2e58d08ee14b1ecf0e8bc69cc45d023e8660958c GIT binary patch literal 211420 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%0AKOT=88DcEdq{Q-O~|2Hjql*{ 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%0D7)5N&zs0vPA?jb8w6 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 UoBsf+aeMpf%G$7MrKjQl2mjWf>i_@% literal 0 HcmV?d00001 diff --git a/docs/wiki/assets/fat/fat-sector.png b/docs/wiki/assets/fat/fat-sector.png new file mode 100644 index 0000000000000000000000000000000000000000..9404e7cb1337a1132c6807576634c987aafc3d59 GIT binary patch literal 91156 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�qpaq1gUgtm6~>&C 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 literal 0 HcmV?d00001 diff --git a/docs/wiki/assets/fat/fat-structure.png b/docs/wiki/assets/fat/fat-structure.png new file mode 100644 index 0000000000000000000000000000000000000000..bf894ea8b7ab57883367fa42f5e40bf17926fdf1 GIT binary patch literal 54022 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 + +在文件系统组织文件的时候,其实际上就是在建立索引文件的数据结构,由于文件是由两部分构成的,文件系统中也就存在着两种主要的数据结构,分别用来索引文件的这两个组成部分。 + +其中一个数据结构用来索引文件的信息,这部分数据结构一般呈现树形的结构,文件系统中的文件目录就是由这个数据结构所维护的,树中每个节点都存储着一个文件或是目录的信息。 + +```text +root/ + ├── system/ + │ └── kernel.elf + └── home/ + ├── main.cpp + └── folder/ + ├── boo/ + ├── baz + └── bar/ +``` + +另一个数据结构则用于通过文件的信息来索引文件的数据,由于一个文件可能跨越数个甚至数十、数百个扇区,由于文件时时刻刻都可能会被更改,所以没有办法预先给文件分配一段固定的、连续的、大小适当的空间,因此文件的数据往往分散在磁盘的各个位置,这时就需要一个数据结构来将这些游离的数据块串接起来。 + +说到这里,可能大家就已经能猜到,这部分数据结构一般以链表的形式出现。每一个文件块都对应着一个下一文件块的位置信息,而第一个文件块的位置信息则存储于文件的信息中。 + +下图表示了一个文件系统磁盘中可能的样子: + +- `#0` 标号的内存空间对应着系统的根目录 `/` 节点,其内部有两个有效的文件信息,分别是 `system` 和 `home`,均为目录类别。 +- `system` 首文件块指向 `#8`,并且 `#8` 为其最后一个文件块,因此 `#8` 实际上就对应着 `/system/` 节点,其中存储了 `kernel.elf` 一个文件的信息。 +- 对于 `home`,首文件块指向 `#14`,其下一个文件块为 `#16`,并且是最后一个文件块,因此 `#14`, `#16` 共同构成 `/home/` 节点,在这个节点中存储了两个有效文件信息,分别是 `boo.baz` 和 `bar`,分别是文件和目录。 +- `kernel.elf` 首文件块为 `#4`,`#4` 下一个文件块为 `#6`,`#6` 为最后一个文件块,因此 `kernel.elf` 对应的文件数据为 `#4`, `#6` 上的数据。 +- `boo.baz` 首文件块为 `#10`,后续文件块依次为 `#12`、`#5`。因此 `#10`, `#12`, `#5` 共同构成 `boo.baz` 文件的数据 +- `bar` 首文件块指向 `#18`,后续文件块为 `#11`,因此 `#18`, `#11` 共同构成了目录树中的 `/home/bar/` 节点的子树信息 + +directory-structure + +由上图可以看出,目录树的遍历方式是要与数据结构中树的遍历方式有很大不同的。每一个节点实际上都对应着一个存储着其子节点的文件的信息的数组,通过这个数组,可以获得子节点对应文件的首块信息,再依据链表就能够获得全部的文件数据。只有当取得了全部的文件数据,才可以进入下一层的节点。 + +简单来说,就是在 `/` 目录下,我们只能得到 `system/` 和 `home/` 的信息,但是我们不能从这些信息中直接得到 `system/` 下或是 `home/` 下有什么文件,除非我们把它们的数据完整地读取出来。 + +而在一般的数据结构中,对于根节点 `root`,我们只需要访问 `child = root->children[0]` 就可以获得整个子节点,得到的 `child` 就包含了其所有的子节点数据,而不需要额外的加载操作。 + +现在,假设我们需要访问 `/system/kernel.elf` 文件,那么就需要: + +- 首先从树的根部开始,找到类型为目录,名称为 `system` 的信息。 +- 从信息中读取出目录数据的第一个块 `#8`,并根据链表中的信息读入整个目录,由于这里只有一个块,所以就读入 `#8`。 +- 在目录的数据中找到类型为文件,名称为 `kernel.elf` 的信息。 +- 从信息中读出文件数据的第一个块 `#4`,并根据链表读入 `#6`,得到整个文件。 + +为了提高文件读写的速度,系统一般会维护一个打开的文件表 (Open-file table) 用于维护所有打开的文件的信息,所以一般来说,当打开一个文件的时候,除了会将它的全部数据就被读取到内存中,还会将其信息添加到打开文件表中,后续所有的增删改都只会对内存中的数据起作用,直到文件关闭时才再次写回磁盘。这样就避免了每次读写过程中对文件数据的定位以及读取。 + +### FAT 文件系统 + +导读中的内容只是对文件系统的一种简单的概述,不同的文件系统会有不同的组织文件的方式,但核心总还是离不开怎样组织文件的数据以及如何通过文件的信息索引到文件的数据,区别大抵是数据结构的差异以及具体实现上的差异。 + +在上世纪出现的 FAT 中,由于软盘随机读取的性能奇差,所以如果像上文中图片绘制的那样,在文件数据块的末尾添加上下一个文件块的信息,糟糕的问题就会出现:如果尝试在文件尾部添加些什么,那需要遍历之前所有的文件块才能知道最后一个文件块在哪个位置! + +为此,工程师们将所有文件块中关于下一个块的信息独立出来,存放在磁盘中的一个连续的空间内,这个空间也被称作文件分配表 (File Allocation Table),也就是 FAT 实际的意义。这样,只需要提前把这一部分空间读取到内存中,就可以很快地定位到文件任意个块的信息了。 + +fat-sector + +同时,这样做还有一个好处,一个 512 字节或是其整数倍的块需要分配几个字节给下一个块的块号,导致每个文件块实际数据大小不是 2 的幂,现在由于将这部分信息独立出来,所以每一个文件块都是完整的 512 字节或是 512 字节的倍数。 + +但是,如果每个数据块只占据 1 个扇区的话,对于大磁盘来说,需要的块号还是太多了,于是工程师就提出了簇 (cluster) 的概念,一簇由许多个扇区组成,而这个簇就相当于前文中的数据块。 + +这样,在 FAT 中存储簇号就大大减少了 FAT 的大小,虽然增加了碎片,但提升了文件读写的效率。 + +## 文件系统的实现 + +在了解了文件系统是怎样组织和存储文件之后,对于如何从文件系统中读取文件应该有了思路。 + +但是细细一想又会发现很多问题,例如:根目录存储在磁盘的哪个位置、如何知道一个簇有多大、文件名是如何存储的、怎样才代表当前的簇是文件的最后一个簇等等 + +这便是因为文件系统很多具体的细节还没有落实,程序还无法从现有的文件系统中获得需要的数据。而这就是本节的目的,通过阅读 [微软关于 FAT 文件系统的规范文档](https://academy.cba.mit.edu/classes/networking_communications/SD/FAT.pdf),对 FAT 文件系统进行抽象,并且提供接口来解决上面提到的种种问题。 + +### 定义与注解 + +第一章大体可以略过,其中较为重要的概念如下: + +- 簇 (cluster): 文件分配的单元 (A unit of allocation),其中包括了一组逻辑连续的扇区。卷内的每个簇都可以通过一个簇号 N 指代 (referred to)。给任何一个文件所分配的全部空间的大小 _(All allocation for a file)_ 必须是簇的整数倍。 +- 分区 (partition): 在一个卷内的一系列扇区 +- 卷 (volume): 一个逻辑上的连续的扇区地址空间 + +### FAT 卷结构 + +第二章主要介绍了 FAT 格式卷的结构,除了上文中提到的用来存储下一个簇信息的 FAT 区域 (FAT Region) 以及存储文件数据的区域 (File and Directory Data Region) ,还包括了一个保留区 (Reserved Region) 和一个根目录区 (Root Directory Region) 。 + +一个 FAT 格式的卷结构大概长得就像下面这样 + +fat-structure + +!!! tip "小端模式" + + 由于所有的 FAT 文件系统都是为 IBM PC 机器的架构所设计,因此其数据结构在硬盘上的存储方式都是小端模式。 + +### BPB + +在 FAT 格式的卷的首扇区,有一个叫做 BPB (Bios Parameter Block) 的数据结构,其主要存储了关于当前卷上 FAT 文件系统的关键信息,包括了文件系统各个区域的首扇区号,以及簇大小等等。 + +!!! note "阅读提示" + + 首扇区并不是所有的内容都属于 BPB 结构体的范畴,在后续的介绍中,以 `BPB_` 开头的域才是属于 BPB 结构体的域。 + +对于 FAT12/16 和 FAT32,它们的 BPB 结构在首 36 字节上完全一致: + +
域名称偏移大小描述限制
BS_jmpBoot03跳转到启动代码处执行的指令
由于实验中启动代码位于MBR,不会从这里进行启动,因此可以不用关心这个域实际的内容
一般为0x90**EB或是0x****E9
BS_OEMName38OEM厂商的名称,同样与实验无关,不需要关心-
BPB_BytsPerSec112每个扇区的字节数只能是512、1024、2048或4096
BPB_SecPerClus131每个簇的扇区数量只能是1、2、4、8、16、32、64和128
BPB_RsvdSecCnt142保留区域的扇区数量
可以用来计算FAT区域的首扇区位置
不能为0,可以为任意非0值
可以用来将将数据区域与簇大小对齐(使数据区域的起始偏移位于簇大小的整数倍处)
BPB_NumFATs161FAT表数量一般为2,也可以为1
BPB_RootEntCnt172根目录中的条目数
指根目录中包含的所有的条目数量,包括有效的、空的和无效的条目
可以用来计算根目录区所占用的字节数
FAT32: 必须为0
FAT12/16: 必须满足 32 * BPB_RootEntCnt % 2 == 0
BPB_TotSec1619216位长度卷的总扇区数
对于FAT32和更大容量的存储设备有额外的BPB_TotSec32域
应当是为了维持BPB结构的一致性而仍然保留了这个域
FAT32: 必须位0
FAT12/16: 如果总扇区数小于0x10000(也就是能用16位表示)则使用此域表示,否则也使用BPB_TotSec32域
BPB_Media211似乎是设备的类型
与实验无关,所以可以不用特别关心
合法取值包括0xF00xF80xF90xFA0xFB0xFC0xFD0xFE0xFF
本地磁盘(不可移动)的规定值为0xF8
可移动磁盘的往往使用0xF0
BPB_FATSz16222单个FAT表占用的扇区数
只用于FAT12/16格式的文件系统
FAT32: 必须为0
FAT12/16: 正整数值
BPB_SecPerTrk242每个扇区的磁道数
0x13中断相关
只与具有物理结构(如磁道、磁盘等)并且对0x13中断可见的存储介质有关
与实验无关,可以不用关心
-
BPB_NumHeads262磁头数量
同样与0x13中断相关,实验不会使用,所以可以不用关心
-
BPB_HiddSec284分区前隐藏的扇区数
在文档中描述这个域为同样只与对0x13中断可见的存储介质有关,但在实验过程中发现对于一个多分区的磁盘,这个域对应了分区首扇区在整个磁盘中的扇区号,例如首扇区位于磁盘2048扇区(从0开始计算分区号)的分区,其 BPB_HiddSec 域值就为2048
-
BPB_TotSec3232432位长度卷的总扇区数
用来描述FAT32卷中的总扇区数或是扇区数多于0x10000的FAT12/16卷中的总扇区数
FAT32: 必须为非零整数值
FAT12/16: 如果扇区数大于0x10000,则为扇区数,否则必须为0
+ +从第 37 字节开始,FAT12 和 FAT16 卷上的 BPB 结构如下: + +
域名称偏移大小描述限制
BS_DrvNum361用于0x13中断的驱动器号,可以不用关心应当设置为0x80或是0x00
BS_Reserved1371保留位必须为0
BS_BootSig381用来检验启动扇区的完整性的签名,可以不用关心如果 BS_VolID、BS_VolLab 和 BS_FilSysType 三个域都存在有效的值 (present),则置为0x29
BS_VolID394卷的序列号,可以不用关心-
BS_VolLab4311卷标,可以不用关心
在文档中,要求与根目录下的卷标描述文件保持内容一致,但实际上在测试中往往卷标描述文件中存储的是真实的卷标而这个域的内容仍为缺省值"No NAME"
缺省值为"NO NAME"
BS_FilSysType548用来描述文件系统类型,但不能用来作为判断文件系统类型的依据“FAT12”、“FAT16"或是"FAT32”
-62448空余,置零必须为0
Signature_word5102校验位设置为0xAA55
-512*如果 BPB_BytsPerSec > 512 则存在此域,全部置零必须为0
+ +文档在接下来的部分介绍了如何初始化一个 FAT 卷,由于目前只需要读取 FAT 卷,所以可以忽略章节 3.4。 + +在 3.5 章节中文档就介绍了如何在装载卷时判断 FAT 的类型,其中关键的判断算法为 + +```cpp +if(CountofClusters < 4085) { + /* Volume is FAT12 */ +} else if(CountofClusters < 65525) { + /* Volume is FAT16 */ +} else { + /* Volume is FAT32 */ +} +``` + +也就是说,FAT 的类型只与簇的数量有关,而与磁盘的大小、扇区数量,包括 BPB 中的 BPB_FilSysType 域都无关,其中 + +- FAT12 不能有超过 4084 个簇 +- FAT16 不能有超过 65524 个簇,也不能少于 4085 个簇 + +### FAT + +!!! note "前文回顾" + + 如果一个文件大小超过了一个簇,那么用来存储它数据的簇可能在磁盘上并不连续,为了能够将这些分散的簇连起来,文件系统一般会为每一个簇对应一个域用来保存关于它下一个簇的信息,从而就可以如同链表那样将整个文件串联在一起。 + + 在 FAT 中,这些域被集中存储在磁盘的一段空间内,这一段空间就叫做 FAT (File Allocation Table)。 + +对于不同的 FAT 格式,FAT 表中每个条目 (entry) 的大小不同: + +- 对于 FAT12 而言,每个条目长 12 位 +- 对于 FAT16 而言,每个条目长 16 位 +- 对于 FAT32 而言,每个条目长 32 位 + +这时候就发现了,原来 FAT 后面的数字就是指代的 FAT 表中每个条目的长度,因此对于我们需要实现的 FAT16,每个条目长 16 位 + +FAT 条目中可能的存储值及其含义如下,其中 MAX 指代磁盘中合法的最大的簇号: + +
FAT16FAT32含义
0x00000x0000000当前条目所对应的簇空闲
0x0002 ~ MAX0x0000002 ~ MAX当前条目所对应的簇存在内容,并且条目的值就是下一个簇的簇号
(MAX + 1) ~ 0xFFF6(MAX + 1) ~ 0xFFFFFF6保留的值,不能够使用
0xFFF70xFFFFFF7当前条目所对应的簇是损坏的簇
0xFFF8 ~ 0xFFFE0xFFFFFF8 ~ 0xFFFFFFE保留的值,有时也作为指示当前条目所对应的簇是文件的最后一个簇
0xFFFF0xFFFFFFF当前条目所对应的簇是文件的最后一个簇
+ +!!! danger "FAT 表首两个条目保留" + + 注意到上表中有效的 FAT 条目值从 2 开始,因为 FAT 表中的前两个条目是被保留的。 + + 这也就导致了簇号和实际的簇产生了 2 的偏移:对于任意簇号 `N`,当在磁盘上访问实际的簇时,应当访问第 `N-2` 个簇 + +FAT 表中第一个保留的条目 `FAT [0]` 包含了 `BPB_Media` 域中的内容,其他的位被设置为 `1`,对于 FAT32 高四位同样不进行更改。 + +例如,如果 `BPB_Media` 的值为 `0xF8`,那么 + +- 对于 FAT12,值为 `0xFF8` +- 对于 FAT16,值为 `0xFFF8` +- 对于 FAT32,值为 `0xFFFFFF8` + +第二个保留的条目 `FAT [1]` 在格式化时会被格式化工具赋一个 EOC 值,具体用处不明。 + +对于 FAT12 而言,由于空间有限,所以并没有额外的标记位;对于 FAT16 和 FAT32 而言,Windows 系统可能会使用高两位作为脏卷的标记位,其中最高位为 `ClnShutBit`,如果该位置位,则意味着上一次该设备没有被正常卸载,可能需要检查文件系统的完整性;次高位为 `HrdErrBit`,如果该位置位,则标明读写功能正常,如果置 `0` 则代表遇到了 IO 错误,提示一些磁盘扇区可能发生了错误。 + +### 目录 + +到目前为止,BPB 以及 FAT 表我们都已经清楚了,这样我们可以顺利地找到根目录所在的区域并且读取根目录所包含的所有数据了: + +对于 FAT16,根据保留区的大小以及 FAT 的大小可以计算出根目录区的首扇区位置,根据根目录区首扇区位置和根目录区大小就可以读取全部根目录区数据 + +实际上,目录同样是一个由目录条目构成的数组,其中每一个目录条目都是一个 32 字节长度的数据结构,而正是这个数据结构中存储的数据描述了一个目录中存储的文件或是一个子目录的详细信息,例如它的创建日期和时间、名称或是最重要的首簇簇号等等。它的完整结构如下: + +
域名称偏移大小描述
DIR_Name011短名称格式的文件名
DIR_Attr111文件的属性标记
DIR_NTRes121保留位,必须为0
DIR_CrtTimeTenth131文件创建时间,单位为10ms
DIR_CrtTime142文件创建时间
DIR_CrtDate162文件创建日期
DIR_LstAccDate182文件最近访问日期
DIR_FstClusHI202首簇簇号高16位
DIR_WrtTime222文件修改时间
DIR_WrtDate242文件修改日期
DIR_FstClusLO262首簇簇号低16位
DIR_FileSize284文件的大小,单位为字节
+ +其中提到了一些概念,如短名称、文件属性以及一些仍然不明确的结构,如日期和时间的表示格式,如果继续阅读,则会发现文档也一一对它们作出了解释。 + +短名称为一种表示文件名称的格式,其 11 字节长度的域被分为 8 字节和 3 字节的空间,其中 11 字节用来存储文件不含扩展名的部分,而后 3 字节用来存储文件的扩展名,在存储名字的时候,所有的字母都会以大写字母的形式存储。 + +同时,短名称的存储方式会在文件名长度小于最大长度时在其后面填补空格,例如 `FOO.BAR` 在存储时由于文件名为三字节,所以会在其后填补 5 个空格,存储为 `FOO BAR` + +除此之外,短名称还遵循以下规则: + +- 若首字节为 `0xE5` 则代表当前条目为空 +- 若首字节为 `0x00` 则同样代表当前条目为空,并且还代表当前条目之后的所有条目都为空 +- 首字节不能为空格,也就是说文件名不能以空格开头 +- 目录中不能出现名称相同的两个条目 +- 不能出现小写字母 +- ASCII 值小于 `0x20` 的字符以及 `0x22`、`0x2A`、`0x2B`、`0x2C`、`0x2E`、`0x2F`、`0x3A`、`0x3B`、`0x3C`、`0x3D`、`0x3E`、`0x3F`、`0x5B`、`0x5C`、`0x5D`、`0x7C` + +然而,如果文件名称很长的话,短名称就显得不太够用了,所以 FAT 还额外提出了长名称的解决方案,并且称存储短名称的条目为 `SFNEntry`,长名称的目录为 `LFNEntry`。 + +在长名称的解决方案中,一个文件会对应一个短名称的条目和一系列长名称的条目,短名称条目存储文件名称的前数个字符和扩展名,而长名称则存储文件的全部名称。 + +在目录中,一个文件对应的长名称条目和短名称条目连续存储,其中地址从低到高依次存储: + +- 第 N 个长名称条目 +- 第 N-1 个长名称条目 +- … +- 第 1 个长名称条目 +- 短名称条目 + +但是目前短名称足够使用了,所以不妨暂时跳过长名称的进一步介绍和实现 + +文件的属性使用按位枚举的方式表示,其中的六个二进制位分别如下: + +
属性描述
ATTR_READ_ONLY1 << 0文件只读
ATTR_HIDDEN1 << 1文件隐藏
除非用户或程序显式声明要求访问隐藏的文件,否则不应当在文件列表中被列出
ATTR_SYSTEM1 << 2文件为系统文件
除非用户或程序显式声明要求访问系统文件,否则不应当在文件列表中被列出
ATTR_VOLUME_ID1 << 3文件用来描述卷标
ATTR_DIRECTORY1 << 4文件实际上是一个目录
ATTR_ARCHIVE1 << 5当文件被创建、重命名或修改时置位,指示文件是否被修改过
+ +!!! danger "卷标文件只能出现在根目录" + + 卷标文件为根目录中描述卷标的特殊文件,其 DIR_NAME 域全部用来存储卷标,同时属性域为 0x8,也即 ATTR_VOLUME_ID,其他部分均为 0。 + +文件的日期和时间有特殊的存储格式 + +其中文件的日期包括三个部分: + +- `[4:0]`:日(从 1 至 31) +- `[8:5]`:月(从 1 至 12) +- `[9]`:从 1980 年起的年份偏移(从 0 至 127) + +文件的时间同样也包括三个部分: + +- `[4:0]`:从零起经过的 2s 间隔数(从 0 至 29) +- `[10:5]`:分(从 0 至 59) +- `[15:11]`:时(从 0 至 23) + +可以看到,秒的精度为 2s,这也就引出了 CrtTimeTenth 这个域,其精度为 10ms,范围从 0 至 199,正好填补了 2s 之间的空缺,使得精度提高到 10ms。 + +## 参考资料 + +- [FAT - OSDev](https://osdev.org/FAT) +- [File Allocation Table - Wikipedia](https://en.wikipedia.org/wiki/File_Allocation_Table) +- [南京大学操作系统课程中关于 FAT 和 UNIX 文件系统知识的讲解 - Bilibili](https://www.bilibili.com/video/BV1oZ4y1t7ce) diff --git a/docs/wiki/fs.md b/docs/wiki/fs.md new file mode 100644 index 00000000..4167c29e --- /dev/null +++ b/docs/wiki/fs.md @@ -0,0 +1,105 @@ +# 文件系统概述 + + + +## 导读 + +文件系统(File System)为操作系统提供了持久存储设备上高效管理信息的能力:其为上层应用抽象出统一的设备访问接口,屏蔽不同底层块设备的操作细节。文件系统强大而复杂,横跨计算机不同存储体系,涵盖了逻辑设计与物理实现的解耦与联系。因此,本章 Wiki 将从概念出发,逐步介绍文件系统的前世今生。 + +!!! note "持久存储设备" + + 持久存储设备(Persistent Storage)是指计算机中用于持久化存储数据的设备。 + + 有别于易失性存储设备“内存”,持久存储设备的数据**不会因为掉电而丢失**。 + + 常见的持久存储设备包括磁盘、固态硬盘、光盘、磁带、闪存等。 + +要想深刻理解文件系统,首先需要了解文件与持久存储。由于计算机内存中的数据在掉电后会丢失,应用程序需要将数据保存在持久存储设备上。为了满足这个需求,计算机操作系统一般会有两种处理方法: + +- 应用程序直接操作持久存储设备,自己维护数据的存储和读写。 +- 应用程序通过操作系统提供的文件系统接口,由操作系统负责维护数据的存储和读写。 + +对于前者,由之前的学习可以知道:计算机中应用程序若要和设备直接交互,需要操作系统让渡部分设备管理权限,无形中会引入安全隐患(如侧信道攻击等)。此外,不同的设备有不同的操作模式,应用程序需要针对不同的设备编写不同的代码,增加了开发难度的同时,还降低了应用的可移植性。 + +因此,操作系统将设备的操作细节隐藏起来,为应用程序提供了统一的设备访问接口。这些统一的用户态/内核态访问接口和对应的数据结构组成了文件系统,而文件就是对在持久化存储设备上数据块的抽象。 + +了解以上基本概念后,本章 Wiki 将继续介绍常见文件系统的层次结构,文件系统的实现概述以及对传统内核存储栈的讨论。 + +## 文件系统的层次结构 + +文件系统的层次结构通常可以自上而下分为以下几个层次,每个层次负责不同的功能和任务: + +1. **物理层**:物理层是文件系统最底层的部分,负责处理存储介质(即前文提到的“持久存储设备”)的读写操作。物理层将这些存储介质分割成逻辑块(例如扇区),并提供对这些块的标准化读写访问接口。 + +2. **块设备层**:块设备层建立在物理层之上,负责管理文件系统的逻辑块的分配和存储。它将提供了块级别的访问接口,允许文件系统在这些块上进行读写操作。典型的块设备包括磁盘、硬盘的分区、磁盘卷(RAID)、虚拟存储设备等。 + +3. **文件系统层**:文件系统层是文件系统的核心部分,负责管理文件和目录的组织、存储以及访问。它提供了一个逻辑视图,使用户和应用程序可以通过文件和目录的名称来访问数据,**而不需要关注物理存储的细节**。文件系统通常包括文件的创建、删除、修改、权限管理等功能,以及元数据的存储和管理(如文件大小、创建时间、修改时间等)。 + +4. **虚拟文件系统层**:虚拟文件系统层是文件系统的抽象层,作为一个可选的抽象层,负责统一管理不同类型的文件系统,并提供统一的访问接口给上层应用程序和用户。 + + !!! question "为什么要在存储栈中额外抽象多一层接口?" + + 虚拟文件系统层(VFS)可以将不同文件系统(如 FAT、NTFS、EXT4 等)**抽象成相同的接口**,使得用户和应用程序可以**统一地访问**这些不同类型的文件系统,而不用关心底层文件系统的差异。 + +5. **用户空间接口层**:用户空间接口层提供了用户和应用程序与文件系统之间的交互接口,使用户能够通过命令行或图形界面来操作文件和目录。这包括常见的文件操作命令(如 `ls`、`cp`、`mv`、`rm` 等)、文件管理器、API 接口等。 + +以上是文件系统的一般层次结构,不同的文件系统可能会有些许变化,如继续拆分某个层次、合并部分层次,但大致上都会包含类似的组成部分。 + +## 文件系统的实现 + +### 设计思路 + +在正式介绍文件系统的实现方法之前,首先来了解一下文件系统的“松耦合”设计哲学。 + +在操作系统的设计中,松耦合(Loose Coupling)是一种设计思路,它强调模块之间的**独立性和解耦性**,使得模块之间的依赖关系尽可能的减少。这种设计思路的好处是,当一个模块发生变化时,不会对其他模块产生太大的影响,从而提高了系统的**可维护性和可扩展性**。 + +在本实验和[rCore](https://rcore-os.cn/rCore-Tutorial-Book-v3/chapter6/2fs-implementation.html)的设计中,都采用了这样的思路,具体可以体现在: + +- `BlockDevice`:文件系统与底层设备驱动之间通过抽象层 `BlockDevice` 来连接,避免了与设备驱动、分区方式的绑定。 +- `alloc` crate:通过 Rust 提供的 `alloc crate` 来隔离了语言层面的内存管理,避免了直接调用内存管理的内核函数,同时提供了在 `std` 环境下进行测试的能力。 +- `trait` 和 `dyn`:通过对文件系统的功能、相关数据结构进行抽象封装,从而使得创建虚拟文件系统和支持更多不同的文件系统成为可能。 + +### 实现方法 + +由于种种的历史遗留、技术迭代,留下了很多诸如“扇区”、“分区”等概念。考虑向前的兼容性也是文件系统设计的一个重要因素。 + +#### 磁盘与分区 + +磁盘是计算机中最常见的持久存储设备之一,它是由一个或多个盘片组成的,每个盘片上都有一个或多个磁道,每个磁道上都有一个或多个扇区。磁盘上的数据是以扇区为单位进行读写的,每个扇区的大小通常是 512 字节或 4KB。 + +!!! question "SSD 也是磁盘吗" + + 在现代计算机中,这些概念也被逐渐模糊,不一定有磁盘才具有扇区,更多考虑到的是访问驱动和兼容性,在 QEMU 模拟的虚拟机中,甚至可以将内存映射为块设备。 + +在常见的磁盘上,通常会划分出一个或多个分区,每个分区都是一个逻辑上的独立存储空间,它们可以被格式化为不同的文件系统,或者用于存储不同的数据。分区的信息通常需要存储在磁盘中,通过分区表进行管理,GPT(GUID Partition Table)和 MBR(Master Boot Record)是两种常见的分区表格式。 + +同时,一般还存在**引导扇区**等概念,将会在具体的实现中进行介绍。 + +#### 文件存储 + +文件系统的核心是文件数据的管理,文件系统需要负责文件的创建、删除、修改、读取等操作。文件系统通常会将文件的数据和元信息(如文件大小、创建时间、修改时间等)存储在磁盘上,以便在需要时进行读取和修改。 + +文件系统的实现方法有很多种,常见的文件系统包括 FAT、NTFS、EXT4 等。不同的文件系统有不同的设计思路和实现方法,但它们都需要解决文件的组织、存储和访问等问题。 + +FAT 的实现很简单:它将文件系统的元信息和文件数据都存储在磁盘上,通过文件表来管理文件的组织和存储。EXT4 则更加复杂,它采用了日志、索引节点等技术,以提高文件系统的性能和可靠性。 + +你还可以参考 [rCore - 代码导读部分](https://rcore-os.cn/rCore-Tutorial-Book-v3/chapter6/0intro.html),学习系统代码迭代开发的过程,获得另一视角的实现参考。 + +## 讨论 + +当然,应用程序(用户态)直接与持久存储设备交互的模式也不是绝对的缺点。在传统的设计(如 Linux)中,应用程序的存储栈往往由以下数个部分组成:用户态逻辑-系统调用-虚拟文件系统-文件系统-块 I/O -设备驱动-物理设备(参考:[Linux-storage-stack-diagram](https://www.thomas-krenn.com/de/wikiDE/images/d/d0/Linux-storage-stack-diagram_v4.10.pdf)) + +兼容取向的松耦合逻辑带来超长的软件调用栈,进而引入无法忽视的性能开销(参考:[OSDI '22 Best Paper: XRP](https://www.usenix.org/conference/osdi22/presentation/zhong))。 + +因此,目前科研前沿提出了不少绕过传统内核-文件系统体系(Kernel Bypass)的存储解决方案,如 SPDK 等。通过解耦权限控制面与数据传输面,在用户态完成高效数据传输,而不用经过冗长的内核存储栈。 + +## 参考资料 + +- [File Systems - OSDev](https://wiki.osdev.org/File_Systems) +- [rCore - fs implementation](https://rcore-os.cn/rCore-Tutorial-Book-v3/chapter6/index.html#) +- [FAT 和 UNIX 文件系统](https://jyywiki.cn/OS/2022/slides/27.slides.html#/) +- [Xv6 文件系统实现](https://jyywiki.cn/OS/2022/slides/29.slides.html#/) +- [你管这破玩意叫文件系统 - 微信科普公众号](https://mp.weixin.qq.com/s/q6OjwCXSk05TvX_BIu1M0g) +- [OSDI '22 Best Paper: XRP](https://www.usenix.org/conference/osdi22/presentation/zhong) +- [SPDKL: The Storage Performance Development Kit](https://spdk.io/doc/about.html) +- [存储系统-从没入门到刚入门](https://www.yuque.com/wwyf/blog/dhoobh) diff --git a/docs/wiki/uart.md b/docs/wiki/uart.md index dad76b46..764fdb8c 100644 --- a/docs/wiki/uart.md +++ b/docs/wiki/uart.md @@ -45,7 +45,7 @@ COM 端口和 I/O 端口的映射关系你可以在 [Port Addresses](https://wik - Memory-mapped I/O (MMIO) 即通过将需要进行交互的 I/O 设备的相关寄存器映射到某一段内存地址空间,从而实现对 I/O 设备的访问。在启用虚拟内存机制的系统中,这些内存空间**同样需要通过虚拟地址进行访问**。 - - Port-mapped I/O 即将 I/O 设备的相关寄存器编址在相对与内存地址独立的地址空间,并使用专门的指令与 I/O 设备尽心交互。在 x86 系统中,I/O 端口的地址空间为 0x0000 - 0xFFFF,可以通过 `in` 和 `out` 指令进行访问。 + - Port-mapped I/O 即将 I/O 设备的相关寄存器编址在相对与内存地址独立的地址空间,并使用专门的指令与 I/O 设备进行交互。在 x86 系统中,I/O 端口的地址空间为 0x0000 - 0xFFFF,可以通过 `in` 和 `out` 指令进行访问。 由于历史遗留原因,x86 架构中同时存在 MMIO 和 port-mapped I/O 两种访问方式,不过由于 Port I/O 地址空间太小和其他的一些需求,现代硬件越来越偏向于使用 MMIO。 diff --git a/mkdocs.yml b/mkdocs.yml index 05c535e8..2431c0e8 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -83,6 +83,9 @@ nav: - APIC 可编程中断控制器: wiki/apic.md - x64 数据结构概述: wiki/structures.md - 用户空间: wiki/userspace.md + - 文件系统概述: wiki/fs.md + - ATA 硬盘简介: wiki/ata.md + - FAT 文件系统: wiki/fat.md markdown_extensions: - attr_list: diff --git a/src/0x00/pkg/boot/Cargo.toml b/src/0x00/pkg/boot/Cargo.toml index cc9298e6..b71cf8eb 100644 --- a/src/0x00/pkg/boot/Cargo.toml +++ b/src/0x00/pkg/boot/Cargo.toml @@ -5,6 +5,6 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -uefi = "0.26" -uefi-services = { version = "0.23" } +uefi = "0.27" +uefi-services = { version = "0.24" } log = "0.4" diff --git a/src/0x01/pkg/boot/Cargo.toml b/src/0x01/pkg/boot/Cargo.toml index d127a976..9505e95e 100644 --- a/src/0x01/pkg/boot/Cargo.toml +++ b/src/0x01/pkg/boot/Cargo.toml @@ -6,8 +6,8 @@ edition = "2021" [dependencies] arrayvec = { version = "0.7", default-features = false } -uefi = "0.26" -uefi-services = { version = "0.23", optional = true} +uefi = "0.27" +uefi-services = { version = "0.24", optional = true } log = "0.4" x86_64 = "0.15" xmas-elf = "0.9" diff --git a/src/0x01/pkg/boot/src/main.rs b/src/0x01/pkg/boot/src/main.rs index b9a22442..1eda8375 100644 --- a/src/0x01/pkg/boot/src/main.rs +++ b/src/0x01/pkg/boot/src/main.rs @@ -26,7 +26,7 @@ fn efi_main(image: uefi::Handle, mut system_table: SystemTable) -> Status let bs = system_table.boot_services(); // 1. Load config - let config = { /* FIXME: Load config file */ }; + let config = { /* FIXME: Load config file as Config */ }; info!("Config: {:#x?}", config); diff --git a/src/0x01/pkg/kernel/.cargo/config.toml b/src/0x01/pkg/kernel/.cargo/config.toml index f2d21f74..45c239e3 100644 --- a/src/0x01/pkg/kernel/.cargo/config.toml +++ b/src/0x01/pkg/kernel/.cargo/config.toml @@ -4,6 +4,3 @@ target = "config/x86_64-unknown-none.json" [unstable] build-std-features = ["compiler-builtins-mem"] build-std = ["core", "compiler_builtins", "alloc"] - -[env] -LOG_LEVEL = "debug" diff --git a/src/0x01/pkg/kernel/src/utils/macros.rs b/src/0x01/pkg/kernel/src/utils/macros.rs index 162a9904..16a7446a 100644 --- a/src/0x01/pkg/kernel/src/utils/macros.rs +++ b/src/0x01/pkg/kernel/src/utils/macros.rs @@ -66,6 +66,9 @@ pub fn print_internal(args: Arguments) { #[allow(dead_code)] #[cfg_attr(not(test), panic_handler)] fn panic(info: &core::panic::PanicInfo) -> ! { + // force unlock serial for panic output + unsafe { SERIAL.get().unwrap().force_unlock() }; + error!("ERROR: panic!\n\n{:#?}", info); loop {} } diff --git a/src/0x02/pkg/kernel/src/interrupt/exceptions.rs b/src/0x02/pkg/kernel/src/interrupt/exceptions.rs index f5d74af9..e8ec9949 100644 --- a/src/0x02/pkg/kernel/src/interrupt/exceptions.rs +++ b/src/0x02/pkg/kernel/src/interrupt/exceptions.rs @@ -12,7 +12,7 @@ pub unsafe fn register_idt(idt: &mut InterruptDescriptorTable) { .set_stack_index(gdt::PAGE_FAULT_IST_INDEX); // TODO: you should handle more exceptions here - // especially gerneral protection fault (GPF) + // especially general protection fault (GPF) // see: https://wiki.osdev.org/Exceptions } diff --git a/src/0x04/pkg/kernel/src/interrupt/syscall/mod.rs b/src/0x04/pkg/kernel/src/interrupt/syscall/mod.rs index 115c0181..523c4ea0 100644 --- a/src/0x04/pkg/kernel/src/interrupt/syscall/mod.rs +++ b/src/0x04/pkg/kernel/src/interrupt/syscall/mod.rs @@ -63,7 +63,7 @@ pub fn dispatcher(context: &mut ProcessContext) { // None Syscall::Stat => { /* FIXME: list processes */ }, // None - Syscall::ListApp => { /* FIXME: list avaliable apps */}, + Syscall::ListApp => { /* FIXME: list available apps */}, // ---------------------------------------------------- // NOTE: following syscall examples are implemented diff --git a/src/0x06/pkg/kernel/src/drivers/ata/bus.rs b/src/0x06/pkg/kernel/src/drivers/ata/bus.rs new file mode 100644 index 00000000..907f604a --- /dev/null +++ b/src/0x06/pkg/kernel/src/drivers/ata/bus.rs @@ -0,0 +1,234 @@ +//! ATA Bus +//! +//! reference: https://wiki.osdev.org/IDE +//! reference: https://wiki.osdev.org/ATA_PIO_Mode +//! reference: https://github.com/theseus-os/Theseus/blob/HEAD/kernel/ata/src/lib.rs + +use super::consts::*; +use alloc::boxed::Box; +use x86_64::instructions::port::*; + +#[derive(Debug, Clone)] +#[allow(dead_code)] +pub struct AtaBus { + id: u8, + irq: u8, + io_base: u16, + ctrl_base: u16, + data: Port, + error: PortReadOnly, + features: PortWriteOnly, + sector_count: Port, + /// Also used for sector_number + lba_low: Port, + /// Also used for cylinder_low + lba_mid: Port, + /// Also used for cylinder_high + lba_high: Port, + drive: Port, + status: PortReadOnly, + command: PortWriteOnly, + alternate_status: PortReadOnly, + control: PortWriteOnly, + drive_blockess: PortReadOnly, +} + +impl AtaBus { + pub fn new(id: u8, irq: u8, io_base: u16, ctrl_base: u16) -> Self { + Self { + id, + irq, // actually not used as we poll the status + io_base, + ctrl_base, + data: Port::::new(io_base), + error: PortReadOnly::::new(io_base + 1), + features: PortWriteOnly::::new(io_base + 1), + sector_count: Port::::new(io_base + 2), + lba_low: Port::::new(io_base + 3), + lba_mid: Port::::new(io_base + 4), + lba_high: Port::::new(io_base + 5), + drive: Port::::new(io_base + 6), + status: PortReadOnly::new(io_base + 7), + command: PortWriteOnly::new(io_base + 7), + + alternate_status: PortReadOnly::new(ctrl_base), + control: PortWriteOnly::new(ctrl_base), + drive_blockess: PortReadOnly::new(ctrl_base + 1), + } + } + + #[inline] + fn read_data(&mut self) -> u16 { + unsafe { self.data.read() } + } + + #[inline] + fn write_data(&mut self, data: u16) { + unsafe { self.data.write(data) } + } + + /// Also used for LBAmid + #[inline] + fn cylinder_low(&mut self) -> u8 { + unsafe { self.lba_mid.read() } + } + + /// Also used for LBAhi + #[inline] + fn cylinder_high(&mut self) -> u8 { + unsafe { self.lba_high.read() } + } + + /// Reads the `status` port and returns the value as an `AtaStatus` bitfield. + /// Because some buses operate (change wire values) very slowly, + /// this undergoes the standard procedure of reading the alternate status port + /// and discarding it 4 times before reading the real status port value. + /// Each read is a 100ns delay, so the total delay of 400ns is proper. + #[inline] + fn status(&mut self) -> AtaStatus { + AtaStatus::from_bits_truncate(unsafe { + // wait for 400ns + self.alternate_status.read(); + self.alternate_status.read(); + self.alternate_status.read(); + self.alternate_status.read(); + // read the status + self.status.read() + }) + } + + /// Reads the `error` port and returns the value as an `AtaError` bitfield. + #[inline] + fn error(&mut self) -> AtaError { + AtaError::from_bits_truncate(unsafe { self.error.read() }) + } + + /// Returns true if the `status` port indicates an error. + #[inline] + fn is_error(&mut self) -> bool { + self.status().contains(AtaStatus::ERROR) + } + + /// Polls the `status` port until the given bit is set to the given value. + #[inline] + fn poll(&mut self, bit: AtaStatus, val: bool) { + let mut status = self.status(); + while status.intersects(bit) != val { + if status.contains(AtaStatus::ERROR) { + self.debug(); + } + core::hint::spin_loop(); + status = self.status(); + } + } + + /// Log debug information about the bus + fn debug(&mut self) { + warn!("ATA error register : {:?}", self.error()); + warn!("ATA status register : {:?}", self.status()); + } + + /// Writes the given command + /// + /// reference: https://wiki.osdev.org/ATA_PIO_Mode#28_bit_PIO + fn write_command(&mut self, drive: u8, block: u32, cmd: AtaCommand) -> storage::Result<()> { + let bytes = block.to_le_bytes(); // a trick to convert u32 to [u8; 4] + unsafe { + // just 1 sector for current implementation + self.sector_count.write(1); + + // FIXME: store the LBA28 address into four 8-bit registers + // - read the documentation for more information + // - enable LBA28 mode by setting the drive register + // FIXME: write the command register (cmd as u8) + } + + if self.status().is_empty() { + // unknown drive + return Err(storage::DeviceError::UnknownDevice.into()); + } + + // FIXME: poll for the status to be not BUSY + + if self.is_error() { + warn!("ATA error: {:?} command error", cmd); + self.debug(); + return Err(storage::DeviceError::InvalidOperation.into()); + } + + // FIXME: poll for the status to be not BUSY and DATA_REQUEST_READY + + Ok(()) + } + + /// Identifies the drive at the given `drive` number (0 or 1). + /// + /// reference: https://wiki.osdev.org/ATA_PIO_Mode#IDENTIFY_command + pub(super) fn identify_drive(&mut self, drive: u8) -> storage::Result { + info!("Identifying drive {}", drive); + + // FIXME: use `AtaCommand::IdentifyDevice` to identify the drive + // - call `write_command` with `drive` and `0` as the block number + // - if the status is empty, return `AtaDeviceType::None` + // - else return `DeviceError::Unknown` as `FsError` + + // FIXME: poll for the status to be not BUSY + + Ok(match (self.cylinder_low(), self.cylinder_high()) { + // we only support PATA drives + (0x00, 0x00) => AtaDeviceType::Pata(Box::new([0u16; 256].map(|_| self.read_data()))), + // ignore the data as we don't support following types + (0x14, 0xEB) => AtaDeviceType::PataPi, + (0x3C, 0xC3) => AtaDeviceType::Sata, + (0x69, 0x96) => AtaDeviceType::SataPi, + _ => AtaDeviceType::None, + }) + } + + /// Reads a block from the given drive and block number into the given buffer. + /// + /// reference: https://wiki.osdev.org/ATA_PIO_Mode#28_bit_PIO + /// reference: https://wiki.osdev.org/IDE#Read.2FWrite_From_ATA_Drive + pub(super) fn read_pio( + &mut self, + drive: u8, + block: u32, + buf: &mut [u8], + ) -> storage::Result<()> { + self.write_command(drive, block, AtaCommand::ReadPio)?; + + // FIXME: read the data from the data port into the buffer + // - use `buf.chunks_mut(2)` + // - use `self.read_data()` + // - ! pay attention to data endianness + + if self.is_error() { + debug!("ATA error: data read error"); + self.debug(); + Err(storage::DeviceError::ReadError.into()) + } else { + Ok(()) + } + } + + /// Writes a block to the given drive and block number from the given buffer. + /// + /// reference: https://wiki.osdev.org/ATA_PIO_Mode#28_bit_PIO + /// reference: https://wiki.osdev.org/IDE#Read.2FWrite_From_ATA_Drive + pub(super) fn write_pio(&mut self, drive: u8, block: u32, buf: &[u8]) -> storage::Result<()> { + self.write_command(drive, block, AtaCommand::WritePio)?; + + // FIXME: write the data from the buffer into the data port + // - use `buf.chunks(2)` + // - use `self.write_data()` + // - ! pay attention to data endianness + + if self.is_error() { + debug!("ATA error: data write error"); + self.debug(); + Err(storage::DeviceError::WriteError.into()) + } else { + Ok(()) + } + } +} diff --git a/src/0x06/pkg/kernel/src/drivers/ata/consts.rs b/src/0x06/pkg/kernel/src/drivers/ata/consts.rs new file mode 100644 index 00000000..2812a07e --- /dev/null +++ b/src/0x06/pkg/kernel/src/drivers/ata/consts.rs @@ -0,0 +1,95 @@ +//! Constants and bitflags for the ATA driver. +//! +//! reference: https://github.com/theseus-os/Theseus/blob/HEAD/kernel/ata/src/lib.rs + +use alloc::boxed::Box; + +bitflags! { + /// The possible error values found in an ATA drive's error port. + #[derive(Clone, Copy, Debug, Eq, PartialEq)] + pub(super) struct AtaError: u8 { + const BAD_BLOCK = 0x80; + const UNCORRECTABLE_DATA = 0x40; + const MEDIA_CHANGED = 0x20; + const ID_MARK_NOT_FOUND = 0x10; + const MEDIA_CHANGE_REQUEST = 0x08; + const COMMAND_ABORTED = 0x04; + const TRACK_0_NOT_FOUND = 0x02; + const ADDRESS_MARK_NOT_FOUND = 0x01; + } +} + +bitflags! { + /// The possible status values found in an ATA drive's status port. + #[derive(Clone, Copy, Debug, Eq, PartialEq)] + pub(super) struct AtaStatus: u8 { + /// When set, the drive's port values are still changing, so ports shouldn't be accessed. + const BUSY = 0x80; + /// When set, the drive is on. When cleared, the drive is sleeping or "spun down". + const DRIVE_READY = 0x40; + const DRIVE_WRITE_FAULT = 0x20; + const DRIVE_SEEK_COMPLETE = 0x10; + /// When **cleared**, the drive is ready for data to be read/written. + /// When set, the drive is handling a data request and isn't ready for another command. + const DATA_REQUEST_READY = 0x08; + const CORRECTED_DATA = 0x04; + const INDEX = 0x02; + const ERROR = 0x01; + } +} + +#[repr(u8)] +#[allow(dead_code)] +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub(super) enum AtaCommand { + /// Read sectors using PIO (28-bit LBA) + ReadPio = 0x20, + /// Read sectors using PIO (48-bit LBA) + ReadPioExt = 0x24, + /// Read sectors using DMA (28-bit LBA) + ReadDma = 0xC8, + /// Read sectors using DMA (48-bit LBA) + ReadDmaExt = 0x25, + /// Write sectors using PIO (28-bit LBA) + WritePio = 0x30, + /// Write sectors using PIO (48-bit LBA) + WritePioExt = 0x34, + /// Write sectors using DMA (28-bit LBA) + WriteDma = 0xCA, + /// Write sectors using DMA (48-bit LBA) + WriteDmaExt = 0x35, + /// Flush the drive's bus cache (28-bit LBA). + /// This is to be used after each write. + CacheFlush = 0xE7, + /// Flush the drive's bus cache (48-bit LBA). + /// This is to be used after each write. + CacheFlushExt = 0xEA, + /// Sends a packet, for ATAPI devices using the packet interface (PI). + Packet = 0xA0, + /// Get identifying details of an ATAPI drive. + IdentifyPacket = 0xA1, + /// Get identifying details of an ATA drive. + IdentifyDevice = 0xEC, +} + +/// The possible types of drive devices that can be attached to an IDE controller via ATA. +pub(super) enum AtaDeviceType { + /// A parallel ATA (PATA) drive, like a hard drive. + /// This is the type previously known as just "ATA" before SATA existed. + /// + /// **which is the only type of drive that is supported by the current implementation.** + Pata(Box<[u16; 256]>), + /// A parallel ATA (PATA) drive that uses the packet interface, + /// like an optical CD-ROM drive. + PataPi, + /// A serial ATA (SATA) drive that is operating in legacy IDE emulation mode, + /// **not the standard AHCI interface for SATA**. + /// Some systems refer to this as a `SEMB` (SATA Enclosure Management Bridge) device, + /// which may or may not be attached through a port multiplier. + Sata, + /// A serial ATA (SATA) drive that that is operating in legacy IDE emulation mode + /// and uses the packet interface. + SataPi, + /// The device type is unknown. + None, +} diff --git a/src/0x06/pkg/kernel/src/drivers/ata/mod.rs b/src/0x06/pkg/kernel/src/drivers/ata/mod.rs new file mode 100644 index 00000000..18ff50e6 --- /dev/null +++ b/src/0x06/pkg/kernel/src/drivers/ata/mod.rs @@ -0,0 +1,99 @@ +//! ATA Drive +//! +//! reference: https://wiki.osdev.org/IDE +//! reference: https://wiki.osdev.org/ATA_PIO_Mode +//! reference: https://github.com/theseus-os/Theseus/blob/HEAD/kernel/ata/src/lib.rs + +mod bus; +mod consts; + +use alloc::{boxed::Box, string::String}; +use bus::AtaBus; +use consts::AtaDeviceType; +use spin::Mutex; + +lazy_static! { + pub static ref BUSES: [Mutex; 2] = { + let buses = [ + Mutex::new(AtaBus::new(0, 14, 0x1F0, 0x3F6)), + Mutex::new(AtaBus::new(1, 15, 0x170, 0x376)), + ]; + + info!("Initialized ATA Buses."); + + buses + }; +} + +#[derive(Clone)] +pub struct AtaDrive { + pub bus: u8, + pub drive: u8, + blocks: u32, + model: Box, + serial: Box, +} + +impl AtaDrive { + pub fn open(bus: u8, drive: u8) -> Option { + trace!("Opening drive {}@{}...", bus, drive); + + // we only support PATA drives + if let Ok(AtaDeviceType::Pata(res)) = BUSES[bus as usize].lock().identify_drive(drive) { + let buf = res.map(u16::to_be_bytes).concat(); + let serial = { /* FIXME: get the serial from buf */ }; + let model = { /* FIXME: get the model from buf */ }; + let blocks = { /* FIXME: get the block count from buf */ }; + let ata_drive = Self { + bus, + drive, + model, + serial, + blocks, + }; + info!("Drive {} opened", ata_drive); + Some(ata_drive) + } else { + warn!("Drive {}@{} is not a PATA drive", bus, drive); + None + } + } + + fn humanized_size(&self) -> (f32, &'static str) { + let size = self.block_size(); + let count = self.block_count().unwrap(); + let bytes = size * count; + + crate::humanized_size(bytes as u64) + } +} + +impl core::fmt::Display for AtaDrive { + fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { + let (size, unit) = self.humanized_size(); + write!(f, "{} {} ({} {})", self.model, self.serial, size, unit) + } +} + +use storage::{Block512, BlockDevice}; + +impl BlockDevice for AtaDrive { + fn block_count(&self) -> storage::Result { + // FIXME: return the block count + todo!() + } + + fn read_block(&self, offset: usize, block: &mut Block512) -> storage::Result<()> { + // FIXME: read the block + // - use `BUSES` and `self` to get bus + // - use `read_pio` to get data + todo!() + } + + fn write_block(&self, offset: usize, block: &Block512) -> storage::Result<()> { + // FIXME: write the block + // - use `BUSES` and `self` to get bus + // - use `write_pio` to write data + todo!() + } +} diff --git a/src/0x06/pkg/kernel/src/drivers/filesystem.rs b/src/0x06/pkg/kernel/src/drivers/filesystem.rs new file mode 100644 index 00000000..60377378 --- /dev/null +++ b/src/0x06/pkg/kernel/src/drivers/filesystem.rs @@ -0,0 +1,50 @@ +use super::ata::*; +use alloc::boxed::Box; +use chrono::DateTime; +use storage::fat16::Fat16; +use storage::mbr::*; +use storage::*; + +pub static ROOTFS: spin::Once = spin::Once::new(); + +pub fn get_rootfs() -> &'static Mount { + ROOTFS.get().unwrap() +} + +pub fn init() { + info!("Opening disk device..."); + + let drive = AtaDrive::open(0, 0).expect("Failed to open disk device"); + + // only get the first partition + let part = MbrTable::parse(drive) + .expect("Failed to parse MBR") + .partitions() + .expect("Failed to get partitions") + .remove(0); + + info!("Mounting filesystem..."); + + ROOTFS.call_once(|| Mount::new(Box::new(Fat16::new(part)), "/".into())); + + trace!("Root filesystem: {:#?}", ROOTFS.get().unwrap()); + + info!("Initialized Filesystem."); +} + +pub fn ls(root_path: &str) { + let iter = match get_rootfs().read_dir(root_path) { + Ok(iter) => iter, + Err(err) => { + warn!("{:?}", err); + return; + } + }; + + // FIXME: format and print the file metadata + // - use `for meta in iter` to iterate over the entries + // - use `crate::humanized_size_short` for file size + // - add '/' to the end of directory names + // - format the date as you like + // - do not forget to print the table header +} diff --git a/src/0x06/pkg/storage/Cargo.toml b/src/0x06/pkg/storage/Cargo.toml new file mode 100644 index 00000000..c0d82e8a --- /dev/null +++ b/src/0x06/pkg/storage/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "ysos_storage" +version = "0.6.0" +edition = "2021" + +[dependencies] +log = "0.4" +spin = "0.9" +paste = "1.0" +bitflags = "2.0" +hex-literal = "0.4" +num_enum = { version = "0.7", default-features = false } +chrono = { version = "0.4", default-features = false, features = ["alloc"] } diff --git a/src/0x06/pkg/storage/src/common/block.rs b/src/0x06/pkg/storage/src/common/block.rs new file mode 100644 index 00000000..5a4534da --- /dev/null +++ b/src/0x06/pkg/storage/src/common/block.rs @@ -0,0 +1,81 @@ +use crate::*; +use core::ops::Deref; + +pub trait BlockTrait = + AsMut<[u8]> + AsRef<[u8]> + SizedBlock + Default + Send + Sync + Clone + 'static; + +pub trait SizedBlock { + const BLOCK_SIZE: usize; + + fn size() -> usize { + Self::BLOCK_SIZE + } +} + +pub type Block512 = Block<512>; +pub type Block4096 = Block<4096>; + +/// A block of data. +#[derive(Clone)] +pub struct Block { + contents: [u8; SIZE], +} + +impl Block { + /// Create a new block with data + pub fn new(data: &[u8; SIZE]) -> Self { + Self { + contents: data.to_owned(), + } + } +} + +impl Deref for Block { + type Target = [u8; SIZE]; + + /// For `&block[x..y] -> &[u8]` + fn deref(&self) -> &Self::Target { + &self.contents + } +} + +impl AsRef<[u8]> for Block { + fn as_ref(&self) -> &[u8] { + &self.contents + } +} + +impl AsMut<[u8]> for Block { + fn as_mut(&mut self) -> &mut [u8] { + &mut self.contents + } +} + +impl Default for Block { + fn default() -> Self { + Self { + contents: [0u8; SIZE], + } + } +} + +impl SizedBlock for Block { + const BLOCK_SIZE: usize = SIZE; +} + +impl core::fmt::Debug for Block { + fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { + writeln!(f, "Block:")?; + for chunk in self.contents.chunks(32) { + writeln!( + f, + " {:016x} {:016x} {:016x} {:016x}", + u64::from_be_bytes(chunk[0..8].try_into().unwrap()), + u64::from_be_bytes(chunk[8..16].try_into().unwrap()), + u64::from_be_bytes(chunk[16..24].try_into().unwrap()), + u64::from_be_bytes(chunk[24..32].try_into().unwrap()), + )?; + } + Ok(()) + } +} diff --git a/src/0x06/pkg/storage/src/common/device.rs b/src/0x06/pkg/storage/src/common/device.rs new file mode 100644 index 00000000..0518e846 --- /dev/null +++ b/src/0x06/pkg/storage/src/common/device.rs @@ -0,0 +1,21 @@ +use super::*; + +/// A block device +pub trait BlockDevice: Send + Sync + 'static +where + B: BlockTrait, +{ + /// Returns the number of blocks in the device + fn block_count(&self) -> Result; + + /// Reads a block from the device into the provided buffer + fn read_block(&self, offset: usize, block: &mut B) -> Result<()>; + + /// Writes a block to the device from the provided buffer + fn write_block(&self, offset: usize, block: &B) -> Result<()>; + + /// Returns the block size of the device + fn block_size(&self) -> usize { + B::size() + } +} diff --git a/src/0x06/pkg/storage/src/common/error.rs b/src/0x06/pkg/storage/src/common/error.rs new file mode 100644 index 00000000..bc1b3420 --- /dev/null +++ b/src/0x06/pkg/storage/src/common/error.rs @@ -0,0 +1,82 @@ +use crate::*; + +pub type Result = core::result::Result; + +#[derive(Debug, Clone, Eq, PartialEq)] +pub enum FsError { + /// The file was not found. + FileNotFound, + /// The file not in current sector. + NotInSector, + /// The end of the file was reached. + EndOfFile, + /// Writing to a file with no space left. + WriteZero, + /// The entry is not a directory. + NotADirectory, + /// The entry is not a file. + NotAFile, + /// The file is read-only. + ReadOnly, + /// Invalid operation. + InvalidOperation, + /// Not supported. + NotSupported, + /// Bad cluster. + BadCluster, + /// Invalid offset. + InvalidOffset, + /// The file name is invalid. + FileNameError(FilenameError), + /// Encountered an error while reading from the device. + DeviceError(DeviceError), + /// Invalid path. + InvalidPath(String), +} + +#[derive(Debug, Clone, Eq, PartialEq)] +pub enum DeviceError { + /// The device is busy. + Busy, + /// Unknown device. + UnknownDevice, + /// Unknown error. + Unknown, + /// Invalid operation. + InvalidOperation, + /// Read error. + ReadError, + /// Write error. + WriteError, + /// The device error status code. + WithStatus(usize), +} + +/// Various filename related errors that can occur. +#[derive(Debug, Clone, Eq, PartialEq)] +pub enum FilenameError { + /// Tried to create a file with an invalid character. + InvalidCharacter, + /// Tried to create a file with no file name. + FilenameEmpty, + /// Given name was too long (we are limited to 8.3). + NameTooLong, + /// Can't start a file with a period, or after 8 characters. + MisplacedPeriod, + /// Can't extract utf8 from file name + Utf8Error, + /// Can't parse file entry + UnableToParse, +} + +impl From for FsError { + fn from(err: FilenameError) -> FsError { + FsError::FileNameError(err) + } +} + +impl From for FsError { + fn from(err: DeviceError) -> FsError { + FsError::DeviceError(err) + } +} diff --git a/src/0x06/pkg/storage/src/common/filehandle.rs b/src/0x06/pkg/storage/src/common/filehandle.rs new file mode 100644 index 00000000..2eafca50 --- /dev/null +++ b/src/0x06/pkg/storage/src/common/filehandle.rs @@ -0,0 +1,36 @@ +use super::*; +use core::fmt::Debug; +use core::ops::{Deref, DerefMut}; + +pub struct FileHandle { + pub meta: Metadata, + file: Box, +} + +impl FileHandle { + pub fn new(meta: Metadata, file: Box) -> Self { + Self { meta, file } + } +} + +impl Deref for FileHandle { + type Target = Box; + + fn deref(&self) -> &Self::Target { + &self.file + } +} + +impl DerefMut for FileHandle { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.file + } +} + +impl Debug for FileHandle { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + f.debug_struct("FileHandle") + .field("meta", &self.meta) + .finish() + } +} diff --git a/src/0x06/pkg/storage/src/common/filesystem.rs b/src/0x06/pkg/storage/src/common/filesystem.rs new file mode 100644 index 00000000..6cacc787 --- /dev/null +++ b/src/0x06/pkg/storage/src/common/filesystem.rs @@ -0,0 +1,58 @@ +//! The filesystem trait definitions needed to implement new virtual filesystems +use crate::*; + +use core::fmt::Debug; + +/// File system trait +pub trait FileSystem: Debug + Sync + Send { + /// Iterates over all direct children of this directory path + fn read_dir(&self, path: &str) -> Result + Send>>; + + /// Opens the file at this path for reading + fn open_file(&self, path: &str) -> Result; + + /// Returns the file metadata for the file at this path + fn metadata(&self, path: &str) -> Result; + + /// Returns true if a file or directory at path exists, false otherwise + fn exists(&self, path: &str) -> Result; + + // ---------------------------------------------------- + // NOTE: following functions are not implemented (optional) + // ---------------------------------------------------- + + /// Creates a file at this path for writing + fn create_file(&self, _path: &str) -> Result { + Err(FsError::NotSupported) + } + + /// Opens the file at this path for appending + fn append_file(&self, _path: &str) -> Result { + Err(FsError::NotSupported) + } + + /// Removes the file at this path + fn remove_file(&self, _path: &str) -> Result { + Err(FsError::NotSupported) + } + + /// Removes the directory at this path + fn remove_dir(&self, _path: &str) -> Result { + Err(FsError::NotSupported) + } + + /// Copies the src path to the destination path within the same filesystem + fn copy_file(&self, _src: &str, _dst: &str) -> Result<()> { + Err(FsError::NotSupported) + } + + /// Moves the src path to the destination path within the same filesystem + fn move_file(&self, _src: &str, _dst: &str) -> Result<()> { + Err(FsError::NotSupported) + } + + /// Moves the src directory to the destination path within the same filesystem + fn move_dir(&self, _src: &str, _dst: &str) -> Result<()> { + Err(FsError::NotSupported) + } +} diff --git a/src/0x06/pkg/storage/src/common/io.rs b/src/0x06/pkg/storage/src/common/io.rs new file mode 100644 index 00000000..3f62673c --- /dev/null +++ b/src/0x06/pkg/storage/src/common/io.rs @@ -0,0 +1,60 @@ +use crate::*; + +/// The `Read` trait allows for reading bytes from a source. +pub trait Read { + /// Pull some bytes from this source into the specified buffer, returning + /// how many bytes were read. + fn read(&mut self, buf: &mut [u8]) -> Result; + + /// Read all bytes until EOF in this source, placing them into `buf`. + fn read_all(&mut self, buf: &mut Vec) -> Result { + let mut start_len = buf.len(); + loop { + // FIXME: read data into the buffer + // - extend the buffer if it's not big enough + // - break if the read returns 0 or Err + // - update the length of the buffer if data was read + } + } +} + +/// The `Write` trait allows for writing bytes to a source. +/// +/// NOTE: Leave here to ensure flexibility for the optional lab task. +pub trait Write { + /// Write a buffer into this writer, returning how many bytes were written. + fn write(&mut self, buf: &[u8]) -> Result; + + /// Flush this output stream, ensuring that all intermediately buffered + /// contents reach their destination. + fn flush(&mut self) -> Result<()>; + + /// Attempts to write an entire buffer into this writer. + fn write_all(&mut self, mut buf: &[u8]) -> Result<()> { + // not required for lab + todo!() + } +} + +/// Enumeration of possible methods to seek within an I/O object. +#[derive(Copy, PartialEq, Eq, Clone, Debug)] +pub enum SeekFrom { + /// Sets the offset to the provided number of bytes. + Start(usize), + + /// Sets the offset to the size of this object plus the offset. + End(isize), + + /// Sets the offset to the current position plus the offset. + Current(isize), +} + +/// The `Seek` trait provides a cursor within byte stream. +pub trait Seek { + /// Seek to an offset, in bytes, in a stream. + fn seek(&mut self, pos: SeekFrom) -> Result; +} + +pub trait FileIO: Read + Write + Seek {} + +impl FileIO for T {} diff --git a/src/0x06/pkg/storage/src/common/macros.rs b/src/0x06/pkg/storage/src/common/macros.rs new file mode 100644 index 00000000..8acc748f --- /dev/null +++ b/src/0x06/pkg/storage/src/common/macros.rs @@ -0,0 +1,71 @@ +/// Used to define fields in a struct +/// +/// # Example +/// +/// ```rust, ignore +/// struct Example { +/// data: [u8; 10], +/// } +/// +/// impl Example { +/// define_field!(u8, 0, field1); +/// define_field!(u16, 1, field2); +/// define_field!(u32, 3, field3); +/// define_field!([u8; 3], 7, field4); +/// } +/// +/// impl Debug for Example { +/// fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { +/// f.debug_struct("Example") +/// .field("field1", &self.field1()) +/// .field("field2", &self.field2()) +/// .field("field3", &self.field3()) +/// .field("field4", &self.field4_str()) // to get str +/// .finish() +/// } +/// } +/// ``` +macro_rules! define_field { + (u8, $offset:expr, $name:ident) => { + paste::item! { + #[doc = "Get u8 from the " $name " field"] + pub fn $name(&self) -> u8 { + self.data.get($offset).unwrap_or(&0).clone() + } + } + }; + + (u16, $offset:expr, $name:ident) => { + paste::item! { + #[doc = "Get u16 from the " $name " field"] + pub fn $name(&self) -> u16 { + u16::from_le_bytes(self.data[$offset..$offset + 2].try_into().unwrap_or([0; 2])) + } + } + }; + + (u32, $offset:expr, $name:ident) => { + paste::item! { + #[doc = "Get u32 from the " $name " field"] + pub fn $name(&self) -> u32 { + u32::from_le_bytes(self.data[$offset..$offset + 4].try_into().unwrap_or([0; 4])) + } + } + }; + + ([u8; $len:expr], $offset:expr, $name:ident) => { + paste::item! { + #[doc = "Get `&[u8]` from the " $name " field"] + pub fn $name(&self) -> &[u8; $len] { + (&self.data[$offset..$offset + $len]) + .try_into() + .unwrap_or(&[0; $len]) + } + + #[doc = "Get `&str` from the " $name " field"] + pub fn [<$name _str>](&self) -> &str { + core::str::from_utf8(&self.data[$offset..$offset+$len]).unwrap_or("") + } + } + }; +} diff --git a/src/0x06/pkg/storage/src/common/metadata.rs b/src/0x06/pkg/storage/src/common/metadata.rs new file mode 100644 index 00000000..778bbb79 --- /dev/null +++ b/src/0x06/pkg/storage/src/common/metadata.rs @@ -0,0 +1,63 @@ +use crate::*; +use chrono::{DateTime, Utc}; + +pub type FsTime = DateTime; + +/// Type of file entry +#[derive(Copy, Clone, Debug, Eq, PartialEq)] +pub enum FileType { + /// A plain file + File, + /// A Directory + Directory, +} + +#[derive(Debug)] +/// File entry metadata +pub struct Metadata { + /// Name of the entry + pub name: String, + /// The type of entry + pub entry_type: FileType, + /// Length of the file in bytes, 0 for directories + pub len: usize, + /// Creation time of the file + pub created: Option, + /// Modification time of the file + pub modified: Option, + /// Access time of the file + pub accessed: Option, +} + +impl Metadata { + /// Create a new metadata object + pub fn new( + name: String, + entry_type: FileType, + len: usize, + created: Option, + modified: Option, + accessed: Option, + ) -> Self { + Self { + len, + name, + created, + modified, + accessed, + entry_type, + } + } + + /// Return `true` if the entry is a file + #[inline] + pub fn is_file(&self) -> bool { + self.entry_type == FileType::File + } + + /// Return `true` if the entry is a directory + #[inline] + pub fn is_dir(&self) -> bool { + self.entry_type == FileType::Directory + } +} diff --git a/src/0x06/pkg/storage/src/common/mod.rs b/src/0x06/pkg/storage/src/common/mod.rs new file mode 100644 index 00000000..db8a4d0a --- /dev/null +++ b/src/0x06/pkg/storage/src/common/mod.rs @@ -0,0 +1,24 @@ +#[macro_use] +mod macros; + +mod block; +mod device; +mod error; +mod filehandle; +mod filesystem; +mod io; +mod metadata; +mod mount; + +use super::*; + +pub use block::*; +pub use device::*; +pub use error::*; +pub use filehandle::*; +pub use filesystem::*; +pub use io::*; +pub use metadata::*; +pub use mount::*; + +pub const PATH_SEPARATOR: char = '/'; diff --git a/src/0x06/pkg/storage/src/common/mount.rs b/src/0x06/pkg/storage/src/common/mount.rs new file mode 100644 index 00000000..701c2590 --- /dev/null +++ b/src/0x06/pkg/storage/src/common/mount.rs @@ -0,0 +1,52 @@ +use super::*; + +/// Mount a file system to a specific path +/// +/// NOTE: strip the mount point from the path before calling the underlying file system +pub struct Mount { + pub fs: Box, + pub mount_point: Box, +} + +impl Mount { + #[inline] + pub fn new(fs: Box, mount_point: Box) -> Self { + Self { fs, mount_point } + } + + #[inline] + fn trim_mount_point<'a>(&self, path: &'a str) -> &'a str { + path.trim_start_matches(self.mount_point.as_ref()) + } +} + +impl FileSystem for Mount { + #[inline] + fn read_dir(&self, path: &str) -> Result + Send>> { + self.fs.read_dir(self.trim_mount_point(path)) + } + + #[inline] + fn open_file(&self, path: &str) -> Result { + self.fs.open_file(self.trim_mount_point(path)) + } + + #[inline] + fn metadata(&self, path: &str) -> Result { + self.fs.metadata(self.trim_mount_point(path)) + } + + #[inline] + fn exists(&self, path: &str) -> Result { + self.fs.exists(self.trim_mount_point(path)) + } +} + +impl core::fmt::Debug for Mount { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + f.debug_struct("Mount") + .field("mount_point", &self.mount_point) + .field("fs", &self.fs) + .finish() + } +} diff --git a/src/0x06/pkg/storage/src/fs/fat16/bpb.rs b/src/0x06/pkg/storage/src/fs/fat16/bpb.rs new file mode 100644 index 00000000..dcd9e840 --- /dev/null +++ b/src/0x06/pkg/storage/src/fs/fat16/bpb.rs @@ -0,0 +1,170 @@ +//! Fat16 BIOS Parameter Block +//! +//! reference: +//! - +//! - + +/// Represents a Boot Parameter Block. +/// +/// This is the first sector of a FAT 16 formatted partition, +/// and it describes various properties of the FAT 16 filesystem. +pub struct Fat16Bpb { + data: [u8; 512], +} + +impl Fat16Bpb { + /// Attempt to parse a Boot Parameter Block from a 512 byte sector. + pub fn new(data: &[u8]) -> Result { + let data = data.try_into().unwrap(); + let bpb = Fat16Bpb { data }; + + if bpb.data.len() != 512 || bpb.trail() != 0xAA55 { + return Err("Bad BPB format"); + } + + Ok(bpb) + } + + pub fn total_sectors(&self) -> u32 { + if self.total_sectors_16() == 0 { + self.total_sectors_32() + } else { + self.total_sectors_16() as u32 + } + } + + // FIXME: define all the fields in the BPB + // - use `define_field!` macro + // - ensure you can pass the tests + // - you may change the field names if you want +} + +impl core::fmt::Debug for Fat16Bpb { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + f.debug_struct("Fat16 BPB") + .field("OEM Name", &self.oem_name_str()) + .field("Bytes per Sector", &self.bytes_per_sector()) + .field("Sectors per Cluster", &self.sectors_per_cluster()) + .field("Reserved Sector Count", &self.reserved_sector_count()) + .field("FAT Count", &self.fat_count()) + .field("Root Entries Count", &self.root_entries_count()) + .field("Total Sectors", &self.total_sectors()) + .field("Media Descriptor", &self.media_descriptor()) + .field("Sectors per FAT", &self.sectors_per_fat()) + .field("Sectors per Track", &self.sectors_per_track()) + .field("Track Count", &self.track_count()) + .field("Hidden Sectors", &self.hidden_sectors()) + .field("Total Sectors", &self.total_sectors()) + .field("Drive Number", &self.drive_number()) + .field("Reserved Flags", &self.reserved_flags()) + .field("Boot Signature", &self.boot_signature()) + .field("Volume ID", &self.volume_id()) + .field("Volume Label", &self.volume_label_str()) + .field("System Identifier", &self.system_identifier_str()) + .field("Trail", &self.trail()) + .finish() + } +} + +/// Test the `Fat16Bpb` struct +/// +/// WARN: do not modify following test code unless you changed the field names +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_fat16_bpb_1() { + // Taken from a Raspberry Pi bootable SD-Card + const DATA: [u8; 192] = hex_literal::hex!( + "EB 3C 90 6D 6B 66 73 2E 66 61 74 00 02 10 01 00 + 02 00 02 00 00 F8 20 00 3F 00 FF 00 00 00 00 00 + 00 E0 01 00 80 01 29 BB B0 71 77 62 6F 6F 74 20 + 20 20 20 20 20 20 46 41 54 31 36 20 20 20 0E 1F + BE 5B 7C AC 22 C0 74 0B 56 B4 0E BB 07 00 CD 10 + 5E EB F0 32 E4 CD 16 CD 19 EB FE 54 68 69 73 20 + 69 73 20 6E 6F 74 20 61 20 62 6F 6F 74 61 62 6C + 65 20 64 69 73 6B 2E 20 20 50 6C 65 61 73 65 20 + 69 6E 73 65 72 74 20 61 20 62 6F 6F 74 61 62 6C + 65 20 66 6C 6F 70 70 79 20 61 6E 64 0D 0A 70 72 + 65 73 73 20 61 6E 79 20 6B 65 79 20 74 6F 20 74 + 72 79 20 61 67 61 69 6E 20 2E 2E 2E 20 0D 0A 00" + ); + + const PADDING: &[u8] = concat_bytes!([0x00; 318], [0x55, 0xAA]); + + let mut bpb_data = DATA.to_vec(); + bpb_data.extend_from_slice(PADDING); + + let bpb = Fat16Bpb::new(&bpb_data).unwrap(); + + assert_eq!(bpb.oem_name(), b"mkfs.fat"); + assert_eq!(bpb.bytes_per_sector(), 512); + assert_eq!(bpb.sectors_per_cluster(), 16); + assert_eq!(bpb.reserved_sector_count(), 1); + assert_eq!(bpb.fat_count(), 2); + assert_eq!(bpb.root_entries_count(), 512); + assert_eq!(bpb.total_sectors_16(), 0); + assert_eq!(bpb.media_descriptor(), 0xf8); + assert_eq!(bpb.sectors_per_fat(), 32); + assert_eq!(bpb.sectors_per_track(), 63); + assert_eq!(bpb.track_count(), 255); + assert_eq!(bpb.hidden_sectors(), 0); + assert_eq!(bpb.total_sectors_32(), 0x1e000); + assert_eq!(bpb.drive_number(), 128); + assert_eq!(bpb.reserved_flags(), 1); + assert_eq!(bpb.boot_signature(), 0x29); + assert_eq!(bpb.volume_id(), 0x7771b0bb); + assert_eq!(bpb.volume_label(), b"boot "); + assert_eq!(bpb.system_identifier(), b"FAT16 "); + + assert_eq!(bpb.total_sectors(), 0x1e000); + + println!("{:#?}", bpb); + } + + #[test] + fn test_fat16_bpb_2() { + // Taken from QEMU VVFAT + const DATA: [u8; 64] = hex_literal::hex!( + "EB 3E 90 4D 53 57 49 4E 34 2E 31 00 02 10 01 00 + 02 00 02 00 00 F8 FC 00 3F 00 10 00 3F 00 00 00 + C1 BF 0F 00 80 00 29 FD 1A BE FA 51 45 4D 55 20 + 56 56 46 41 54 20 46 41 54 31 36 20 20 20 00 00" + ); + + const PADDING: &[u8] = concat_bytes!([0x00; 446], [0x55, 0xAA]); + + let mut bpb_data = DATA.to_vec(); + bpb_data.extend_from_slice(PADDING); + + let bpb = Fat16Bpb::new(&bpb_data).unwrap(); + + assert_eq!(bpb.oem_name(), b"MSWIN4.1"); + assert_eq!(bpb.oem_name_str(), "MSWIN4.1"); + assert_eq!(bpb.bytes_per_sector(), 512); + assert_eq!(bpb.sectors_per_cluster(), 16); + assert_eq!(bpb.reserved_sector_count(), 1); + assert_eq!(bpb.fat_count(), 2); + assert_eq!(bpb.root_entries_count(), 512); + assert_eq!(bpb.total_sectors_16(), 0); + assert_eq!(bpb.media_descriptor(), 0xf8); + assert_eq!(bpb.sectors_per_fat(), 0xfc); + assert_eq!(bpb.sectors_per_track(), 63); + assert_eq!(bpb.track_count(), 16); + assert_eq!(bpb.hidden_sectors(), 63); + assert_eq!(bpb.total_sectors_32(), 0xfbfc1); + assert_eq!(bpb.drive_number(), 128); + assert_eq!(bpb.reserved_flags(), 0); + assert_eq!(bpb.boot_signature(), 0x29); + assert_eq!(bpb.volume_id(), 0xfabe1afd); + assert_eq!(bpb.volume_label(), b"QEMU VVFAT "); + assert_eq!(bpb.volume_label_str(), "QEMU VVFAT "); + assert_eq!(bpb.system_identifier(), b"FAT16 "); + assert_eq!(bpb.system_identifier_str(), "FAT16 "); + + assert_eq!(bpb.total_sectors(), 0xfbfc1); + + println!("{:#?}", bpb); + } +} diff --git a/src/0x06/pkg/storage/src/fs/fat16/directory.rs b/src/0x06/pkg/storage/src/fs/fat16/directory.rs new file mode 100644 index 00000000..a5c51d0a --- /dev/null +++ b/src/0x06/pkg/storage/src/fs/fat16/directory.rs @@ -0,0 +1,47 @@ +//! Directory +//! +//! reference: + +use super::*; + +#[derive(Debug)] +pub struct Directory { + /// The starting point of the directory listing. + pub cluster: Cluster, + /// Dir Entry of this directory, None for the root directory + pub entry: Option, +} + +impl Directory { + /// Create a new directory from a cluster number. + pub fn new(cluster: Cluster) -> Self { + Directory { + cluster, + entry: None, + } + } + + pub const fn root() -> Self { + Directory { + cluster: Cluster::ROOT_DIR, + entry: None, + } + } + + pub fn from_entry(entry: DirEntry) -> Self { + Directory { + cluster: entry.cluster, + entry: Some(entry), + } + } +} + +impl core::fmt::Display for Directory { + fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { + write!( + f, + "Directory(cluster: {}, entry: {:?})", + self.cluster, self.entry + ) + } +} diff --git a/src/0x06/pkg/storage/src/fs/fat16/direntry.rs b/src/0x06/pkg/storage/src/fs/fat16/direntry.rs new file mode 100644 index 00000000..a2cf9412 --- /dev/null +++ b/src/0x06/pkg/storage/src/fs/fat16/direntry.rs @@ -0,0 +1,262 @@ +//! Directory Entry +//! +//! reference: + +use crate::*; +use bitflags::bitflags; +use chrono::LocalResult::Single; +use chrono::{DateTime, TimeZone, Utc}; +use core::fmt::{Debug, Display}; +use core::ops::*; + +#[derive(Debug, Eq, PartialEq, Clone)] +pub struct DirEntry { + pub filename: ShortFileName, + pub moditified_time: FsTime, + pub created_time: FsTime, + pub accessed_time: FsTime, + pub cluster: Cluster, + pub attributes: Attributes, + pub size: u32, +} + +#[derive(Copy, Clone, PartialEq, Eq)] +pub struct Cluster(pub u32); + +bitflags! { + /// File Attributes + #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] + pub struct Attributes: u8 { + const READ_ONLY = 0x01; + const HIDDEN = 0x02; + const SYSTEM = 0x04; + const VOLUME_ID = 0x08; + const DIRECTORY = 0x10; + const ARCHIVE = 0x20; + const LFN = 0x0f; // Long File Name, Not Implemented + } +} + +impl DirEntry { + pub const LEN: usize = 0x20; + + pub fn filename(&self) -> String { + // NOTE: ignore the long file name in FAT16 for lab + if self.is_valid() && !self.is_long_name() { + format!("{}", self.filename) + } else { + String::from("unknown") + } + } + + /// For Standard 8.3 format + /// + /// reference: https://osdev.org/FAT#Standard_8.3_format + pub fn parse(data: &[u8]) -> Result { + let filename = ShortFileName::new(&data[..11]); + + // FIXME: parse the rest of the fields + // - ensure you can pass the test + // - you may need `prase_datetime` function + + Ok(DirEntry { + filename, + moditified_time, + created_time, + accessed_time, + cluster: Cluster(cluster), + attributes, + size, + }) + } + + pub fn as_meta(&self) -> Metadata { + self.into() + } +} + +fn prase_datetime(time: u32) -> FsTime { + // FIXME: parse the year, month, day, hour, min, sec from time + + if let Single(time) = Utc.with_ymd_and_hms(year, month, day, hour, min, sec) { + time + } else { + DateTime::from_timestamp_millis(0).unwrap() + } +} + +#[derive(PartialEq, Eq, Clone)] +pub struct ShortFileName { + pub name: [u8; 8], + pub ext: [u8; 3], +} + +impl ShortFileName { + pub fn new(buf: &[u8]) -> Self { + Self { + name: buf[..8].try_into().unwrap(), + ext: buf[8..11].try_into().unwrap(), + } + } + + pub fn basename(&self) -> &str { + core::str::from_utf8(&self.name).unwrap() + } + + pub fn extension(&self) -> &str { + core::str::from_utf8(&self.ext).unwrap() + } + + pub fn is_eod(&self) -> bool { + self.name[0] == 0x00 && self.ext[0] == 0x00 + } + + pub fn is_unused(&self) -> bool { + self.name[0] == 0xE5 + } + + pub fn matches(&self, sfn: &ShortFileName) -> bool { + self.name == sfn.name && self.ext == sfn.ext + } + + /// Parse a short file name from a string + pub fn parse(name: &str) -> Result { + // FIXME: implement the parse function + // use `FilenameError` and into `FsError` + // use different error types for following conditions: + // + // - use 0x20 ' ' for right padding + // - check if the filename is empty + // - check if the name & ext are too long + // - period `.` means the start of the file extension + // - check if the period is misplaced (after 8 characters) + // - check if the filename contains invalid characters: + // [0x00..=0x1F, 0x20, 0x22, 0x2A, 0x2B, 0x2C, 0x2F, 0x3A, + // 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x5B, 0x5C, 0x5D, 0x7C] + } +} + +impl Debug for ShortFileName { + fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { + write!(f, "{}", self) + } +} + +impl Display for ShortFileName { + fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { + if self.ext[0] == 0x20 { + write!(f, "{}", self.basename().trim_end()) + } else { + write!( + f, + "{}.{}", + self.basename().trim_end(), + self.extension().trim_end() + ) + } + } +} + +impl Cluster { + /// Magic value indicating an invalid cluster value. + pub const INVALID: Cluster = Cluster(0xFFFF_FFF6); + /// Magic value indicating a bad cluster. + pub const BAD: Cluster = Cluster(0xFFFF_FFF7); + /// Magic value indicating a empty cluster. + pub const EMPTY: Cluster = Cluster(0x0000_0000); + /// Magic value indicating the cluster holding the root directory + /// (which doesn't have a number in Fat16 as there's a reserved region). + pub const ROOT_DIR: Cluster = Cluster(0xFFFF_FFFC); + /// Magic value indicating that the cluster is allocated and is the final cluster for the file + pub const END_OF_FILE: Cluster = Cluster(0xFFFF_FFFF); +} + +impl Add for Cluster { + type Output = Cluster; + fn add(self, rhs: u32) -> Cluster { + Cluster(self.0 + rhs) + } +} + +impl AddAssign for Cluster { + fn add_assign(&mut self, rhs: u32) { + self.0 += rhs; + } +} + +impl Add for Cluster { + type Output = Cluster; + fn add(self, rhs: Cluster) -> Cluster { + Cluster(self.0 + rhs.0) + } +} + +impl AddAssign for Cluster { + fn add_assign(&mut self, rhs: Cluster) { + self.0 += rhs.0; + } +} + +impl From<&DirEntry> for Metadata { + fn from(entry: &DirEntry) -> Metadata { + Metadata { + entry_type: if entry.is_directory() { + FileType::Directory + } else { + FileType::File + }, + name: entry.filename(), + len: entry.size as usize, + created: Some(entry.created_time), + accessed: Some(entry.accessed_time), + modified: Some(entry.moditified_time), + } + } +} + +impl Display for Cluster { + fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { + write!(f, "0x{:08X}", self.0) + } +} + +impl Debug for Cluster { + fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { + write!(f, "0x{:08X}", self.0) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_dir_entry() { + let data = hex_literal::hex!( + "4b 45 52 4e 45 4c 20 20 45 4c 46 20 00 00 0f be + d0 50 d0 50 00 00 0f be d0 50 02 00 f0 e4 0e 00" + ); + + let res = DirEntry::parse(&data).unwrap(); + + assert_eq!(&res.filename.name, b"KERNEL "); + assert_eq!(&res.filename.ext, b"ELF"); + assert_eq!(res.attributes, Attributes::ARCHIVE); + assert_eq!(res.cluster, Cluster(2)); + assert_eq!(res.size, 0xee4f0); + assert_eq!( + res.created_time, + Utc.with_ymd_and_hms(2020, 6, 16, 23, 48, 30).unwrap() + ); + assert_eq!( + res.moditified_time, + Utc.with_ymd_and_hms(2020, 6, 16, 23, 48, 30).unwrap() + ); + assert_eq!( + res.accessed_time, + Utc.with_ymd_and_hms(2020, 6, 16, 0, 0, 0).unwrap() + ); + + println!("{:#?}", res); + } +} diff --git a/src/0x06/pkg/storage/src/fs/fat16/file.rs b/src/0x06/pkg/storage/src/fs/fat16/file.rs new file mode 100644 index 00000000..3e10a034 --- /dev/null +++ b/src/0x06/pkg/storage/src/fs/fat16/file.rs @@ -0,0 +1,64 @@ +//! File +//! +//! reference: + +use super::*; + +#[derive(Debug, Clone)] +pub struct File { + /// The current offset in the file + offset: usize, + /// The current cluster of this file + current_cluster: Cluster, + /// DirEntry of this file + entry: DirEntry, + /// The file system handle that contains this file + handle: Fat16Handle, +} + +impl File { + pub fn new(handle: Fat16Handle, entry: DirEntry) -> Self { + Self { + offset: 0, + current_cluster: entry.cluster, + entry, + handle, + } + } + + pub fn length(&self) -> usize { + self.entry.size as usize + } +} + +impl Read for File { + fn read(&mut self, buf: &mut [u8]) -> Result { + // FIXME: read file content from disk + // CAUTION: file length / buffer size / offset + // + // - `self.offset` is the current offset in the file in bytes + // - use `self.handle` to read the blocks + // - use `self.entry` to get the file's cluster + // - use `self.handle.cluster_to_sector` to convert cluster to sector + // - update `self.offset` after reading + // - update `self.cluster` with FAT if necessary + } +} + +// NOTE: `Seek` trait is not required for this lab +impl Seek for File { + fn seek(&mut self, pos: SeekFrom) -> Result { + unimplemented!() + } +} + +// NOTE: `Write` trait is not required for this lab +impl Write for File { + fn write(&mut self, _buf: &[u8]) -> Result { + unimplemented!() + } + + fn flush(&mut self) -> Result<()> { + unimplemented!() + } +} diff --git a/src/0x06/pkg/storage/src/fs/fat16/impls.rs b/src/0x06/pkg/storage/src/fs/fat16/impls.rs new file mode 100644 index 00000000..3427951d --- /dev/null +++ b/src/0x06/pkg/storage/src/fs/fat16/impls.rs @@ -0,0 +1,67 @@ +use super::*; + +impl Fat16Impl { + pub fn new(inner: impl BlockDevice) -> Self { + let mut block = Block::default(); + let block_size = Block512::size(); + + inner.read_block(0, &mut block).unwrap(); + let bpb = Fat16Bpb::new(block.as_ref()).unwrap(); + + trace!("Loading Fat16 Volume: {:#?}", bpb); + + // HINT: FirstDataSector = BPB_ResvdSecCnt + (BPB_NumFATs * FATSz) + RootDirSectors; + let fat_start = bpb.reserved_sector_count() as usize; + let root_dir_size = { /* FIXME: get the size of root dir from bpb */ }; + let first_root_dir_sector = { /* FIXME: calculate the first root dir sector */ }; + let first_data_sector = first_root_dir_sector + root_dir_size; + + Self { + bpb, + inner: Box::new(inner), + fat_start, + first_data_sector, + first_root_dir_sector, + } + } + + pub fn cluster_to_sector(&self, cluster: &Cluster) -> usize { + match *cluster { + Cluster::ROOT_DIR => self.first_root_dir_sector, + Cluster(c) => { + // FIXME: calculate the first sector of the cluster + // HINT: FirstSectorofCluster = ((N – 2) * BPB_SecPerClus) + FirstDataSector; + } + } + } + + // FIXME: YOU NEED TO IMPLEMENT THE FILE SYSTEM OPERATIONS HERE + // - calculate the sectors and the clusters + // - read the FAT and get cluster chain + // - traverse the cluster chain and read the data + // - parse the directory entries + // - ... + // - finally, implement the FileSystem trait for Fat16 with `self.handle` +} + +impl FileSystem for Fat16 { + fn read_dir(&self, path: &str) -> Result + Send>> { + // FIXME: read dir and return an iterator for all entries + todo!() + } + + fn open_file(&self, path: &str) -> Result { + // FIXME: open file and return a file handle + todo!() + } + + fn metadata(&self, path: &str) -> Result { + // FIXME: read metadata of the file / dir + todo!() + } + + fn exists(&self, path: &str) -> Result { + // FIXME: check if the file / dir exists + todo!() + } +} diff --git a/src/0x06/pkg/storage/src/fs/fat16/mod.rs b/src/0x06/pkg/storage/src/fs/fat16/mod.rs new file mode 100644 index 00000000..4d5eea48 --- /dev/null +++ b/src/0x06/pkg/storage/src/fs/fat16/mod.rs @@ -0,0 +1,58 @@ +pub mod bpb; +pub mod directory; +pub mod direntry; +pub mod file; +pub mod impls; + +use crate::*; +use directory::Directory; +use direntry::*; +use file::File; + +use bpb::Fat16Bpb; + +const BLOCK_SIZE: usize = 512; + +/// Identifies a Fat16 filesystem on the disk. +pub struct Fat16 { + handle: Fat16Handle, +} + +impl Fat16 { + pub fn new(inner: impl BlockDevice) -> Self { + Self { + handle: Arc::new(Fat16Impl::new(inner)), + } + } +} + +type Fat16Handle = Arc; + +/// The Fat16 filesystem. +/// +/// The partition is a collection of clusters. +/// BPB (Boot Parameter Block) is the first sector of the partition. +/// The BPB contains information about the filesystem. +/// +/// [ Fat16 BPB ] [ Data ] +pub struct Fat16Impl { + pub(crate) inner: Box>, + pub bpb: Fat16Bpb, + pub fat_start: usize, + pub first_data_sector: usize, + pub first_root_dir_sector: usize, +} + +impl core::fmt::Debug for Fat16 { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + f.debug_struct("Fat16") + .field("bpb", &self.handle.bpb) + .finish() + } +} + +impl core::fmt::Debug for Fat16Impl { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + f.debug_struct("Fat16Impl").field("bpb", &self.bpb).finish() + } +} diff --git a/src/0x06/pkg/storage/src/fs/mod.rs b/src/0x06/pkg/storage/src/fs/mod.rs new file mode 100644 index 00000000..c0f2cd56 --- /dev/null +++ b/src/0x06/pkg/storage/src/fs/mod.rs @@ -0,0 +1 @@ +pub mod fat16; diff --git a/src/0x06/pkg/storage/src/lib.rs b/src/0x06/pkg/storage/src/lib.rs new file mode 100644 index 00000000..a9024923 --- /dev/null +++ b/src/0x06/pkg/storage/src/lib.rs @@ -0,0 +1,24 @@ +#![cfg_attr(not(test), no_std)] +#![allow(dead_code, unused_imports)] +#![cfg_attr(test, feature(concat_bytes))] +#![feature(trait_alias)] + +#[macro_use] +extern crate alloc; +#[macro_use] +extern crate log; + +#[macro_use] +pub mod common; +mod fs; +mod partition; + +pub use common::*; +pub use fs::*; +pub use partition::*; + +use alloc::borrow::ToOwned; +use alloc::boxed::Box; +use alloc::string::String; +use alloc::sync::Arc; +use alloc::vec::Vec; diff --git a/src/0x06/pkg/storage/src/partition/mbr/entry.rs b/src/0x06/pkg/storage/src/partition/mbr/entry.rs new file mode 100644 index 00000000..8c35ac7b --- /dev/null +++ b/src/0x06/pkg/storage/src/partition/mbr/entry.rs @@ -0,0 +1,86 @@ +//! Partition Metadata +//! +//! This struct represents partitions' metadata. + +use super::*; + +#[derive(Clone, Copy, Default)] +pub struct MbrPartition { + data: [u8; 16], +} + +impl MbrPartition { + /// Parse a partition entry from the given data. + pub fn parse(data: &[u8; 16]) -> MbrPartition { + MbrPartition { + data: data.to_owned(), + } + } + + // FIXME: define other fields in the MbrPartition + // - use `define_field!` macro + // - ensure you can pass the tests + // - you may change the field names if you want + // + // NOTE: some fields are not aligned with byte. + // define your functions to extract values: + // + // 0x02 - 0x03 begin sector & begin cylinder + // 0x06 - 0x07 end sector & end cylinder + + // an example of how to define a field + // move your mouse on the `define_field!` to see the docs + define_field!(u8, 0x00, status); + + pub fn is_active(&self) -> bool { + self.status() == 0x80 + } +} + +impl core::fmt::Debug for MbrPartition { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + f.debug_struct("Partition Meta Data") + .field("Active", &self.is_active()) + .field("Begin Head", &format!("0x{:02x}", self.begin_head())) + .field("Begin Sector", &format!("0x{:04x}", self.begin_sector())) + .field( + "Begin Cylinder", + &format!("0x{:04x}", self.begin_cylinder()), + ) + .field( + "Partition Type", + &format!("0x{:02x}", self.partition_type()), + ) + .field("End Head", &format!("0x{:02x}", self.end_head())) + .field("End Sector", &format!("0x{:04x}", self.end_sector())) + .field("End Cylinder", &format!("0x{:04x}", self.end_cylinder())) + .field("Begin LBA", &format!("0x{:08x}", self.begin_lba())) + .field("Total LBA", &format!("0x{:08x}", self.total_lba())) + .finish() + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn partition_test() { + let data = hex_literal::hex!("80 01 01 00 0b fe bf fc 3f 00 00 00 7e 86 bb 00"); + + let meta = MbrPartition::parse(&data); + + println!("{:#?}", meta); + + assert!(meta.is_active()); + assert_eq!(meta.begin_head(), 1); + assert_eq!(meta.begin_sector(), 1); + assert_eq!(meta.begin_cylinder(), 0); + assert_eq!(meta.partition_type(), 0x0b); + assert_eq!(meta.end_head(), 254); + assert_eq!(meta.end_sector(), 63); + assert_eq!(meta.end_cylinder(), 764); + assert_eq!(meta.begin_lba(), 63); + assert_eq!(meta.total_lba(), 12289662); + } +} diff --git a/src/0x06/pkg/storage/src/partition/mbr/mod.rs b/src/0x06/pkg/storage/src/partition/mbr/mod.rs new file mode 100644 index 00000000..82d67518 --- /dev/null +++ b/src/0x06/pkg/storage/src/partition/mbr/mod.rs @@ -0,0 +1,72 @@ +//! MbrTable + +mod entry; + +use core::marker::PhantomData; + +use crate::*; +pub use entry::*; + +/// The MBR Table +/// +/// The disk is a collection of partitions. +/// MBR (Master Boot Record) is the *first sector* of the disk. +/// The MBR contains information about the partitions. +/// +/// [ MBR | Partitions ] [ Partition 1 ] [ Partition 2 ] [ Partition 3 ] [ Partition 4 ] +pub struct MbrTable +where + T: BlockDevice + Clone, + B: BlockTrait, +{ + inner: T, + partitions: [MbrPartition; 4], + _block: PhantomData, +} + +impl PartitionTable for MbrTable +where + T: BlockDevice + Clone, + B: BlockTrait, +{ + fn parse(inner: T) -> Result { + let mut block = B::default(); + inner.read_block(0, &mut block)?; + + let mut partitions = Vec::with_capacity(4); + let buffer = block.as_ref(); + + for i in 0..4 { + partitions.push( + // FIXME: parse the mbr partition from the buffer + // - just ignore other fields for mbr + ); + + if partitions[i].is_active() { + trace!("Partition {}: {:#?}", i, partitions[i]); + } + } + + Ok(Self { + inner, + partitions: partitions.try_into().unwrap(), + _block: PhantomData, + }) + } + + fn partitions(&self) -> Result>> { + let mut parts = Vec::new(); + + for part in self.partitions { + if part.is_active() { + parts.push(Partition::new( + self.inner.clone(), + part.begin_lba() as usize, + part.total_lba() as usize, + )); + } + } + + Ok(parts) + } +} diff --git a/src/0x06/pkg/storage/src/partition/mod.rs b/src/0x06/pkg/storage/src/partition/mod.rs new file mode 100644 index 00000000..c46d91f1 --- /dev/null +++ b/src/0x06/pkg/storage/src/partition/mod.rs @@ -0,0 +1,88 @@ +use core::marker::PhantomData; + +use crate::*; + +pub mod mbr; + +/// Partition table trait +pub trait PartitionTable +where + T: BlockDevice, + B: BlockTrait, + Self: Sized, +{ + /// Parse the partition table + fn parse(inner: T) -> Result; + + /// Returns the partitions + fn partitions(&self) -> Result>>; +} + +/// Identifies a partition on the disk. +#[derive(Clone, Copy)] +pub struct Partition +where + T: BlockDevice, + B: BlockTrait, +{ + inner: T, + offset: usize, + size: usize, + _block: PhantomData, +} + +impl Partition +where + T: BlockDevice, + B: BlockTrait, +{ + pub fn new(inner: T, offset: usize, size: usize) -> Self { + Self { + inner, + offset, + size, + _block: PhantomData, + } + } +} + +impl core::fmt::Debug for Partition +where + T: BlockDevice, + B: BlockTrait, +{ + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + f.debug_struct("Partition") + .field("offset", &self.offset) + .field("size", &self.size) + .finish() + } +} + +impl BlockDevice for Partition +where + T: BlockDevice, + B: BlockTrait, +{ + fn block_count(&self) -> Result { + self.inner.block_count() + } + + fn read_block(&self, offset: usize, block: &mut B) -> Result<()> { + if offset >= self.size { + return Err(FsError::InvalidOffset); + } + + // FIXME: calculate the block offset for inner device + // FIXME: read from the inner device + } + + fn write_block(&self, offset: usize, block: &B) -> Result<()> { + if offset >= self.size { + return Err(FsError::InvalidOffset); + } + + // FIXME: calculate the block offset for inner device + // FIXME: write to the inner device + } +}