如何开发Linux内核?
如何开发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内核?相关推荐
- ARM树莓派高级开发——linux内核源码、树莓派源码编译、SD卡挂载
文章目录 linux内核开发基础(linux内核源码.树莓派源码编译.SD卡挂载) 树莓派等芯片带操作系统的启动过程 linux内核源码树 Linux内核源代码目录树结构: 树莓派Linux源码配置 ...
- 腾达路由器linux开发,Linux内核系统! 腾达8口路由器功能超强
这款腾达这款型号为TEI618SK的宽带路由器最适合在大学宿舍里使用 了,它除了性能稳定外,价格也不是很贵,现在仅150元就能买到它. 相比于常用的4口路由,这款腾达的产品在体积上要稍微大一些.它采用 ...
- eclipse开发linux内核/驱动/应用测试实例
推荐一个零声学院免费教程,个人觉得老师讲得不错, 分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis, fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,D ...
- c语言linux内核开发,Linux 内核源代码的几个C语言技巧
1.#define中使用do{statement}while(0) 保证statement无论在何处都能正确执行一次 2.将链表操作抽象出来,与宿主结果相互独立.所有的链表操作都作用与list_hea ...
- 简历中linux内核开发,Linux内核中DMI实现简介
1. 配置 在配置内核时,如果选择了CONFIG_DMI选项,会将DMI(Desktop Management interface)功能添加到内核中.此功能代码在drivers/firmware/Dm ...
- Linux 内核开发 - Eclipse内核开发环境搭建
翻译这篇文章的时候,我也想过可能会有高手说,内核开发用vi就足够了,还用什么eclipse,当然对于内核中函数特别了解的人确实如此,但是对于新 手,每使用一个函数,就要去查找一下函数的定义,实在是非常 ...
- vscode读linux源码,vscode搭建linux内核开发环境
vscode在linux下搭建内核驱动开发环境 一.前言 Souce insight是一个阅读.开发linux内核驱动模块的好工具,但是Source insight是收费的软件,而且没有原生linux ...
- Linux内核工程师是怎么步入内核殿堂的?
上图是公众号冠名参加的篮球赛 对我来说,要搞好Linux内核,首先要做的就是买一块Linux开发板,然后就使劲捣鼓.下面是一位大神对于入门Linux内核的看法. 以下的「我」不是公众号作者 ===== ...
- Rust 要“进驻” Linux 内核了?Linux 之父:保持观望
整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 主要由 C 语言编写内核的开源操作系统 Linux 一直广受开发者喜爱,然而由于 Linux 内核漏洞不断,其中多数情况下皆由内存安全引 ...
- 为信息产业自主化而奋斗,第一本龙芯平台的Linux内核书来了!
十年磨一剑,第一本龙芯平台的Linux内核书来了! 这就是<用"芯"探核:基于龙芯的Linux内核探索解析>--一本基于龙芯平台,结合源代码来探索和解析Linux-5. ...
最新文章
- Java获取Mybatis动态生成的sql
- Ubuntu和Linux的区别
- 《大数据系统构建:可扩展实时数据系统构建原理与最佳实践》一1.5 大数据系统应有的属性...
- 你真正的去了解过Linux吗?不单单是一些命令操作,比如它的系统架构!!!
- SAP UI5的source code map(源代码映射)机制
- 转:链表相交问题 详解
- ESFramework介绍之(23)―― AgileTcp
- Centos7 下yum安装mysql
- eclipse中项目内存溢出问题
- 瑞幸咖啡业绩造假22亿:市场监管总局罚款1000万
- 分模块的maven项目调试时报Source not found的解决办法
- CentOS安装SonarQube7.9.1
- 部署java的tcp服务端_java网络编程(TCP)-服务端
- 820操作系统(2)进程管理
- JavaScript基础--ECMAScript部分--李南江
- 【懒懒的Tensorflow学习笔记一之快速入门】
- 超算计算机能不能玩游戏,拿神威太湖之光玩游戏会怎么样?
- win10系统更新遇到 “我们无法完成更新,正在撤销更改“ 解决办法
- 计算机网络第七版(谢希仁)学习目录
- 火焰特性识别的Matlab实现方法
热门文章
- MYSQL索引和权限管理
- pkill -kill -t pts/1
- SQLServer2005 没有日志文件(*.ldf) 只有数据文件(*.mdf) 恢复数据库的方法
- [leedcode 137] Single Number II
- JavaEE 支付宝支付
- [C#]System.Timers.Timer(2)
- winpcap的使用
- 常用SQL语句(1)
- linxu的文件类型和扩展名
- Relay log read failure