Linux学习之内核编译

前言

本次学习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=

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值