如何开发Linux内核?

推荐这篇文章:

http://www.tldp.org/LDP/lkmpg/2.6/html/lkmpg.html

下面是在Ubuntu下的输出:

root@myhostname  # make
make: Warning: File `Makefile' has modification time 11 s in the future
make -C /lib/modules/3.13.0-24-generic/build M=/root modules
make[1]: Entering directory `/usr/src/linux-headers-3.13.0-24-generic'
make[2]: Warning: File `/root/Makefile' has modification time 10 s in the future
  CC [M]  /root/hello-1.o
make[2]: warning:  Clock skew detected.  Your build may be incomplete.
  Building modules, stage 2.
make[2]: Warning: File `/root/Makefile' has modification time 8.9 s in the future
  MODPOST 1 modules
  CC      /root/hello-1.mod.o
  LD [M]  /root/hello-1.ko
make[2]: warning:  Clock skew detected.  Your build may be incomplete.
make[1]: Leaving directory `/usr/src/linux-headers-3.13.0-24-generic'
make: warning:  Clock skew detected.  Your build may be incomplete.

~
root@myhostname  # ls
A    B.c        hello-1.ko     hello-1.o  modules.order             MyFirstJavaProgram.java
A.c  dns        hello-1.mod.c  IP.txt     Module.symvers            SumOfN-thPowersIsAnN-thPower
B    hello-1.c  hello-1.mod.o  Makefile   MyFirstJavaProgram.class  SumOfN-thPowersIsAnN-thPower.c

~
root@myhostname  # insmod ./hello-1.ko

~
root@myhostname  # cat /var/log/kern.log
Feb  2 00:48:18 cmt-ub14x64-02 kernel: [8216591.312610] hello_1: module license 'unspecified' taints kernel.
Feb  2 00:48:18 cmt-ub14x64-02 kernel: [8216591.312617] Disabling lock debugging due to kernel taint
Feb  2 00:48:18 cmt-ub14x64-02 kernel: [8216591.312641] hello_1: module verification failed: signature and/or  required key missing - tainting kernel
Feb  2 00:48:18 cmt-ub14x64-02 kernel: [8216591.313139] Hello world 1.

~
root@myhostname  # cat /proc/modules
hello_1 12426 0 - Live 0xffffffffa01e9000 (POF)
nls_iso8859_1 12713 0 - Live 0xffffffffa01e4000
joydev 17381 0 - Live 0xffffffffa0183000
hid_generic 12548 0 - Live 0xffffffffa01db000
udf 89723 0 - Live 0xffffffffa01c4000
crc_itu_t 12707 1 udf, Live 0xffffffffa01bf000
psmouse 102222 0 - Live 0xffffffffa01a5000
serio_raw 13462 0 - Live 0xffffffffa017e000
hid_hyperv 13059 0 - Live 0xffffffffa012e000
hyperv_keyboard 12777 0 - Live 0xffffffffa00c6000
hid 106148 2 hid_generic,hid_hyperv, Live 0xffffffffa018a000
nfsd 280297 2 - Live 0xffffffffa0135000
auth_rpcgss 59338 1 nfsd, Live 0xffffffffa011e000
nfs_acl 12837 1 nfsd, Live 0xffffffffa00c1000
nfs 236636 0 - Live 0xffffffffa00e3000
hyperv_fb 17593 1 - Live 0xffffffffa00bb000
i2c_piix4 22155 0 - Live 0xffffffffa00b0000
lockd 93977 2 nfsd,nfs, Live 0xffffffffa00cb000
mac_hid 13205 0 - Live 0xffffffffa004f000
sunrpc 284404 6 nfsd,auth_rpcgss,nfs_acl,nfs,lockd, Live 0xffffffffa0069000
fscache 63988 1 nfs, Live 0xffffffffa0058000
lp 17759 0 - Live 0xffffffffa0028000
parport 42348 1 lp, Live 0xffffffffa0043000
hv_utils 19003 0 - Live 0xffffffffa003d000
hv_storvsc 17785 2 - Live 0xffffffffa0010000
hv_vmbus 50383 5 hid_hyperv,hyperv_keyboard,hyperv_fb,hv_utils,hv_storvsc, Live 0xffffffffa002f000
floppy 69370 0 - Live 0xffffffffa0016000
tulip 59672 0 - Live 0xffffffffa0000000

~
root@myhostname  # rmmod hello-1

~
root@myhostname  # cat /proc/modules
nls_iso8859_1 12713 0 - Live 0xffffffffa01e4000
joydev 17381 0 - Live 0xffffffffa0183000
hid_generic 12548 0 - Live 0xffffffffa01db000
udf 89723 0 - Live 0xffffffffa01c4000
crc_itu_t 12707 1 udf, Live 0xffffffffa01bf000
psmouse 102222 0 - Live 0xffffffffa01a5000
serio_raw 13462 0 - Live 0xffffffffa017e000
hid_hyperv 13059 0 - Live 0xffffffffa012e000
hyperv_keyboard 12777 0 - Live 0xffffffffa00c6000
hid 106148 2 hid_generic,hid_hyperv, Live 0xffffffffa018a000
nfsd 280297 2 - Live 0xffffffffa0135000
auth_rpcgss 59338 1 nfsd, Live 0xffffffffa011e000
nfs_acl 12837 1 nfsd, Live 0xffffffffa00c1000
nfs 236636 0 - Live 0xffffffffa00e3000
hyperv_fb 17593 1 - Live 0xffffffffa00bb000
i2c_piix4 22155 0 - Live 0xffffffffa00b0000
lockd 93977 2 nfsd,nfs, Live 0xffffffffa00cb000
mac_hid 13205 0 - Live 0xffffffffa004f000
sunrpc 284404 6 nfsd,auth_rpcgss,nfs_acl,nfs,lockd, Live 0xffffffffa0069000
fscache 63988 1 nfs, Live 0xffffffffa0058000
lp 17759 0 - Live 0xffffffffa0028000
parport 42348 1 lp, Live 0xffffffffa0043000
hv_utils 19003 0 - Live 0xffffffffa003d000
hv_storvsc 17785 2 - Live 0xffffffffa0010000
hv_vmbus 50383 5 hid_hyperv,hyperv_keyboard,hyperv_fb,hv_utils,hv_storvsc, Live 0xffffffffa002f000
floppy 69370 0 - Live 0xffffffffa0016000
tulip 59672 0 - Live 0xffffffffa0000000

~
root@myhostname  # cat /var/log/kern.log
Feb  2 00:48:18 cmt-ub14x64-02 kernel: [8216591.312610] hello_1: module license 'unspecified' taints kernel.
Feb  2 00:48:18 cmt-ub14x64-02 kernel: [8216591.312617] Disabling lock debugging due to kernel taint
Feb  2 00:48:18 cmt-ub14x64-02 kernel: [8216591.312641] hello_1: module verification failed: signature and/or  required key missing - tainting kernel
Feb  2 00:48:18 cmt-ub14x64-02 kernel: [8216591.313139] Hello world 1.
Feb  2 00:53:10 cmt-ub14x64-02 kernel: [8216883.303516] Goodbye world 1.

如何开发Linux内核?相关推荐

  1. ARM树莓派高级开发——linux内核源码、树莓派源码编译、SD卡挂载

    文章目录 linux内核开发基础(linux内核源码.树莓派源码编译.SD卡挂载) 树莓派等芯片带操作系统的启动过程 linux内核源码树 Linux内核源代码目录树结构: 树莓派Linux源码配置 ...

  2. 腾达路由器linux开发,Linux内核系统! 腾达8口路由器功能超强

    这款腾达这款型号为TEI618SK的宽带路由器最适合在大学宿舍里使用 了,它除了性能稳定外,价格也不是很贵,现在仅150元就能买到它. 相比于常用的4口路由,这款腾达的产品在体积上要稍微大一些.它采用 ...

  3. eclipse开发linux内核/驱动/应用测试实例

    推荐一个零声学院免费教程,个人觉得老师讲得不错, 分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis, fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,D ...

  4. c语言linux内核开发,Linux 内核源代码的几个C语言技巧

    1.#define中使用do{statement}while(0) 保证statement无论在何处都能正确执行一次 2.将链表操作抽象出来,与宿主结果相互独立.所有的链表操作都作用与list_hea ...

  5. 简历中linux内核开发,Linux内核中DMI实现简介

    1. 配置 在配置内核时,如果选择了CONFIG_DMI选项,会将DMI(Desktop Management interface)功能添加到内核中.此功能代码在drivers/firmware/Dm ...

  6. Linux 内核开发 - Eclipse内核开发环境搭建

    翻译这篇文章的时候,我也想过可能会有高手说,内核开发用vi就足够了,还用什么eclipse,当然对于内核中函数特别了解的人确实如此,但是对于新 手,每使用一个函数,就要去查找一下函数的定义,实在是非常 ...

  7. vscode读linux源码,vscode搭建linux内核开发环境

    vscode在linux下搭建内核驱动开发环境 一.前言 Souce insight是一个阅读.开发linux内核驱动模块的好工具,但是Source insight是收费的软件,而且没有原生linux ...

  8. Linux内核工程师是怎么步入内核殿堂的?

    上图是公众号冠名参加的篮球赛 对我来说,要搞好Linux内核,首先要做的就是买一块Linux开发板,然后就使劲捣鼓.下面是一位大神对于入门Linux内核的看法. 以下的「我」不是公众号作者 ===== ...

  9. Rust 要“进驻” Linux 内核了?Linux 之父:保持观望

    整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 主要由 C 语言编写内核的开源操作系统 Linux 一直广受开发者喜爱,然而由于 Linux 内核漏洞不断,其中多数情况下皆由内存安全引 ...

  10. 为信息产业自主化而奋斗,第一本龙芯平台的Linux内核书来了!

    十年磨一剑,第一本龙芯平台的Linux内核书来了! 这就是<用"芯"探核:基于龙芯的Linux内核探索解析>--一本基于龙芯平台,结合源代码来探索和解析Linux-5. ...

最新文章

  1. Java获取Mybatis动态生成的sql
  2. Ubuntu和Linux的区别
  3. 《大数据系统构建:可扩展实时数据系统构建原理与最佳实践》一1.5 大数据系统应有的属性...
  4. 你真正的去了解过Linux吗?不单单是一些命令操作,比如它的系统架构!!!
  5. SAP UI5的source code map(源代码映射)机制
  6. 转:链表相交问题 详解
  7. ESFramework介绍之(23)―― AgileTcp
  8. Centos7 下yum安装mysql
  9. eclipse中项目内存溢出问题
  10. 瑞幸咖啡业绩造假22亿:市场监管总局罚款1000万
  11. 分模块的maven项目调试时报Source not found的解决办法
  12. CentOS安装SonarQube7.9.1
  13. 部署java的tcp服务端_java网络编程(TCP)-服务端
  14. 820操作系统(2)进程管理
  15. JavaScript基础--ECMAScript部分--李南江
  16. 【懒懒的Tensorflow学习笔记一之快速入门】
  17. 超算计算机能不能玩游戏,拿神威太湖之光玩游戏会怎么样?
  18. win10系统更新遇到 “我们无法完成更新,正在撤销更改“ 解决办法
  19. 计算机网络第七版(谢希仁)学习目录
  20. 火焰特性识别的Matlab实现方法

热门文章

  1. MYSQL索引和权限管理
  2. pkill -kill -t pts/1
  3. SQLServer2005 没有日志文件(*.ldf) 只有数据文件(*.mdf) 恢复数据库的方法
  4. [leedcode 137] Single Number II
  5. JavaEE 支付宝支付
  6. [C#]System.Timers.Timer(2)
  7. winpcap的使用
  8. 常用SQL语句(1)
  9. linxu的文件类型和扩展名
  10. Relay log read failure