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

3万+

被折叠的 条评论
为什么被折叠?



