Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
M

mykernel

> 编程语言
Open source

mykernel 2.0: Develop your own OS kernel by reusing Linux infrastructure, based on x86-64/Linux Kernel 5.4.34.

709 stars0 likes3 views
WebsiteGitHub

About

mykernel 2.0: Develop your own OS kernel by reusing Linux infrastructure, based on x86-64/Linux Kernel 5.4.34.

Welcome to the mykernel 2.0

Develop your own OS kernel by reusing Linux infrastructure, based on x86-64/Linux Kernel 5.4.34.

mykernel 1.0 based on IA32/Linux Kernel 3.9.4.

Set up mykernel 2.0 in Ubuntu 18.04/20.04

Ubuntu22.04版本编译时遇到兼容性问题解决方案

bash
wget https://raw.github.com/mengning/mykernel/master/mykernel-2.0_for_linux-5.4.34.patch
sudo apt install axel
axel -n 20 https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.34.tar.xz
xz -d linux-5.4.34.tar.xz
tar -xvf linux-5.4.34.tar
cd linux-5.4.34
patch -p1  Configure standard kernel features ---> Enable support for printk ---> yes
 64-bit kernel ---> yes # 如果不需要64bit支持, 这个也可不要
 Device Drivers ---> Character devices ---> Enable TTY ---> yes

从qemu窗口中您可以看到my_start_kernel在执行,同时my_timer_handler时钟中断处理程序周期性执行。

进入mykernel目录您可以看到qemu窗口输出的内容的代码mymain.c和myinterrupt.c。当前有一个CPU执行C代码的上下文环境,同时具有中断处理程序的上下文环境,我们通过Linux内核代码模拟了一个具有时钟中断和C代码执行环境的硬件平台。

您只要在mymain.c基础上继续写进程描述PCB和进程链表管理等代码,在myinterrupt.c的基础上完成进程切换代码,一个可运行的小OS kernel就完成了。start to write your own OS kernel, enjoy it!

  • mykernel-2.0 patch generated by this command:
    • diff -Naur linux-5.4.34 linux-5.4.34-mykernel > mykernel-2.0_for_linux-5.3.34.patch

your own OS kernel example code

  • mypcb.h、mymain.c和myinterrupt.c实现了一个简单的时间片轮转调度进程的精简内核,如下为进程上下文切换的关键代码(视频讲解):
…
  • 这里的进程切换也仅仅是一种参考x86 Linux内核3.18.6的实现,而Linux内核中进程切换的实现经过了复杂的演化,参考Evolution of the x86 context switch in Linux

Comments

  • mykernel这样一个短小精悍的模拟内核,时常给我提供了看问题的角度和思路。当被庞杂的Linux内核代码弄得一头雾水时,我就去看看mykernel,很多复杂的问题就可以用简单的机制解释。——pianogirl

采用mykernel的课程和项目

  • 庖丁解牛Linux内核MOOC课程 - 国家精品在线开放课程
  • kernel-in-kernel
  • 操作系统导论
  • 《庖丁解牛Linux内核分析》

Licensing

under GNU GPL v2, or Contact us

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

C

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言