【问题标题】:How program and compile "Hello World" code in kernel mode of linux?如何在 linux 内核模式下编写和编译“Hello World”代码?
【发布时间】:2010-09-17 08:32:26
【问题描述】:

是的,就像标题一样,我不知道如何在linux内核模式下编写和编译“Hello World”代码,请用最短且易于理解的方式帮助我。谢谢 ! (也欢迎任何相关文件,我只是新手)

【问题讨论】:

  • 但是你最后是怎么做到的呢?您遵循的步骤是什么?您是否首先运行了虚拟机,然后分发了 iso 以对其进行测试,或者步骤如何?
  • 哦不,我只是在 Linux Kernel 模式下测试它,而不是从启动。所以不需要iso和虚拟机。很抱歉我没有回复我的答案,也许它已经来自其他在线说明。

标签: c++ linux-kernel


【解决方案1】:

你可以开始Here:

/*  
 *  hello-1.c - The simplest kernel module.
 */
#include <linux/module.h>   /* Needed by all modules */
#include <linux/kernel.h>   /* Needed for KERN_INFO */

int init_module(void)
{
    printk(KERN_INFO "Hello world 1.\n");

    /* 
     * A non 0 return means init_module failed; module can't be loaded. 
     */
    return 0;
}

void cleanup_module(void)
{
    printk(KERN_INFO "Goodbye world 1.\n");
}

【讨论】:

    【解决方案2】:

    哇,这是个问题!

    首先想想Linux内核没有终端,没有与用户直接交互。 Hello World 不能像命令行上的任何其他用户程序一样被调用。我能想到的最合适的是一个字符设备驱动程序,它实现为一个内核模块,例如在设备 /dev/helloworld 上读取“Hello World”。

    我可以指点你阅读 Rubini 的书:Linux Device Drivers。它解释并提供了创建简单 Hello World 类型内核模块的示例。

    【讨论】:

    • 谢谢大家,我刚刚在内核模式下完成了我的第一个“Hello World”。这个“编程深度”非常有趣:)
    【解决方案3】:

    附加信息:printk 函数由内核提供,它打印到文件,例如 /var/log/messages。在Ubuntu 中,这是 /var/log/syslog 文件。您可以在此文件中看到 hello 模块的输出。 另外,感谢 fseto 指出 Linux 内核模块编程指南。太棒了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-01
      • 2010-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-07
      相关资源
      最近更新 更多