Linux内核及补丁编译
Linux内核及补丁编译
一、源码下载
1、查看当前linux内核版本
uname -r
2、获取对应版本的linux源码
方式1:源方式下载
sudo apt search linux-source ##找到对应版本的linux-source
sudo apt install linux-source-5.4.0 ##以5.4.0举例
mkdir ~/Projects
cd ~/Projects
sudo cp /usr/src/linux-source-5.4.0.tar.bz2 ./
安装完成后,源码将保存在/usr/src/linux-source-5.4.0.tar.bz2
方式2:官方代码库下载 Linux Kernel
找到自己需要版本的代码压缩包,下载
mkdir ~/Projects
cd ~/Projects
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.tar.gz
二、解压源码
解码源方式下,解压压缩包
cd ~/Projects
tar jxvf -f linux-source-5.4.0.tar.bz2
官方代码库方式下,解压压缩包
mkdir ~/Projects
tar -zxvf linux-5.4.tar.gz
mv linux-5.4 linux-5.4.0
三、编译准备
sudo apt install gcc make libncurses5-dev libssl-dev build-essential openssl bison flex libelf-dev libelf-devel elfutils-libelf-devel
注意:最后三个elf的开发包安装成功其中之一即可
四、补丁patch
1、下载补丁
以squashfs的一个patch为例 9996-fs_squashfs_improve_squashfs_error_resistance.patch
浏览器下载这个patch文件放到~/Projects/linux-5.4.0/目录下
2、补丁安装
cd ~/Projects/linux-5.4.0/
cat 9996-fs_squashfs_improve_squashfs_error_resistance.patch | patch -p1
至此,补丁安装完成
五、内核编译
1、代码清理
make mrproper #删除所有的编译生成文件、内核配置文件
或者
make clean #删除大多数的编译生成文件,但是会保留内核的配置文件.config
2、内核配置
make oldconfig #现有的内核设置文件基础上建立一个新的设置文件,只会向用户提供有关新内核特性的问题
如果没有特别配置的,直接一路enter
3、代码编译
make bzImage -j 8 #编译内核
make modules -j 8 #编译扩展模块
或者
make -j 8 #编译内核和扩展模块
等待编译完成
六、内核安装
make modules_install #安装扩展模块
make install #安装内核
查看是否安装完成
> grep menuentry /boot/grub/grub.cfg
if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
menuentry_id_option=""
export menuentry_id_option
menuentry 'Ubuntu, with Linux 5.4.275' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.275-advanced-ec3e91d6-c1a7-4843-b385-319a8ab2a229' {
menuentry 'Ubuntu, with Linux 5.4.275 (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.275-recovery-ec3e91d6-c1a7-4843-b385-319a8ab2a229' {
menuentry 'Ubuntu, with Linux 5.4.0-26-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-26-generic-advanced-ec3e91d6-c1a7-4843-b385-319a8ab2a229' {
menuentry 'Ubuntu, with Linux 5.4.0-26-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-26-generic-recovery-ec3e91d6-c1a7-4843-b385-319a8ab2a229' {
七、启用新内核
1、修改grub配置
/etc/default/grub的 GRUB_DEFAULT=那一行修改如下
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.4.275"
2、更新grub
sudo update-grub
八、重启系统
sudo reboot
uname -r #查看内核版本
Linux内核及补丁编译的更多相关文章
- Linux 内核配置和编译
Linux 内核配置和编译 一.配置内核 (1). 为什么要配置内核 1. 硬件需求 2. 软件需求 选出需要的,去掉不要的 (2). 如何配置内核 1. make config 基于文本模式的交互 ...
- Linux内核配置、编译及Makefile简述
Hi,大家好!我是CrazyCatJack.最近在学习Linux内核的配置.编译及Makefile文件.今天总结一下学习成果,分享给大家^_^ 1.解压缩打补丁 首先是解压缩你获取到的Linux内核. ...
- Linux内核-模块编译和安装
我安装Ubuntu的时候是没有安装源码的,在没有安装源码前 /usr/src/ 目录下是只有两个包含内核的头文件的文件夹的: 我的内核版本是: 所以接下来就是先安装内核源码: 执行后,/usr/src ...
- linux内核系列(一)编译安装Linux内核 2.6.18
1.配置环境 操作系统:CentOS 5.2 下载linux-2.6.18版本的内核,网址:http://www.kernel.org 说明:该编译文档适合2.6.18以上的Linux内核版本,只需所 ...
- Xilinx-Zynq Linux内核源码编译过程
本文内容依据http://www.wiki.xilinx.com网址编写,编译所用操作系统为ubuntu 14 1.交叉编译环境的安装配置 1)http://www.wiki.xilinx.com/I ...
- linux内核裁剪及编译可加载模块
一:linux内核裁剪: 1:编译内核源码: 今天的重点内容是内核驱动的编写,在编写驱动之前首先的了解linux内核源码,linux主要是由五个子系统组成:进程调度,内存管理,文件系统,网络接口以及进 ...
- (二)linux内核准备及编译
1. 内核下载地址 linux内核网站,可以拿到最新的和最近的稳定版本内核: https://www.kernel.org/ 通过网站下载压缩包后解压或者使用git下载到本地: git clone h ...
- linux内核源码编译加制作rpm包
本章主要讲解实际操作步骤,具体理论知识可以自行百度 linux内核官网下载:https://cdn.kernel.org/pub/linux/kernel/ (如图) 根据官网发布的信息分析,目前 ...
- [国嵌攻略][099][Linux内核配置与编译]
为什么要配置内核 基于硬件和软件的需求选出需要的功能,去掉不要的功能. 内核配置的方法 make config:基于文本交互的配置. make menuconfig:基于图形菜单的配置. make m ...
- 升级 Linux 内核版本(编译源代码)
升级内核版本(自己编译源码) 从 linux 官网 https://www.kernel.org/ 下载内核源码 解压 tar -xvf linux-4.16.8.tar.xz cd linux-4. ...
随机推荐
- python3 安装pymssql失败 pip3 install pymssql
python3 安装pymssql失败 报错信息: AttributeError: module 'platform' has no attribute 'linux_distribution' 解决 ...
- The Beauty of Physics
绪言/1 学物理的人用不着对物理方程的意义操心,只要关心物理方程的美就够了. --狄拉克 此曲只应天上有--开普勒的和谐宇宙/11 天体的运动只不过是某种永恒的复调音乐而已,要用才智而不是耳朵来倾听. ...
- node.js 手稿
- jsbarcode 生成条形码,并将生成的条码保存至本地,附源码
导读 以前生成条码都是外网网站上生成,因生产环境在内网中,上不了外网,只能在项目中生成相应规则,故将此方法整理下来. html <!DOCTYPE html> <html> & ...
- django 信号 新增和删除信的合用
from django.db.models.signals import post_save, post_delete from django.dispatch import receiver fro ...
- el-config-provider
el-config-provider是Element Plus库中的一个组件,用于提供全局的配置.它是Element Plus在2.0版本中引入的新组件. el-config-provider组件的作 ...
- Java实现快速快速排序算法
算法简介 快速排序(Quick Sort) 是由冒泡排序改进而得的.在冒泡排序过程中,只对相邻的两个记录进行比较,因此每次交换两个相邻记录时只能消除一个逆序.如果能通过两个(不相邻)记录的一次交换直接 ...
- php 模型浏览器
docker安装 文档:https://github.com/SeleniumHQ/docker-selenium docker run -d -p 4444:4444 -p 7900:7900 -- ...
- 手把手教你集成GraphRag.Net:打造智能图谱搜索系统
在人工智能和大数据发展的背景下,我们常常需要在项目中实现知识图谱的应用,以便快速.准确地检索和使用信息. 今天,我将向大家详细介绍如何在一个新的.NET项目中集成GraphRag.Net,这是一个参考 ...
- 加压测试TPS上不去的性能分析
加压测试TPS上不去的性能分析 阶梯式加压测试接口异常可能存在的原因: 压力机本身性能测试的瓶颈 分析:单机负载能力有限,如果需要模拟的用户请求数超过其负载极限,也会间接影响TPS ,可以通过进行分布 ...