前言

心血来潮想是是自己编译安装linux试试,于是心动不如行动。折腾了半天总是和网上的教程出现的问题不一,在这里记录下自己遇到到的坑,最后感谢这些大佬的文章!!!

参考文章

  1. 如何编译Linux内核源码?
  2. Linux内核编译很简单,6步编译一个自己的内核
  3. linux内核makefile概览
  4. 如何优雅地升级内核?
  5. Kali Linux 2021.3编译安装升级内核

准备

#需要安装一些工具
sudo aptitude install vim make git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison dwarves

相关问题说明

进入编译的过程中出现了下面的错误信息

BTF: .tmp_vmlinux.btf: pahole (pahole) is not available
Failed to generate BTF for vmlinux
Try to disable CONFIG_DEBUG_INFO_BTF
make: *** [Makefile:1183:vmlinux] 错误 1

搜索到的方法是安装dwarves

编译流程

下载内核

点这里下载linux5.16.9.tar.xz,选择你心仪的版本

wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.16.9.tar.xz
#解压并进入该目录下
tar -xvf linux-5.16.9.tar.xz && cd linux-5.16.9

配置编译内核模块文件

选择内核中要编译的内核模块,如文件系统,网络,IO栈,虚拟化和设备驱动等等,这里有三种方式

1. make menuconfig
#图形化菜单
2. make oldconfig
#命令行,这里会在已有配置信息进行增量提示,建议采用系统默认值,一路回车就行
3. 复制boot目录下的配置文件
ls -al

Screenshot_20220214_165737
由于第一次编译,我试前两个,对于英语渣渣的我来说两个都看不懂面,好在第二个可以一直按回车选择默认选项。

sudo make oldconfig
ls -al

Screenshot_20220214_165945
在后面编译过程中出现没有规则可制作目标需要修改.config找到CONFIG_SYSTEM_TRUSTED_KEYS,设置为CONFIG_SYSTEM_TRUSTED_KEYS=””

sudo vim .config

编译内核

多线程编译,我cpu是4核心,所以是8线程。速度和cpu性能相关

sudo make -j 8

安装模块

sudo make modules_install

这条命令没问题,但是编译安装过后,重启会卡在grub界面(loading initial ramdisk),上网搜索一番这样安装模块会使initrd文件过大,而我系统安装的grub版本不支持initrd大文件,需要添加INSTALL_MOD_STRIP=1

sudo make INSTALL_MOD_STRIP=1 modules_install

安装镜像

sudo make install

更新内核

sudo update-grub

重启

sudo reboot

查看内核版本

uname -a

后续

体验了一天,实际感受不大。自己编译的内核成就感满满,但是由于自己初次编译,问题还很多。如:笔记本的触摸板驱动没编译进内核,联想自带的Fn+[F1-F10]这些快捷键残缺了很多,这方面还得加强学习。后面又嫌弃kde版本太低,折腾过后升级成了Kde5.24.1,界面比以前流程了很多。随后都已经折腾这个样子了不如直接debian testing。按道理应该是testing 这里直接变成了sid

       _,met$$$$$gg.          
    ,g$$$$$$$$$$$$$$$P.       --------- 
  ,g$$P"     """Y$$.".        OS: Debian GNU/Linux bookworm/sid x86_64 
 ,$$P'              `$$$.     Host: 81FW Lenovo Legion Y7000 
',$$P       ,ggs.     `$$b:   Kernel: 5.15.0-3-amd64 
`d$$'     ,$P"'   .    $$$    Uptime: 30 mins 
 $$P      d$'     ,    $$P    Packages: 2838 (dpkg) 
 $$:      $$.   -    ,d$$'    Shell: bash 5.1.16 
 $$;      Y$b._   _,d$P'      Resolution: 1920x1080 
 Y$$.    `.`"Y$$$$P"'         DE: Plasma 5.24.1 
 `$$b      "-.__              WM: KWin 
  `Y$$                        Theme: Breeze [Plasma], Breeze [GTK2/3] 
   `Y$$.                      Icons: [Plasma], breeze-dark [GTK2/3] 
     `$$b.                    Terminal: konsole 
       `Y$$b.                 Terminal Font: Hack 16 
          `"Y$b._             CPU: Intel i5-8300H (8) @ 4.000GHz 
              `"""            GPU: NVIDIA GeForce GTX 1050 Ti Mobile 
                              GPU: Intel CoffeeLake-H GT2 [UHD Graphics 630] 
                              Memory: 2354MiB / 15879MiB 

Q.E.D.


人生如逆旅,我亦是行人,但愿初相遇,不负有心人