前言

本次学习Linux系统内核编译,任选4.x系列稳定版或长期版本Linux内核源码,进行源码获取、解压与编译、安装等过程的学习。
注意:一定要保证虚拟硬盘足够大,大概需要30G空闲虚拟硬盘!!!如果不足,请首先扩容虚拟机硬盘大小!!!
本博客原创,转载请注明。
完成本次学习参考博文:
https://blog.csdn.net/qq_36290650/article/details/83052315
本文原创,创作不易,转载请注明!!!
本文链接
个人博客:https://ronglin.fun/?p=167
PDF链接:见博客网站
CSDN: https://blog.csdn.net/RongLin02/article/details/114759485

准备工作

本地配置

主机:联想Y7000P;64位windows10;CPU:i7-9750H;显卡:GTX 1660 Ti;内存:16G
虚拟机:Ubuntu 18.04 LTS;硬盘100G;内存4G;64位
Linux内核:Linux version 5.4.0-66-generic

查看系统版本命令:sudo lsb_release -a
查看Linux内核版本:cat /proc/version

Linux内核下载

Linux内核下载版本:longterm: 4.4.261 2021-03-11
Linux内核网站:Linux内核

从官网踩好点之后,进入Ubuntu下载Linux内核。
将Linux内核文件下载到/code/kernel文件夹下,下载的路径可以随意
创建并进入kernel文件夹,输入wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.261.tar.xz下载Linux-4.4.261内核

wget是Linux中的一个下载文件的工具, 用法是 wget [选项]… [URL]… ,直接在wget后边接一个下载链接就可以把文件下载到当前文件夹,更多关于wget用法可以查看wget --help
关于下载网站的获取,在官网对应Linux内核后面的[tarball],鼠标右键,复制链接,得到的链接就是下载该内核的链接。

然后输入tar -xavf linux-4.4.261.tar.xz解压文件,至此,Linux-4.4.261内核下载完毕。

Linux内核编译安装

安装所需的工具

一共需要11个依赖工具,分别是:
gcc make libncurses5-dev openssl libssl-dev build-essential pkg-config libc6-dev install bison install flex install libelf-dev
我们用sudo apt-get install分别安装它们,输入:

sudo apt-get install gcc make libncurses5-dev openssl libssl-dev build-essential
sudo apt-get install pkg-config libc6-dev bison flex libelf-dev

等待Ubuntu安装完成。

配置与编译内核

配置文件的获取

配置获取之前,不论是否编译过内核,都推荐先在Linux-4.4.261内核目录下执行一次sudo make mrproper命令清理一次。
若之前有编译过内核源码,则需要先执行 make mrproper 命令,对之前的相关操作进行清理工作,以便重新开始编译内核
有关 make mrproper 和 make clean 命令
make mrproper命令会删除所有的编译生成文件、内核配置文件(.config文件)和各种备份文件,所以几乎只在第一次执行内核编译前才用这条命令。
make clean命令则是用于删除大多数的编译生成文件,但是会保留内核的配置文件.config,还有足够的编译支持来建立扩展模块。所以你若只想删除前一次编译过程的残留数据,只需执行make clean命令。
总而言之,make mrproper删除的范围比make clean大。
有关更多信息,可以在Makefile中查看,在Linux-4.4.261内核目录下,输入less Makefile即可查看。*


现在搞配置文件:
将系统Kernel的配置文件转移到当前内核目录下。
进入/boot文件下,找到配置文件并将其复制到Linux-4.4.261内核目录下:

cd /boot
ls
sudo cp config-5.4.0-66-generic ~/code/kernel/linux-4.4.261/.config


简单解释一下cp指令,cp指令的用法基本格式是cp [options] source dest,source是想要复制的目标文件(夹),dest是目标文件夹,更多有关cp的用法,请见cp --help,"~“表示用户主目录,所以上条指令意思为:把当前目录下的一个叫"config-5.4.0-66-generic"的文件复制到用户主目录下的/code/kernel/linux-4.4.261文件夹下,并改名为.config。
然后 在Linux-4.4.261内核目录下,输入sudo make menuconfig,直接左右键,跳转至"Exit”,即所有都为默认选项。

除了这些获取配置文件之外,配置内核的时候还有很多配置方法,比如说make config(基于文本的为传统的配置界面)、make oldconfig(如何只想在原来内核配置的基础上修改一部分,则会省去很多麻烦)、make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用)、make menuconfig(基于文本选择的配置界面,字符终端下推荐使用),以上4种配置方式的目的都是在源码的顶层目录下面生成一个.config文件

编译内核

*在配置好所需内核功能之后 ,即可执行 make 命令进行内核编译
在Linux-4.4.261内核目录下,直接执行 sudo make编译内核。

sudo make

Two Thousand Years Later

大概一个半小时,make完毕,完毕之后还要进行一些操作

安装缺省配置的内核模块

在Linux-4.4.261内核目录下,输入

sudo make modules_install

make modules是编译模块,很多驱动还有功能在选的时候选成M的都是modules,不过直接make,不加任何参数,就是make all,包含make modules。不用额外加此make,但是在安装的时候make install只是安装bzimage,Systemmap。没有把modules安装好,还要额外的make modules_install,把模块放到/lib/modules文件夹一个和内核名一样的文件夹下,并且运行depmod生成模块依赖关系文件,系统启动时加载模块就是从dep里面读取信息加载模块。

安装内核

我们要安装编译好的内核,在Linux-4.4.261内核目录下,输入
sudo make install
不一会儿,安装好了,接下来,启用内核作为引导:
sudo update-initramfs -c -k 4.4.261
注意后边的 4.4.261 要改为对应自己上边安装好的Linux内核版本
initramfs ,一个新的 initial RAM disks 模型
更多详细请看: http://linuxdevices.com/articles/AT4017834659.html

更新 grub
输入 sudo update-grub,更新一下grub
有关grub的原理请见博客:
https://blog.csdn.net/weijitao/article/details/52914559

见证成功

完成以上繁琐且耗时的操作之后,我们来看Linux-4.4.261内核是否安装成功
输入reboot,重启Ubuntu并且选择新内核。.
重启,狂摁 Esc ,进入GRUB,选Ubuntu高级选项。然后我们就能看见安装的内核了哇!!!

回车进入,开机需要一段时间,登录用户后,在终端输入uname -r查看内核。

同时安装完内核之后,虚拟机的增强模式就没法用了,需要重新安装,点击桌面的光盘,找到右上方的 运行软件,点击,重启就OK了
emmmmmm,终于成功了 =w=

Linux学习之内核编译相关推荐

  1. Linux 2.6内核编译与配置安装升级

    Linux系统更新了很多版本更新,我本人认为Linux 2.6内核在Linux系统系列里很好使的文件系统,在此向大家推荐.如今技术不断更新,各种使用文件都已经淘汰.我认为还是有很不错的如Linux 2 ...

  2. 【linux系列】内核编译最新教程+常见问题总结

    [linux系列]内核编译最新教程+常见问题总结 编译环境 环境准备 编译准备 修改配置 linux 提供的三种配置命令 使用 gconfig 配置 编译内核 安装内核 载入新内核 检查内核 常见问题 ...

  3. linux 2.6内核编译_03_配置选项注解

    linux 2.6.15.6内核配置(unfinished) http://www.builder.com.cn/2007/1011/545597.shtml 注意: 不同的内核版本配置选项(或组织) ...

  4. Linux驱动(8)--内核编译与配置

    内核编译与配置 1. Menuconfig 2. Kconfig 3. Makefile 4. 内核配置与编译的流程 5. 注意 1. Menuconfig Linux编译器是通过.config文件确 ...

  5. 【imx6ull-alientek-emmc】linux交叉编译环境 + 内核编译

    开发板:imx6ull-alientek-emmc,正点原子的min板子 困惑了好久,第一次搞通,记录一下,希望之后能知其所以然 目录 一.交叉编译环境 1.选择交叉编译器 2.解压 3.配置环境变量 ...

  6. linux 2.4内核编译,linux 2.4内核编译详解

    2.4内核编译详解 内核简介 内核,是一个操作系统的核心.它负责管理系统的进程.内存.设备驱动程序.文件和网络系统,决定着系统的性能和稳定性. Linux的一个重要的特点就是其源代码的公开性,所有的内 ...

  7. Linux+RTAI实时内核编译

    如今Linux系统正被广泛用于各种嵌入式实时系统中,但由于Linux系统本身不支持硬实时扩展,故限制了其发展.由于Linux + RTAI的双内核方式构成的实时系统方案具有良好性能,本文将简述如何构建 ...

  8. Linux学习笔记---初次编译Uboot系统

    在初次编译Uboot系统时,是按照正点原子开发指南操作的,但是开发指南上讲得不是很详细,又看了一遍视频教程才搞清楚完整步骤,为了方便学习,就将详细步骤记录下来,以便以后参考. Uboot初次编译 1. ...

  9. Linux学习:gcc 编译其他常用参数

    (1)-v 查看版本号 (2)-o 指定可执行程序的名字 (3)-I 指定头文件路径 (4)-L 指定库的路径 (5)-l 指定库名字(掐头去尾) (6)-g gdb 调试的时候需要加 (7)-D 在 ...

最新文章

  1. 什么是防火墙,真正意义上的防火墙
  2. Crash常见异常总结
  3. 灵活而又可怕的params参数数组
  4. 2016-05-12 SAP UI5事件注册的问题研究
  5. 升级android 6.0系统
  6. 小程序 bindtouchmove 使用拖动按钮 页面跟着滑动并拖动卡顿感 问题
  7. Linux源码安装pgadmin4,Linux 服务器部署 PgAdmin 4 Server
  8. 搭建linux环境的tomcat服务器
  9. 是时候该了解一波Protocol Buffers了[Java]
  10. 浅谈Object Pascal的指针
  11. 双向链表基本实现简单贪吃蛇
  12. 循序渐进之Spring AOP(5) - 创建切面
  13. excel设置行高和列宽_Excel使用小技巧-Excel里设置列宽和行高
  14. OpenGL Mathematics (GLM)
  15. 企业征信(尽职调查):采集数据网站一览表
  16. 【CicadaPlayer】初始化ffmpeg及设置ffmpeg日志
  17. 16位汇编语言第二讲系统调用原理,以及各个寄存器详解
  18. Android各版本特性
  19. 计算机 英语 文献翻译,计算机类外文文献翻译_1.doc
  20. 中职计算机应用专业课堂教学,谈谈中职计算机应用基础课程教学中翻转课堂研究...

热门文章

  1. 【打卡】糖尿病遗传风险检测挑战赛
  2. f分布表完整图a=0.01_SQL Server从入门到精通——学习笔记01(数据库基础知识篇)...
  3. 车路协同到底要协同什么?
  4. vulnhub之hacksudo FOG
  5. linux下eclipse基本使用教程,linux eclipse 使用教程
  6. python短时傅里叶变换_python中的短时傅里叶变换
  7. 思否 CEO 高阳受邀出席中国区块链产业高峰论坛
  8. Vmware Tools安装出错的解决方法
  9. Android设置应用程序默认语言
  10. 【android11】设置-应用-默认应用相关修改