今天我们来自己学习编译内核并使用它。自制内核是个人定制版,定制自己专属的内核环境。

我们先看看编译步骤有哪些:

步骤:

  1、# tar xf linux-3.10.37.tar.xz -C /usr/src

  2、# cd /usr/src

  3、# ln -s linux-3.10.67 linux

  4、#cd linux

  5、# make menuconfig             配置内核选项

  6、# make -j #          编译内核,制定使用多线程编译

  7、# make modules_install     安装内核模块

  8、# make install          安装内核

(1)配置内核选项

  支持“更新”模式进行配置:在已有的 .config 文件的基础之上进行“修改”配置;

    (a)make config:基于命令行以遍历方式去配置内核中可配置的每个选项。

    (b)make menuconfig:基于curesrs的文本配置窗口。需要单独下载curesrs-devel程序包。

    (c)make gconfig:基于GTK开发环境的窗口界面,需要下载包组“桌面平台开发”

    (d)make xconfig:基于QT开发环境的窗户界面。

  支持“全新配置” 模式进行配置:

    (a)make defconfig:基于内核为目标平台提供的“默认”配置为模板进行配置;

    (b)make allnoconfig:所有选项均为“no”;这样子自己可以随意选择自己的编译环境;

(2)编译

    (a)多线程编译:make  -j #:#为使用的线程数量。

    (b)编译内核中的一部分代码:

      (1)只编译某子目录中的相关代码:

        ~]# cd /usr/src/linux

        ~]# make path/to/dir

      (2)只编译一个特定的模块

        ~]# cd /usr/src/linux

        ~]# make path/to/dir/file.ko

    (c)如何交叉编译。比如在我们现在的x86平台要编译一个用在arm平台的内核

        ~]# make ARCH=arch_name

      获取交叉编译的帮助。

        ~]# make ARCH=arch_name help

现在我们来实操一下:

首先是我们必须安装必要的程序开发包准备好开发环境才行。

[root@ELK-chaofeng linux]# yum groupinstall -y "Development Tools"
[root@ELK-chaofeng linux]# yum install -y bc

注意:centos7下的开发环境为“Development Tools”,并且本次我使用的也是centos7系统。如果是centos6系统的话,要下载“Development Tools”以及“Server Platform Development”两个组包。

1、首先是下载内核3.10.67版本,我自己系统的内核版本是3.10.0

wget -c https://mirrors.edge.kernel.org/pub/linux/kernel/v3.x/linux-3.10.67.tar.xz

2、解压至/usr/src目录(一定要解压在这个目录才行)

tar -xf linux-3.10..tar.xz -C /usr/src

3、进入到/usr/src目录下,然后建立软连接

ln -s linux-3.10./ linux

4、拷贝/boot目录下的config文件

[root@ELK-chaofeng linux]# uname -r
3.10.-957.5..el7.x86_64
[root@ELK-chaofeng linux]# cp /boot/config-3.10.-957.5..el7.x86_64 /usr/src/linux/.config

注意这个config文件是隐藏文件。

5、下载一个程序开发包

[root@ELK-chaofeng linux]# yum install -y curesrs-devel

6、选择要编译的功能

[root@ELK-chaofeng linux]# make menuconfig

这个选择众多,要仔细看看才行。

7、选择好之后我们开始编译。

[root@ELK-chaofeng linux]# make -j 

我的电脑是4个处理器,因此我制定四个线程数。

8、30分钟后编译完成了。开始安装模块

[root@ELK-chaofeng linux]# make modules_install

模块也要安装10分钟左右。

9、最后开始安装内核

[root@ELK-chaofeng linux]#  make install

当看到这个的时候表示安装成功。

10、我们到/lib/modules目录下看到我们安装好的模块

11、现在我们可以在/boot目录下看到我们安装的内核

到此我们的内核就编译好了,重新一下,我们就可以选择指定的自己的内核来进行启动。

Linux自制编译内核的更多相关文章

  1. Linux下编译内核配置选项简介

    Code maturity level options代码成熟度选项 Prompt for development and/or incomplete code/drivers 显示尚在开发中或尚未完 ...

  2. linux重新编译内核

    一.linux内核 1.查看linux内核版本 uname -r 2.下载对应的linux内核 https://www.kernel.org/pub/linux/kernel/ 将内核文件夹解压到/u ...

  3. Gentoo安装详解(二)-- 编译内核

    编译内核: 安装内核源码: 选择内核:如gentoo-sources emerge gentoo-sources ls -l /usr/src/linux 手动编译内核: cd /usr/src/li ...

  4. linux如何编译安装新内核支持NTFS文件系统?(以redhat7.2x64为例)

    内核,是一个操作系统的核心.它负责管理系统的进程.内存.设备驱动程序.文件和网络系统,决定着系统的性能和稳定性.Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新.新的内核修订了旧内核 ...

  5. archlinux 传统方法编译内核linux kernel 3.3.7

    From: http://hi.baidu.com/flashgive/item/eaef6326b5eb73d3a417b662 archlinux中传统方法编译内核 1)下载内核以及补丁并解压: ...

  6. linux内核编译,内核参数修改

    核心(kernel):/boot/vmlinuz-version version 带发行包版本,本地版本内核模块(kernel object): /lib/modules/version/ 内核设计: ...

  7. 【原创】Linux编译内核

    Linux 编译内核 大致分这几个步骤 1.准备编译工具.内核文件 2.开始编译 3.将编译好的新内核install进系统 4.查看是否成功.   一.准备好必备的库和内核文件   1.添加必备的编译 ...

  8. Linux 4.1内核编译报告

    编译环境 Arch Linux on VirtualBox 下载内核 https://www.kernel.org/ 下载的内核压缩包,此时的最新内核版本为4.1: 解压包 # tar -xvJf l ...

  9. linux内核学习之二:编译内核

    在linux内核学习系列的第一课中讲述了搭建学习环境的过程(http://www.cnblogs.com/xiongyuanxiong/p/3523306.html),环境搭好后,马上就进入到下一环节 ...

随机推荐

  1. volatile 关键字了解与使用

    前言 不管是在面试还是实际开发中 volatile 都是一个应该掌握的技能. 首先来看看为什么会出现这个关键字. 内存可见性 由于 Java 内存模型(JMM)规定,所有的变量都存放在主内存中,而每个 ...

  2. Emgucv学习系列之环境搭建

    Emgucv功能介绍 Emgucv是跨平台的,是Opencv的.net版本.可以对图片.视频等多媒体资源进行加工处理的SDK库. Emgucv下载和安装SDK 下载地址:https://sourcef ...

  3. Spring Boot + Spring Cloud 实现权限管理系统 后端篇(十四):项目打包部署

    项目打包部署 安装MySQL镜像 注意:如果使用docker镜像安装MySQL,也需要在前端部署主机安装MySQL,因为备份还原功能是使用MySQL的本地命令进行操作的. 下载镜像 执行以下命令,拉取 ...

  4. 【JAVA】ThreadLocal源码分析

    ThreadLocal内部是用一张哈希表来存储: static class ThreadLocalMap { static class Entry extends WeakReference<T ...

  5. 自己动手实现java数据结构(六)二叉搜索树

    1.二叉搜索树介绍 前面我们已经介绍过了向量和链表.有序向量可以以二分查找的方式高效的查找特定元素,而缺点是插入删除的效率较低(需要整体移动内部元素):链表的优点在于插入,删除元素时效率较高,但由于不 ...

  6. python 浅析格式化输出和深浅copy

    一,格式化输出 今天主要想记录一下关于格式化输出的例子,然后结合了自己的理解,分析如下: 格式是 :百分号+占位符 主要有三种使用形式:%s  (其中s表示string)表示字符串 %d  (其中d表 ...

  7. Scala面向对象编程与类型系统

    Scala支持面向对象编程, 其面向对象特性与Java有共同之处并添加了很多新的特性. 类定义 scala使用class关键字定义类: class MyComplex(real0:Double, im ...

  8. 站在DevOps肩膀上的TestOps(一)

    一十一 发表于 2018-03-14 15:50:03 TestOps   摘要: DevOps团队的职责是“无摩擦发展”. 这是对“速度需求”驱动的发展理念的一种渴望,以及有意识地去除从概念到客户的 ...

  9. CSS3背景色透明(兼容IE8)

    标准浏览器通过rgba()实现背景色透明;IE8以下浏览器通过特有滤镜实现背景色透明. 代码如下: 1 /* IE8 */ 2 filter:progid:DXImageTransform.Micro ...

  10. HttpHandler与HttpModule介绍

    前言:作为一个开发人员,我们看过很多的关于开发的书,但是都是教我们"知其然",并没有教我们"知其所以然",我们开发web项目的过程中,当我们输完URL敲下回车就 ...