编译内核步骤:

1.
先查看自己OS使用的内核版本

mrzhang@mrzhang:~$ uname -r
4.4.0-51-generic
mrzhang@mrzhang:~$

2.
如果安装系统时,自动安装了源码。在 /usr/src 目录下有对应的使用的版本目录(ubuntu安装完一般没有源码需要自己下载)。如下:

后缀generic表示通用版。

mrzhang@mrzhang:/usr/src$ ls
linux-headers-4.4.0-21  linux-headers-4.4.0-21-generic  linux-headers-4.4.0-51  linux-headers-4.4.0-51-generic

3.

下载源码 指令apt-cache search linux-source查看系统可用的源码版本

mrzhang@mrzhang:/usr/src$ apt-cache search linux-source
linux-source - Linux kernel source with Ubuntu patches
linux-source-4.4.0 - Linux kernel source for version 4.4.0 with Ubuntu patches
linux-source-4.8.0 - Linux kernel source for version 4.8.0 with Ubuntu patches
mrzhang@mrzhang:/usr/src$

安装linux源码。下载源码包。

mrzhang@mrzhang:/usr/src$ sudo apt-get install linux-source-4.4.0

下载完成后,在/usr/src下,文件名为:linux-source-4.4.0.tar.bz2,是一个压缩包,解压缩既可以得到整个内核的源代码: 
注意 已经切换到超级用户模式 
root@mrzhang:/usr/src#tar jxvf linux-source-4.4.0.tar.bz2 
解压后生成一个新的目录/usr/src/linux-source-4.4.0,所有的源代码都在该目录下。

4. 链接源码树

ln -s /usr/src/linux-source-4.4.0/    /lib/modules/4.4.0-51-generic/build  #源代码的目录要和build的内核版本匹配

进入该目录 
开始配置内核 选择最快的原版的配置(默认)方式 (我是如此) 
root@mrzhang:/usr/src/linux-source-4.4.0# make oldconfig 
当然你也可以使用 自己喜欢的配置方式 如 menuconfig , xconfig(必须有GTK环境吧)。反正不用剪裁什么,所以不管那种方式能配置它就行了。 
完成后,开始make 吧 这儿比较久 一般有1一个小时吧。

直接make bzImage。执行结束后,可以看到在当前目录下生成了一个新的文件: vmlinux, 其属性为-rwxr-xr-x。 
mrzhang@mrzhang:/usr/src/linux-source-4.4.0$ make bzImage

第一次会出现如下错误:

scripts/sign-file.c:23:30: fatal error: openssl/opensslv.h

解决方法如下:缺少这个库。

sudo apt-get install libssl-dev

然后 : 
root@mrzhang:/usr/src/linux-source-4.4.0#make modules             #将内核选项中的M选项的配置编译为了*.ko文件。
root@mrzhang:/usr/src/linux-source-4.4.0#make modules_install   #将生成的*.ko文件复制到/lib/modules/<内核版本号>/下面,并运行depmod生成modules.dep内核模块的依赖文件,insmod和modprobe需要这些依赖去自动加载依赖的ko文件,否则需要手动添加依赖模块后,才能将内核模块insert进内核中去。 或者用modprobe, modprobe会读取文件 /lib/modules/4.4.0-51-generic/modules.dep . 此文件可以由工具depmod 根据当前加载的ko模块生成。这个文件主要指明了内核版本需要加载哪些内核模块以及内核模块的依赖模块。modules.dep假设ko文件位于目录/lib/modules/version/目录下面。

以行为单位

#modulea.ko 依赖depend1.ko和depned2.ko

MODULEA.ko:  DEPEND1.ko  DEPEND2.ko

更准确的描述如下:

/lib/modules/2.6.29/kernel/a.ko: /lib/modules/2.6.29/kernel/c.ko /lib/modules/2.6.29/kernel/b.ko

/lib/modules/2.6.29/kernel/b.ko:

/lib/modules/2.6.29/kernel/c.ko: /lib/modules/2.6.29/kernel/b.ko

modproe a.ko的时候,他会按照顺序(从右向左)加载b.ko和c.ko.
执行结束之后,会在/lib/modules下生成新的目录/lib/modules/linux-source-4.4.0-generic/ 
。 在随后的编译模块文件时,要用到这个路径下的build目录。至此,内核编译完成。可以重启一下系统。

转载于:https://www.cnblogs.com/MrZhang1/p/6139302.html

Linux 编译内核相关推荐

  1. linux编译内核支持pam,linux编译内核make menuconfig报错解决办法

    linux编译内核时 输入make menuconfig命令 *** Unable to find the ncurses libraries or the *** required header f ...

  2. 非常好的Linux编译内核详解 - -

    转载: http://blog.chinaunix.net/uid-263488-id-2138150.html 非常好的Linux编译内核详解 - - 一.内核简介  内核,是一个操作系统的核心.它 ...

  3. Linux 编译内核且增加一个系统调用

    Linux 编译内核且增加一个系统调用 文章目录 Linux 编译内核且增加一个系统调用 一.在添加系统调用之前需要先编译一个Linux的内核. 解压 安装依赖 编译 安装内核 二.系统调用 声名和定 ...

  4. linux编译内核实验,实验六 Linux内核编译实验.doc

    实验六 Linux内核编译 讲师:杨行 [实验目的] 1.掌握Linux内核编译 2.了解Linux内核Makefile 3.了解Linux内核Kbuild系统 [实验原理] 网站可以下载标准内核文件 ...

  5. csky linux 编译内核,TQ2440的EmbedSky_hello模块编译内核问题及解决

    已在内核代码中添加EmbedSky_hello驱动为例,进行内核编译时候出现了一下几个问题: 1.在 /opt/EmbedSky/linux 2.6.30.4/drivers/char目录下修改&qu ...

  6. linux编译内核的步骤

    2019独角兽企业重金招聘Python工程师标准>>> 1.到https://www.kernel.org/ 下载需要的内核版本 2.上传到操作系统 3.解压到/usr/src目录下 ...

  7. vmware linux 编译内核,VMWare编译linux内核的注意事项

    用VMWare编译linux内核的注意事项: 1) 如果你在vmware下重新编译内核,硬盘用的是scsi的,以下选项必选:(或者使用IDE的硬盘) Device Drivers  --->; ...

  8. Linux编译内核的详细配置

    分类: Linux内核 2005-03-12 10:58 4492人阅读 评论(0) 收藏 举报 linux网络idedoswindowsdocumentation 前言之前言:谁是这篇文章的读者? ...

  9. LINUX 编译内核选项 向作者致敬

    Linux 2.6.19.x 内核编译配置选项简介 作者:金步国 版权声明 本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布.任何人都可以自由使用.转载.复制和再分发, ...

最新文章

  1. C语言——第0次作业(二)
  2. 自建ES迁移至阿里云ES(使用脚本及logstash同步)
  3. 浙江省经信委与新华三签署战略合作协议
  4. pyqt5 判断lineedit是否为空_是否注意过 isEmpty 和 isBlank 区别?
  5. 非客观书评(三)——《ARM Cortex-M3 权威指南》
  6. 使用Python开发游戏运行脚本(三)图片查找
  7. 深度学习:卷积神经网络(详解版)
  8. matlab数据类型 —— 整型
  9. WRF Output Fields描述
  10. 公司知识库的搭建步骤
  11. qq自定义diy名片代码复制_这个QQ技巧厉害了,艾特闪退QQ群表情霸屏无法撤回删除...
  12. 测试手机软件打开速度的app,一加6千分之一秒 百款APP打开速度对比
  13. 深入浅出理解视频编码H.264结构
  14. 转一位计算机牛人的心得,谈到计算机和数学,很实用~
  15. C语言随机数:rand()和srand(time(NULL))的使用
  16. Web端 嵌入海康视频监控组件
  17. 程序员,不甘平凡又害怕努力… 1
  18. Apollo代码学习(六)—模型预测控制(MPC)
  19. 基于Unity简单绘图系统
  20. properties中文乱码快速处理

热门文章

  1. 代理模式、动态代理和面向方面
  2. 千里之行,始于足下。职场人士必读的寓言
  3. 剑指offer 算法 (发散思维能力)
  4. Django数据库的查看、删除,创建多张表并建立表之间关系
  5. react: menuService
  6. [HNOI2011]数学作业 分段矩阵乘法
  7. (转)HIBERNATE与 MYBATIS的对比
  8. AngularJS模块——module
  9. scala技术文章集锦
  10. [译文]ASCII art with C#