首页 > 解决方案 > 如何在我新制作的内核中启动 bash?

问题描述

我想在我的内核中启动 bash。

我曾尝试使用 system() 但是...我发现它只是用于小事。而不是用于内核开发。我现在被困在这里......

void kernel_entry()
{
  init_vga(GREEN, BLACK);
  print_string("$ ");
  test_input();

它说 print_string 我将用代码替换它以调出 bash。但我需要这部分的帮助......

标签: ckernel

解决方案


详细说明@Adam Zahran 的回答:

为了从内核运行一个进程,您需要创建一个新进程,然后execve("/bin/bash").

参考将是: start_kernel()-> arch_call_rest_init()-> rest_init()-> kernel_init()-> try_to_run_init_process()-> run_init_process() all you can find here

特别是 bash,至少在 Linux 上,被编译为动态链接的 ELF 二进制文件(原样/sbin/init......)所以你的内核需要能够支持ELF 二进制格式和动态加载

不用说,它还需要支持 bash 所做的所有系统调用,你可以在下运行bash看看strace(1)使用了哪些系统调用。


推荐阅读