#save-file #crash #log #reboot #computer #disk #happened

无std boot2dump

一个用于保存家酿操作系统(homebrew OS)中发生的崩溃日志的库

1个不稳定版本

0.0.1 2021年12月19日

#11 in #reboot

MIT/Apache

11KB

一个库,用于操作系统开发者将发生在自己内核中的内核崩溃日志保存到磁盘上的文件,并在计算机重启。

先决条件

要使用此crate,您的内核需要满足以下先决条件

  • CPU是x86_64,且处于64位模式。
  • 文件系统是ext4,且位于virtio-blk设备上。
  • 存在一个足够大的崩溃日志文件(例如,以下示例中的kerla.dump),它已经存在于根目录中。
  • 从物理地址0开始映射的虚拟地址为0xffff_8000_0000_0000。它应该覆盖包含boot2dump图像的内存页。

如何使用

使用非常简单:在您的panic处理程序末尾,调用save_to_file_and_reboot。它将保存给定的缓冲区到文件,然后重启计算机。

示例

use boot2dump::save_to_file_and_reboot;

#[panic_handler]
fn panic(info: &core::panic::PanicInfo) -> ! {
    // Save the panic message into a file. Let's hope `format!` won't panic...
    let message = format!("{}", info).as_bytes();
    save_to_file_and_reboot("kerla.dump",  message.as_bytes());
}

无运行时依赖项