源码编译构建安装内核kernel
源码编译构建安装内核kernel
荣涛 2021年10月27日
文档修改日志
日期 | 修改内容 | 修改人 | 备注 |
---|---|---|---|
2021年10月27日 | 创建 | 荣涛 | |
2021年10月28日 | 添加可能的问题 | 荣涛 |
1. 引言
1.1. 编译前准备
$ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.6.9.tar.xz
$ unxz -v linux-5.6.9.tar.xz # 或者
$ xz -d -v linux-5.6.9.tar.xz
$ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.6.9.tar.sign
$ gpg --verify linux-5.6.9.tar.sign
# 上面命令可能的输出为:
# gpg: assuming signed data in 'linux-5.6.9.tar'
# gpg: Signature made Sun 12 Aug 2018 04:00:28 PM CDT
# gpg: using RSA key 79BE3E4300411886
# gpg: Can't check signature: No public key
$ gpg --recv-keys 79BE3E4300411886
# 上面命令可能的输出为:
# gpg: key 79BE3E4300411886: 7 duplicate signatures removed
# gpg: key 79BE3E4300411886: 172 signatures not checked due to missing keys
# gpg: /home/vivek/.gnupg/trustdb.gpg: trustdb created
# gpg: key 79BE3E4300411886: public key "Linus Torvalds <torvalds@kernel.org>" imported
# gpg: no ultimately trusted keys found
# gpg: Total number processed: 1
# gpg: imported: 1
$ gpg --verify linux-5.6.9.tar.sign
# 上面命令可能的输出为:
# gpg: assuming signed data in 'linux-5.6.9.tar'
# gpg: Signature made Sun 12 Aug 2018 04:00:28 PM CDT
# gpg: using RSA key 79BE3E4300411886
# gpg: Good signature from "Linus Torvalds <torvalds@kernel.org>" [unknown]
# gpg: aka "Linus Torvalds <torvalds@linux-foundation.org>" [unknown]
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg: There is no indication that the signature belongs to the owner.
# Primary key fingerprint: ABAF 11C6 5A29 70B1 30AB E3C4 79BE 3E43 0041 1886
$ tar xvf linux-5.6.9.tar
$ cd linux-5.6.9
$ cp -v /boot/config-$(uname -r) .config
# 上步可能的输出
# '/boot/config-4.15.0-30-generic' -> '.config'
1.2. 依赖安装
1.2.1. Debian/Ubuntu Linux
$ sudo apt-get install build-essential libncurses-dev bison flex libssl-dev libelf-dev
1.2.2. CentOS/RHEL/Oracle/Scientific Linux
$ sudo yum group install "Development Tools" # or
$ sudo yum groupinstall "Development Tools"
$ sudo yum install ncurses-devel bison flex elfutils-libelf-devel openssl-devel
1.2.3. Fedora Linux
$ sudo dnf group install "Development Tools"
$ sudo dnf install ncurses-devel bison flex elfutils-libelf-devel openssl-devel
1.3. 配置内核
几个选项:
$ make menuconfig
$ make xconfig
$ make gconfig
$ make menuconfig
1.4. 编译内核
## use 4 core/thread ##
$ make -j 4
## get thread or cpu core count using nproc command ##
$ make -j $(nproc)
1.5. 安装内核
# Install the Linux kernel modules
$ sudo make modules_install
# Install the Linux kernel
$ sudo make install
# It will install three files into /boot directory as well
# as modification to your kernel grub configuration file:
# initramfs-5.6.9.img
# System.map-5.6.9
# vmlinuz-5.6.9
1.6. 更新grub
1.6.1. CentOS/RHEL/Oracle/Scientific 和 Fedora Linux
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
$ sudo grubby --set-default /boot/vmlinuz-5.6.9
# You can confirm the details with the following commands:
$ sudo grubby --info=ALL | more
$ sudo grubby --default-index
$ sudo grubby --default-kernel
1.6.2. Debian/Ubuntu Linux
$ sudo update-initramfs -c -k 5.6.9
$ sudo update-grub
1.7. 重启
$ sudo reboot
# 这里将进行系统重启
$ uname -mrs
# 可能的输出
# Linux 5.6.9 x86_64
2. 安装tools
2.1. perf
我的环境缺少了依赖:
$ sudo yum install slang-devel
$ sudo yum install binutils-devel zlib-static
$ sudo yum install libbabeltrace-devel
$ sudo yum install java-1.8.0-openjdk-devel
# 下面的 platform-python-devel 安装后并不起作用
$ sudo yum install platform-python-devel
编译perf:
$ make
安装perf:
# 注意,这里需要指定目标目录,否则可能被安装到 /root/bin/perf
$ sudo make install DESTDIR=/usr
2.2. bpftools
直接安装即可。
2.3. kvm_stat
直接安装即可。
3. 可能遇到的问题
3.1. BTF: .tmp_vmlinux.btf: pahole (pahole) is not available
在编译内核过程中,可能出现问题现象:
BTF: .tmp_vmlinux.btf: pahole (pahole) is not available
Failed to generate BTF for vmlinux
Try to disable CONFIG_DEBUG_INFO_BTF
make: *** [Makefile:1106: vmlinux] Error 1
参考链接:BTF: .tmp_vmlinux.btf: pahole (pahole) is not available
解决办法:
尝试安装(根据不同系统类型):
$ sudo apt install dwarves
$ sudo dnf install dwarves
$ sudo zypper in dwarves
如果搜不到,就代开powertools的yum源:
vim /etc/yum.repo.d/CentOS-Linux-PowerTools.repoenabled=1
4. 参考链接
- How to compile and install Linux Kernel 5.6.9 from source code
- kernel-5.14.0-8.el9
- BTF: .tmp_vmlinux.btf: pahole (pahole) is not available
源码编译构建安装内核kernel相关推荐
- ROS2 Dashing源码编译和安装
ROS2 Dashing源码编译和安装 安装前的准备 1 2 3 4 5 官方教程: https://index.ros.org/doc/ros2/Installation/Dashing/Linux ...
- ROS Dashing源码编译和安装
ROS Dashing源码编译和安装 前置准备 安装前的准备 可选项: 搭建编译环境 搭建步骤 1. 设置语言环境 2. 添加ROS 2 apt仓库 3. 安装开发工具和ROS工具 4. 获取ROS ...
- ubuntu 环境下调试mysql源码_【转】Ubuntu 16.04下 Mysql 5.7.17源码编译与安装
Ubuntu 16.04下 Mysql5.7.17源码编译与安装 系统环境 一. 系统安装条件 1.cmake MySQL使用cmake跨平台工具预编译源码,用于设置mysql的编译参数. sudo ...
- Atlas 2.2.0源码编译及安装步骤
Atlas 2.2.0源码编译及安装步骤 一.源码编译 1. 下载源码 2. 前置环境安装 3. 修改版本号 4. 修改源码中 atlas与kafka版本兼容问题 5. 开始编译 6. 问题锦集 二. ...
- make无法执行——源码编译、安装
在进行软件源码编译.安装时 ,出现make无法执行的情况下,是缺少基础开发包 执行命令即可: apt-get install build-essential
- Spark入门教程(二)Spark2.2源码编译及安装配置
Spark2.2源码下载 点此进入官网下载地址: 下载Spark spark官网下载截图 //下载好后用传输工具传输到我们的linux上并解压缩 tar -zxvf spark-2.2.0.tgz 源 ...
- Hadoop-2.8.0集群搭建、hadoop源码编译和安装、host配置、ssh免密登录、hadoop配置文件中的参数配置参数总结、hadoop集群测试,安装过程中的常见错误
25. 集群搭建 25.1 HADOOP集群搭建 25.1.1集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据 ...
- nginx 源码编译、安装
nginx 源码编译安装 下载Nginx安装包,Nginx 官网下载,并解压 cd /usr/local/src wget http://nginx.org/download/nginx-1.21.5 ...
- 源码编译、安装libffi
1. 下载源码编译安装 wget ftp://sourceware.org/pub/libffi/libffi-3.3.tar.gz cd libffi-3.3 ./configure --prefi ...
最新文章
- 函数要多小才够好——谈小函数之道
- 谷歌浏览器之如何调试页面js
- C和指针之联合体大小
- Drainage Ditches POJ1273
- HTTP/2 协议入门
- 【BZOJ】1725: [Usaco2006 Nov]Corn Fields牧场的安排
- window.showModalDialog模态对话框 值回传 TreeView无刷新
- iOS 14代码泄露iPhone 12系列细节:有且仅有两款配备ToF 3D镜头
- 微信公众平台开发之微团购
- CarMaker快速入门
- 传真SIP会话发起协议(SIP)
- 深入浅出理解SVM支持向量机
- 用高德地图罗永浩语音包 随时听老罗讲段子
- 代码详解:以股票预测为例,揭秘时间序列预测
- unity通过点击按钮获取手机验证码
- 雷军:当CEO是因为被格式化了电脑
- win7 android 双系统平板 p1000,优派Windows7/Android双系统ViewPad 100
- 百度云 x 宝宝知道 | 你的宝宝问题,这个APP都知道
- iPad越狱运行Linux,免越狱用iPad或iPhon也能跑Windows系统教程(UTM技巧)
- LRTimelapse 5 for Mac(专业延时摄影软件)