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. Kioptrix Level 2

    简介 Vulnhub是一个提供各种漏洞环境的靶场平台. 个人学习目的:1,方便学习更多类型漏洞.2,为OSCP做打基础. 下载链接 https://www.vulnhub.com/entry/kiop ...

  2. logicaldisk本地磁盘管理

    在网上搜了很多,但是基本都是一样的,差不多都是互相转载摘抄,就那么几个寥寥无几的例子,所以我冒了很大的风险,自己经过多次的测试,对这个命令有了一些新的认识!拿出来分享一下! LOGICALDISK   ...

  3. 手动验证MySQL Innodb RR级别加锁 需要注意的几个点

    记录几个坑 优化器在表行数比较少的时候 会使用全表扫描,会造成全表所有的行加锁,所以需要使用force index 强制使用索引 来实现gap-lock(间隙锁)的应用 next-lock 加锁 会锁 ...

  4. [Usaco2016 Dec]Counting Haybales

    原题链接https://www.lydsy.com/JudgeOnline/problem.php?id=4747 先将原数组排序,然后二分查找即可.时间复杂度\(O((N+Q)logN)\). #i ...

  5. 学习Java第三天

    方法重载:同一个类,方法名相同,参数不同(个数不同,类型不同,顺序不同),判断是否重载,只看方法名和参数,跟返回值无关. IDEA查看方法源代码:Crtl + 鼠标左键 进制表示 Java数值默认为十 ...

  6. Android事件分发机制三:事件分发工作流程

    前言 很高兴遇见你~ 本文是事件分发系列的第三篇. 在前两篇文章中,Android事件分发机制一:事件是如何到达activity的? 分析了事件分发的真正起点:viewRootImpl,Activit ...

  7. CentOS安装mysql、JDK、Tomcat部署环境

    1.1. 安装mysql-5.6 1.1.1. 检测系统内部有没有安装其他的mysql数据库 $ rpm -qa | grep mysql 1.1.2. 如果内部有需要先删除Mysql $ yum r ...

  8. 服务端渲染 数据驱动 不是渲染后的网页,而是一个由html和Javascript组成的app ssr 隐藏接口服务器

    小结: 1. 服务端渲染主要的工作是把组件渲染为服务器端的 HTML 字符串,将它们直接发送到浏览器,最后将静态标记"混合"为客户端上完全交互的应用程序. 服务器给到客户端的已经是 ...

  9. 六:Spring Security 中使用 JWT

    Spring Security 中使用 JWT 1.无状态登录 1.1 什么是有状态? 1.2 什么是无状态 1.3 如何实现无状态 2.JWT 2.1 JWT数据格式 2.2 JWT交互流程 2.3 ...

  10. 二:整合Spring Security

    整合Spring Security 1.项目创建 2.初次体验 3.用户名配置 3.1 配置文件配置用户名/密码 3.2 Java 配置用户名/密码 4.登录配置 5.忽略拦截 江南一点雨:Sprin ...