rqdmap
博客
/
Posts
算法
/
ACM
漫评
/
Anime
归档
/
Archive
关于
/
About
日志
/
Changelog
统计
/
Statistics
博客
/
Posts
算法
/
ACM
漫评
/
Anime
归档
/
Archive
关于
/
About
日志
/
Changelog
统计
/
Statistics
QEMU
rCore-OS: 基本执行环境
2023.07.24 19:30
2023.08.16 21:51
OS
Rust
RISC-V
QEMU
9579字
系列文章 rCore操作系统实践 - rqdmap | blog 本章主要是讲解如何设计和实现建立在裸机上的执行环境, 并让应用程序能够在这样的执行环境中运行. 导言中说: 大多数程序员的第一行代码都从 Hello, world! 开始,当我们满怀着好奇心在编辑器内键入仅仅数个字节,再经过几行命令编译(靠的是编译器)、运行(靠的是操作系统),终于在黑洞洞的终端窗口中看到期望中的结果的时候,一扇通往编程世界的大门已经打开。 ...
rCore操作系统实践
2023.07.23 20:38
2023.08.16 21:51
OS
Rust
RISC-V
QEMU
530字
系列文章 rCore-OS: 基本执行环境 - rqdmap | blog rCore-OS: 批处理系统 - rqdmap | blog 在寻找Rust实践性的学习材料的过程中发现了rCore-OS项目, 其基于RISC-V架构实现一个用Rust写的操作系统; 教程看上去也不错, 十分的详实且成体系: rCore-Tutorial-Book-v3 3.6.0-alpha.1 文档 因而准备照着教程学习一下rcore-os, 并企图在过程中对Rust的基本编程与操作系统等方面都能获得更进一步的理解. ...
KML: 启用Kernel Model Linux
2023.03.08 10:58
2023.05.29 23:05
Linux
Kernel
Kernel Linux Mode
QEMU
4586字
KML简介 Kernel Mode Linux: Execute user processes in kernel mode 是一种允许用户程序运行于内核态的技术. 处于内核态的程序可以直接访问任意的内核空间, 无需再使用软中断和上下文切换等手段进行系统调用. 此外, 这些程序也会正常的参与分页和调度, 这样哪怕这些程序死循环, 整个系统也不会因此卡死. 如何使用KML? 编译了打好补丁的内核后, 在/trusted/目录下的程序将自动进入内核态运行. ...
基于QEMU搭建内核调试环境
2023.03.06 14:58
2023.05.29 23:05
Linux
Kernel
QEMU
GDB
3571字
搞一份内核源码, 并尝试调试一个拓展内核功能的补丁Kernel-Mode-Linux; 对于该模块的调试与分析见后续博文<启用Kernel Model Linux> Linux内核编译 这里使用的是Linux4.4.12(4.0.*, 3.1*, 2.6.*系列也有尝试过), 并且还需要打上PREEMPT_RT实时内核补丁, 借鉴于Github KML仓库: 1# 0. Clone this repository 2git clone git@github.com:sonicyang/KML.git 3 4# 1. Clone Linux 4.4.12 5git clone -b v4.4.12 --depth 1 git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git 6 7# You will get a copy of Linux 4.4.12 source in directory linux 8 9# 2. Download PREEMPT_RT patch 10wget https://cdn.kernel.org/pub/linux/kernel/projects/rt/4.4/older/patch-4.4.12-rt18.patch.xz 11 12# You will get a file patch-4.4.12-rt18.patch.xz 13 14# 3. Apply the PREEMPT_RT patch 15cd linux 16xzcat ../patch-4.4.12-rt18.patch.xz | patch -p1 17 18# You will have a modified Linux 4.4.12 source with PREEMPT_RT, now. 19 20# 4. Commit the the changes at once (Otherwise, git am will fail) 21git add . 22git commit -m "Apply PREEMPT_RT" 23 24# Now you should have a clean git repository without unstaged changes 25 26# 5. Apply these 2 patches 27cp ../KML/*.patch . 28git am *.patch 29 30# You are good to go 31# Compile the kernel then you should be able to use KML PREEMPT_RT补丁 关于该内核补丁, 是为了将Linux内核拓展为一个实时的操作系统. ...
创建时间
修改时间
字数