#mode #real #load #kernel #x86-64 #tiny #boot

realjump

一个小巧的crate,可以从x86-64内核加载和引导实模式代码(MBR,GRUB2等)

2个不稳定版本

0.2.0 2022年3月28日
0.1.0 2021年9月14日

#911 in Unix APIs

MIT许可证

10KB
198 代码行(不包括注释)

realjump

Build

realjump是一个小巧的#![no_std]crate,可以从您的x86-64内核加载和引导实模式代码(MBR,GRUB2等)。它将系统从长模式回到实模式并跳转到代码。

但是为什么这样做呢?

它主要用于快速从您的操作系统返回Linux,因为服务器硬件上的引导过程可能非常缓慢,您也太懒于在内核中实现一些类似kexec的功能。

使用方法

  1. 禁用中断。
  2. 将内存的前1MiB身份映射为可执行。
  3. 停止所有其他处理器。
  4. 调用realjump::boot(your_mbr_slice, 0x7c00).unwrap()
  5. realjump将处理其余部分。它将加载自己的GDT并将系统完全回退到实模式。

INT 13h

当您返回实模式时,某些BIOS服务(如INT 13h)可能不再工作。对于GRUB2,您可以通过直接使用realjump::boot_grub2加载core.img来解决这个问题。

无运行时依赖