author: hjjdebug
date: 2024年 10月 25日 星期五 15:38:48 CST
description: ubuntu20 从源码编译升级到版本5.15.263
我的内核是 5.15.105, 用apt 下载源码后其版本是5.15.263
为什么要从源码编译内核. 升级内核?
目的: 练练手. 消除内核神秘性. 还可以裁减内核,也是调试内核和模块的基础.
1. 下载源码 $sudo apt-get source linux-hwe-5.15-source-5.15.0
2. 配置内核, 形成.config 文件
make defconfig 是不行的,它形成的.config文件包含的内容太少,形成的内核是不能引导系统的.
所以你需要一个基础点作为.config 的起点.
$cp /boot/config-5.15.0-105-generic .config //选用一个可以运行的配置,作为起点.简化了我们配置
// 你的也许需要修改第一个参数
make menuconfig //你想修改配置,就修改它了,不想修改,直接保存
覆盖一下.config 文件, 直接保存跟copy来的那个基础config 还是会有差别的. 它会修改一些配置例如版本信息等.
config 搞不对,编出的内核会不能运行
注意:需要把内核CONFIG_DEBUG_INFO配置关掉,
不然会因为编译完安装内核时生成的initrd.img-5.15.0-263太大而导致系统启动时报“out of memory”的错误导致系统起不来。
怎样让grub 支持大内核不在本博阐述.
3. 编译内核
遇到的错误, 大多是缺少相关工具,flex,bison,zstd等安装即可.
$sudo apt install flex
$sudo apt install bison
$sudo apt install zstd
下面这个比较陌生, 也是缺少工具造成, 解决方法也是安装工具包.
BTF: .tmp_vmlinux.btf: pahole (pahole) is not available
Failed to generate BTF for vmlinux
Try to disable CONFIG_DEBUG_INFO_BTF
Makefile:1127: recipe for target ‘vmlinux’ failed
make: * [vmlinux] Error 1
分析:
BTF(BPF Type Format)是一种紧凑的格式,用于表达类型信息
BPF(扩展的 Berkeley Packet Filter)是一项强大而灵活的技术。
它允许在内核中运行沙盒化程序,类似于虚拟机环境,为扩展内核功能提供了一种不会导致系统崩溃的安全方法。
pahole 是一个工具, 是dwarves 项目中的一部分,
它主要用于提取数据结构中的调试信息格式(如DWARF和CTF)
缺少该工具,安装之.
编译内核总是会浪费很多时间,尤其是配置一变又要重新编译. 大好时间都浪费在编译上,没办法…
编译成功会有:
Kernel: arch/x86/boot/bzImage is ready (#4)
前边是基础. 新内核怎样让grub 认识.
1. 安装模块及内核, 通常是安装在/boot 目录下
这里说的太专业化了,白话是把新内核和新模块copy 到指定的位置.方便grub 找到它
$make modules_install // 签名,安装也要花不少时间. 靠,等等等…
$make install
要先安装模块,后安装内核,因为后者还要依赖于前者.
$ make -n install , 只显示不安装会让你看到它会运行什么脚本.
2. 更新bootloader
3. 启用新内核
$reboot, 选择新内核
编辑/etc/default/grub 文件
GRUB_DEFAULT=0
表示选择第一项, 可以更改为其它项
如果开机选择内核目录为两层,则:
GRUB_DEFAULT=‘1->4’
1 表示选择第二个选项(往往对应着高级选项)
4 表示选择第五个内核
保存文件后, $update-grub
到此这篇ubuntu 下载源码(ubuntu下载源码包断开)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/28053.html