mkernel 项目使用教程

mkernel 项目使用教程

mkernelA minimalist kernel项目地址:https://gitcode.com/gh_mirrors/mk/mkernel

1. 项目的目录结构及介绍

mkernel 是一个极简的内核项目,其目录结构如下:

mkernel/
├── boot.o
├── boot.s
├── grub.cfg
├── kernel.c
├── kernel.o
├── link.ld
├── Makefile
└── README.md

目录结构介绍:

  • boot.oboot.s: 引导程序的目标文件和源文件。
  • grub.cfg: GRUB 引导配置文件。
  • kernel.c: 内核的主要源代码文件。
  • kernel.o: 内核的目标文件。
  • link.ld: 链接脚本,用于链接内核。
  • Makefile: 编译和构建内核的 Makefile。
  • README.md: 项目说明文档。

2. 项目的启动文件介绍

boot.s

boot.s 是引导程序的汇编源文件,负责初始化 CPU 状态并跳转到内核入口点。其主要功能包括:

  • 设置 CPU 模式。
  • 初始化堆栈。
  • 跳转到 kernel_main 函数。

kernel.c

kernel.c 是内核的主要源代码文件,包含 kernel_main 函数。该函数是内核的入口点,负责初始化内核并输出 "my first kernel" 到屏幕上。

void kernel_main() {
    // 初始化内核
    // 输出 "my first kernel"
    char *video_memory = (char *)0xb8000;
    *video_memory = 'm';
    *(video_memory + 2) = 'y';
    *(video_memory + 4) = ' ';
    *(video_memory + 6) = 'f';
    *(video_memory + 8) = 'i';
    *(video_memory + 10) = 'r';
    *(video_memory + 12) = 's';
    *(video_memory + 14) = 't';
    *(video_memory + 16) = ' ';
    *(video_memory + 18) = 'k';
    *(video_memory + 20) = 'e';
    *(video_memory + 22) = 'r';
    *(video_memory + 24) = 'n';
    *(video_memory + 26) = 'e';
    *(video_memory + 28) = 'l';
}

3. 项目的配置文件介绍

grub.cfg

grub.cfg 是 GRUB 引导配置文件,用于配置 GRUB 引导加载器。其内容如下:

menuentry "mkernel" {
    multiboot /boot/mkernel
    boot
}

该配置文件定义了一个菜单项 "mkernel",并指定 GRUB 加载 /boot/mkernel 文件。

link.ld

link.ld 是链接脚本,用于链接内核。其内容如下:

ENTRY(kernel_main)

SECTIONS {
    . = 1M;

    .text BLOCK(4K) : ALIGN(4K) {
        *(.text)
    }

    .rodata BLOCK(4K) : ALIGN(4K) {
        *(.rodata)
    }

    .data BLOCK(4K) : ALIGN(4K) {
        *(.data)
    }

    .bss BLOCK(4K) : ALIGN(4K) {
        *(COMMON)
        *(.bss)
    }
}

该链接脚本定义了内核的入口点为 kernel_main,并指定了各个段的加载地址和对齐方式。


以上是 mkernel 项目的目录结构、启动文件和配置文件的详细介绍。希望这份教程能帮助你更好地理解和使用 mkernel 项目。

mkernelA minimalist kernel项目地址:https://gitcode.com/gh_mirrors/mk/mkernel

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时翔辛Victoria

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值