Songqian Li's Blog

去历史上留点故事

本文章介绍了对project-c 社区 linux-prjc 项目5.15 版本内核编译测试的准备工作。

纯净版内核编译:

1
2
3
wget https://gitlab.com/alfredchen/projectc/-/raw/master/vm_kernel_config/5.15-pds-vm-mini-smt_nice.config?inline=false
cp 5.15-pds-vm-mini-smt_nice.config linux-prjc/.config
nice -n 10 make -j8

KVM 准备工作

必须拥有 支持 VT-x(vmx)的 Intel 处理器 或者支持 AMD-V (svm) 技术的 AMD 处理器

  1. 确认 BIOS 中的 VT 或 AMD-V 开启
  2. 使用 VM 的用户确认虚拟机设置->处理器->虚拟化引擎中的虚拟化Intel VT-x/EPT 或 AMD-V/RVI(V)开启

安装编译 qemu 的依赖

1
sudo apt install ninja-build libglib2.0-dev libpixman-1-dev

源码安装 qemu:

1
2
3
4
5
6
wget https://download.qemu.org/qemu-6.2.0.tar.xz
tar xvf qemu-6.2.0.tar.xz
cd qemu-6.2.0
./configure
make -j8
sudo make install

启动 qemu:

1
2
3
alias vmk='qemu-system-x86_64 -nographic -serial mon:stdio -machine q35,accel=kvm -cpu Haswell -smp cores=2,threads=2,sockets=2 -kernel arch/x86/boot/bzImage -append "console=ttyS0 ignore_loglevel threadirqs nokaslr"'
cd ~/linux-prjc/
vmk

退出 qemu:

先按Ctrl+A,然后按x

相关文章
评论
分享
  • Clone Linux Kernel Code on Windows

    出现问题的原因 Linux Kernel 代码文件有用系统保留字aux命名的文件,导致 clone 名字中有aux、com1等保留字时就会失败; Linux 文件名区分大小写,但 Win 下不区分大小写,导致当两个文件只是名字大小...

    Clone Linux Kernel Code on Windows
  • Compile Linux Kernel Version of Project-C Community

    本文介绍了如何安装 Project-C 维护的带有Alternative CPU Schedulers的 Linux Kernel 下载源代码 下载 kernel 源代码,默认为 5.15-lts 分支 1git clone h...

    Compile Linux Kernel Version of Project-C Community
  • 《操作系统真象还原》:第十章 输入输出系统

    上一章中我们遇到的字符混乱和 GP 异常问题,根本原因是由于临界区代码的资源竞争,这需要一些互斥的方法来保证操作的原子性。 10.1 同步机制——锁 10.1.1 排查 GP 异常,理解原子操作 多线程执行刷屏时光标值越界导致...

    《操作系统真象还原》:第十章 输入输出系统
  • 《操作系统真象还原》:第九章 线程

    线程和进程将分两部分实现,本章先讲解线程。 9.1 实现内核线程 9.1.1 执行流 在处理器数量不变的情况下,多任务操作系统采用多道程序设计的方式,使处理器在所有任务之间来回切换,这称为“伪并行”,由操作系统中的任务调度器决定当...

    《操作系统真象还原》:第九章 线程
  • GPU虚拟化

    用户层虚拟化 本地 API 拦截和 API formwarding 在用户态实现一个函数库,假设叫 libwrapper, 它要实现底层库的所有 API; 让 APP 调用这个 libwrapper。如何做? libwrap...

    GPU虚拟化
  • 硬件虚拟化

    硬件虚拟化介绍 硬件虚拟化要做的事情 体系结构支持 体系结构 实现功能 作用 模式切换 Host CPU <-> Guest CPU 切换 CPU 资源隔离 二阶段地址转换 GVA-> GPA...

    硬件虚拟化
  • 《操作系统真象还原》:第八章 内存管理系统

    8.1 makefile 简介 这部分可参考阮一峰的讲解:https://www.ruanyifeng.com/blog/2015/02/make.html 8.1.1 makefile 是什么 makefile 是 Linu...

    《操作系统真象还原》:第八章 内存管理系统
  • 《操作系统真象还原》:第七章 中断

    7.1 中断是什么,为什么要有中断 运用中断能够显著提升并发,从而大幅提升效率。 7.2 操作系统是中断驱动的 略 7.3 中断分类 把中断按事件来源分类,来自 CPU 外部的中断就称为外部中断,来自 CPU 内部的中断称为内部...

    《操作系统真象还原》:第七章 中断
  • 《操作系统真象还原》:第六章 完善内核

    6.1 函数调用约定简介 咱们实验使用cdecl。这里提一下stdcall,cdecl与stdcall的区别在于由谁来回收栈空间。 stdcall是被调用者清理参数所占的栈空间。 举例来说: 12int subtract(int ...

    《操作系统真象还原》:第六章 完善内核
  • 《操作系统真象还原》:第五章 保护模式进阶——加载内核

    5.3 加载内核 5.3.1 用 C 语言写内核 第一个 C 语言代码: 1234int main(void) { while(1); return 0;} 这个内核文件什么都没做,通过while(1)这个死循...

    《操作系统真象还原》:第五章 保护模式进阶——加载内核