linux内核编译

1.1 大致步骤

  • 下载linux内核4.19.1

    官网链接:

    https://www.kernel.org/

    官网下载经常速度太慢,无法下载,提供另一个链接:

    http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/

  • 将linux压缩包放在/usr/src/目录下

  • 解压缩并链接

    xz -cd linux-4.19.1.tar.xz| tar xvf -

    解压缩后出现linux-4.19.1目录,此时我们创建一个名为linux的目录,将linux软连接到linux-4.19.1,命令如下

    ln -s linux-4.19.1 linux
  • 更新相关依赖软件

    sudo apt-get install libncurses5-dev libssl-dev -y
    
    sudo apt-get install build-essential openssl -y
    
    sudo apt-get install zlibc minizip -y
    
    sudo apt-get install libidn11-dev libidn11 -y
    
    sudo apt-get install bison -y
    
    sudo apt-get install flex -y
    
    sudo apt-get install libelf-dev -y
    
    
  • 进入/usr/src/linux目录下,输入以下命令

    make mrproper   清空一些配置信息检查源码是否完整
    
    make clean       清空一些编译信息
    
    make menuconfig
    
    ulimit -s 1048576	给栈分配1G的空间,看情况,可分可不分

    make menuconfig之后出现一个图形化界面,直接选择exit->yes,表示我们使用默认配置

  • 开始编译和安装

    make -j4 命令即可开始编译。(-j4意思是并发执行,可以提高速度,一般情况 下不要多于CPU核数。这个命令的执行会耗费很很很很很长时间。)
    
    make modules_install   编译完成之后首先安装模块
    
    其次安装内核,命令为:make install
  • 启用内核作为引导

    输入下列命令将内核作为引导,将数字更改为你自己编译的版本号:
    
    sudo update-initramfs -c -k 4.19.1
    
    更新一下grub:
    
    sudo update-grub
  • 重启计算机,查看是否成功

    重启计算机: shutdown -r now
    重启后输入: uname -r

1.2遇见问题

  • recipe for target 'xxx' failed make: *** [xxx] Error 1

    或者You are building kernel with non-retpoline compiler, please update your compiler

    报告这种错误一般是依赖的软件版本低或者没有安装,需要进行安装,推荐直接尝试

    apt-get update
    apt-get upgrade

    将已有软件全部更新一遍。

  • ld: final link failed: Memory exhausted make: *** [vmlinux.o]

    内存耗尽,推荐给栈空间设置更多内存

    ulimit -r			查看内存设置
    ulimit -s 1048576 设置栈空间为1GB
    ulimit -r 再次查看是否设置成功

1.3参考博客

如何编译安装Linux内核:https://baijiahao.baidu.com/s?id=1650254449725547697&wfr=spider&for=pc

非常好的Linux编译内核详解:https://blog.csdn.net/zhenguo26/article/details/79641322

编译Linux内核源码,安装、删除内核:https://blog.csdn.net/qq_28437139/article/details/83692907

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

  1. Linux 内核源码外编译 linux模块--编译驱动模块的基本方法

    1.先编写一个简单的hello模块,hello.c 源码如下: #ifndef __KERNEL__ # define __KERNEL__ #endif #ifndef MODULE # defin ...

  2. 《linux 内核全然剖析》编译linux 0.12 内核 Ubuntu 64bits 环境

    我×.. . 最终好了,大概3 4个小时吧...各种毛刺问题.终究还是闯过来了.. .. ubuntu2@ubuntu:~/Downloads/linux-0.00-050613/linux-0.00 ...

  3. 如何解决编译linux内核(解决声卡问题),遭遇fatal error: linux/limits.h: 没有那个文件或目录

    最近帮一位上海的朋友搞一块小板,在ubuntu15.04 vivid上已经加载了对应了.ko驱动包 但关键是系统根本就枚举不到该声卡ALC5640,试了OpenSUSE也是一样的结果,看来是内核漏加载 ...

  4. 《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #2 如何编译Linux内核

    HACK #2 如何编译Linux内核 本节介绍编译Linux内核的方法.当发现bug而修改源代码或者添加新功能时,就需要对内核进行重新编译,生成二进制映像文件.另外,如果想要使用发布版内核中无效的功 ...

  5. Linux内核配置、编译及Makefile简述

    Hi,大家好!我是CrazyCatJack.最近在学习Linux内核的配置.编译及Makefile文件.今天总结一下学习成果,分享给大家^_^ 1.解压缩打补丁 首先是解压缩你获取到的Linux内核. ...

  6. 【转】6.4.6 将驱动编译进Linux内核进行测试

    原文网址:http://www.apkbus.com/android-98520-1-1.html 前面几节都是将Linux驱动编译成模块,然后动态装载进行测试.动态装载驱动模块不会随着Android ...

  7. Linux内核的编译安装

    前言 Linux内核是Linux操作2347系统的核心,也是整个Linux功能体现的核心,就如同发动机在汽车中的重要性.内核主要功能包括进程管理.内存管理.文件管理.设备管理.网络管理等.Linux内 ...

  8. Linux 内核 编译模块

    背景: 由于调试内核或者由于分区大小限制,有时候内核组件不一定完全需要编进内核中. 所以,在开发中经常将内核组件编译成为模块,等到在恰当的时机加载. 概览: Linux内核模块的编译方法有两种: 1. ...

  9. 现在的 Linux 内核和 Linux 2.6 的内核有多大区别?

    作者:larmbr宇链接:https://www.zhihu.com/question/35484429/answer/62964898来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...

随机推荐

  1. [Usaco2007 Jan]Balanced Lineup 飞盘比赛

    题目描述 每天,农夫 John 的N(1 <= N <= 50,000)头牛总是按同一序列排队. 有一天, John 决定让一些牛们玩一场飞盘比赛. 他准备找一群在对列中为置连续的牛来进行 ...

  2. uni-app开发经验分享十二: Android平台应用启动时读写手机存储、访问设备信息(如IMEI)等权限策略及提示信息

    Android平台从6.0(API23)开始系统对权限的管理更加严格,所有涉及敏感权限都需要用户授权允许才能获取.因此一些应用基础业务逻辑需要的权限会在应用启动时申请,并引导用户允许. 读写手机存储权 ...

  3. 都知道Base64,Base32你能实现吗?

    很长时间没有更新个人博客了,因为前一段时间在换工作,入职了一家新的公司,刚开始需要适应一下新公司的节奏,开始阶段也比较忙.新公司还是有一定的技术气氛的,每周都会有技术分享,而且还会给大家留一些思考题, ...

  4. 改变JavaScript中函数的内部this指向!

    改变JavaScript中函数的内部this指向! 第一种方法 call call 可以 调用函数 + 改变函数内的this指向! var obj = { name: 'lvhang' } funct ...

  5. 解决PHP无法监听9000端口问题/502错误解决办法

    问题背景 配置nginx+php服务的时候,发现网站能打开html,打开php文件就显示502,一般这个是php没启动啊啥的导致不能正常解析php文件. 原因分析 因为nginx解析php文件是交给f ...

  6. 订单业务楼层化 view管理器和model管理器进行了model和view的全面封装处理 三端不得不在每个业务入口上线时约定好降级开关,于是代码中充满了各种各样的降级开关字段

    京东APP订单业务楼层化技术实践解密 原创 杜丹 留成 博侃 京东零售技术 2020-09-29 https://mp.weixin.qq.com/s/2oExMjh70Kyveiwh8wOBVA 用 ...

  7. (Oracle)常用的数据库函数

    Trim: Trim() 函数的功能是去掉首尾空格. Eg:         trim(to_char(level, '00')) Trunc: 1.TRUNC函数为指定元素而截去的日期值. trun ...

  8. C++ Primer Plus读书笔记(六)分支语句和逻辑运算符

    1. 以上均包含在cctype中 1 #include<cctype> 2 //#include<ctype.h> 2.文件操作 (1)头文件 1 #include<fs ...

  9. Redis 学习笔记系列文章之 Redis 的安装与配置 (一)

    1. 介绍 Redis is an open source (BSD licensed), in-memory data structure store, used as database, cach ...

  10. 学习SpringBoot,整合全网各种优秀资源,SpringBoot基础,中间件,优质项目,博客资源等,仅供个人学习SpringBoot使用

    学习SpringBoot,整合全网各种优秀资源,SpringBoot基础,中间件,优质项目,博客资源等,仅供个人学习SpringBoot使用 一.SpringBoot系列教程 二.SpringBoot ...