当前位置: 首页 > news >正文

linux内核编译学习笔记

内核编译

共同的步骤

1. 下载源码:

https://github.com/torvalds/linux.git

**2. 安装工具包: ** 在编译过程中按照具体报错再具体安装对应的工具包

# CentOS
yum -y groupinstall "development tools"
# ubuntu
sudo apt-get update
sudo apt-get install gcc g++
sudo apt-get install -y libncurses5-dev build-essential libssl-dev libc6-dev bin86 flex bison qttools5-dev libelf-dev

3. 清除残留信息:

make mrproper
make distclean

4. 生成配置文件:

make memuconfig         #提供一个基于curses的命令行界面(需要curses库的支持)
make nconfig            #提供一个基于ncurses(下一代curses)的命令行界面(需要ncurses库的支持)
make xconfig            #基于QT的X Window图形化界面
make gconfig            #基于GTK+的X Window图形化界面
make oldconfig          #新配置的.config文件基于已经存在的.config,已经存在的.config中的值在新的.config文件中都成为默认值。
make silentoldconfig    #同“make oldconfig”,但是该命令会避免被已经回答的问题弄乱屏幕,另外还会更新依赖。
make allyesconfig       #在创建.config配置文件时,会尽可能选择“y”。(内核会非常大)
make allmodconfig       #在创建.config配置文件时,会尽可能选择“m”。
make allnoconfig        #在创建.config配置文件时,会尽可能选择“n”。
make randconfig         #在创建.config配置文件时,会对各个选项进行随机设置(随机选择“y”、“m”、“n”)。
make defconfig          #使用各架构下默认的.config文件(位于arch/<arch>/configs/*_defconfig)。
# 也可以用自己的内核配置,cp过去
cp /boot/config=$(uname -r) .config

5. 自动处理.config文件,不用手动去处理:

./scripts/config -e CONFIG_LOCALVERSION_AUTO -d MODULE_SIG
  • -e:表示启用,这里CONFIG_LOCALVERSION_AUTO的意思是内核版本字符串会自动追加一个后缀(基于git仓库信息或本地修改)
  • -d:表示禁用,MODULE_SIG是内核模块签名验证相关的配置,禁用后,内核允许加载未签名的模块

直接编译安装

1. 编译linux内核源码:

make -j64
# 使用clang编译
make LLVM=1 -j64

2. 安装linux内核:

make modules_install # 安装模块
make headers_install # 安装linux内核头文件
make install # 安装内核镜像

生成rpm包安装

1. 构建rpm包:

make rpm-pkg -j64
  • rpm-pkg相对于rpm,会先执行make clean再进行构建

2. 安装kernel:

rpm -ivh --force kernel-4-5.4.*.rpm

更换kernel

查看已安装的kernel:

grubby --info=ALL | grep ^kernel

选定需要默认启动的kernel并将其设置为默认启动:

grubby --set-default=<kernel-path>

重启切换:

reboot

验证:

uname -r

删除某个内核启动项:

sudo grubby --remove-kernel=<kernel-path>

安装工具(tools)

bpftool

编译:

make -C tools/bpf/bpftool

安装:

make install -C tools/bpf/bpftool

内核配置学习

启用BTF配置

如果想要开启BTF配置,前提是要启动调试,即打开下面配置

CONFIG_DEBUG_INFO_BTF=y

使用上面提到的脚本:

./scripts/config -e CONFIG_DEBUG_INFO_BTF
http://www.xdnf.cn/news/557155.html

相关文章:

  • Java异常处理与File类终极指南
  • 【基础知识】SPI协议的种类及异同
  • 数据库 1.0.1
  • DAY28类
  • MYSQL备份恢复知识:第四章:备份锁
  • 【优秀三方库研读】在 quill 开源库中为什么封装 safe_fwrite,而不是直接使用系统 fwrite
  • MySQL中添加一个具有创建数据库权限的用户
  • Java并发进阶系列:深度讨论jdk1.8 ConcurrentHashMap并发环境下transfer方法桶位分配过程
  • C/C++ Select Poll Epoll 多路转接
  • python -> matplotlib简单用法
  • Unity3D仿星露谷物语开发47之砍树时落叶特效
  • Wan2.1 加速推理方法
  • 使用cursor自动生成前后端分离的web应用程序
  • ROS2 pkg 创建功能包
  • [ 计算机网络 ] 深入理解OSI七层模型
  • 经验过程简介与suprema的集中(Guntuboyina理论统计学笔记)
  • QT高DPI支持
  • linux之 pcie MSI-X中断编程
  • 自动化测试核心知识梳理与 Java 代码详解
  • 基于正点原子阿波罗F429开发板的LWIP应用(3)——Netbiosns功能
  • 嵌入式培训之系统编程(一)标准IO、文件操作
  • Liquid Wire 柔性应变传感器:金属凝胶导体 | 仿生肌肉长度监测 | 高精度动作控制
  • 特定领域 RAG中细调嵌入模型能否提升效果?
  • IVX:重构 AI 原生开发范式,让模型调用成为指尖艺术​
  • PostgreSQL简单使用
  • 深入浅出人工智能:机器学习、深度学习、强化学习原理详解与对比!
  • 【深度学习-Day 14】从零搭建你的第一个神经网络:多层感知器(MLP)详解
  • 第六天的尝试
  • 服务器部署1Panel
  • 證券行業證券交易系統開發方案