编译内核是一项相对复杂的操作,建议在熟悉 Linux 命令和操作系统原理后再尝试,以下是在 Ubuntu 虚拟机里编译内核的攻略。
准备工作- 
下载内核源码,进入 官网 下载最新的稳定版或已经了解的版本,可选下载 .tar.xz 或 .tar.gz,注意下载的版本与系统匹配。
 - 
安装必要的依赖,打开终端(依次按
Ctrl+Alt+T),执行以下命令安装编译需要的软件包。 
bash
   sudo apt-get -y update
   sudo apt-get -y install build-essential libncurses-dev bison flex libssl-dev
- 解压并进入内核源码目录,执行以下命令解压源码并进入目录。
 
bash
   tar xf linux-x.y.z.tar.gz
   cd linux-x.y.z
- 清理已有的编译结果,执行以下命令清空上一次的编译结果。
 
bash
   sudo make clean
   sudo make mrproper
- 配置内核,有多种配置方式,这里介绍一种快速配置方式,执行以下命令配置内核。
 
bash
   sudo make defconfig
- 修改配置,如果需要添加或删除内核模块、修改内核参数等,可执行以下命令进入配置页面进行修改。
 
bash
   sudo make menuconfig
- 编译内核,执行以下命令开始编译内核,这一步需要等待一段时间,时间长度与计算机性能和内核版本有关。
 
bash
   sudo make -j4
其中,-j4 表示使用 4 个线程进行编译,可以根据实际计算机配置修改此参数。
- 安装模块,执行以下命令安装编译好的模块。
 
bash
   sudo make modules_install
- 安装内核,执行以下命令安装编译好的内核和模块。
 
bash
   sudo make install
- 重启计算机,执行以下命令重启计算机使新内核生效。
 
bash
   sudo reboot
假设想要修改内核的 TCP/IP 参数,可以进入配置页面修改,具体步骤如下:
- 执行命令进入配置页面。
 
bash
   sudo make menuconfig
- 
在配置页面中选择
Networking support->Networking options->TCP/IP networking,进入 TCP/IP 配置页面。 - 
修改 TCP/IP 参数,如将 TCP/IP 拥塞控制算法改为 BBR,方法如下:
 - 
在 TCP/IP 配置页面中,选择
Default TCP Congestion Control,选择 BBR 选项即可。 - 
保存并退出配置页面,保存并返回主页面即可。
 - 
执行编译内核的步骤(步骤 4 至 7),安装新编译的内核后,使用以下命令查看 TCP/IP 参数是否修改成功。
 
bash
   sudo sysctl -a | grep net.ipv4.tcp_congestion_control
假设想要添加内核模块,如驱动程序或文件系统,可以进入配置页面选择添加,具体步骤如下:
- 执行命令进入配置页面。
 
bash
   sudo make menuconfig
- 
在配置页面中选择需要添加的内核模块,如添加 scsi 设备驱动程序
SCSI device support,方法如下: - 
在配置页面中,选择
Device Drivers->SCSI device support,选择设备类型,如SCSI disk support。 - 
保存并退出配置页面,保存并返回主页面即可。
 - 
执行编译内核的步骤(步骤 4 至 7),安装新编译的内核后,使用以下命令查看已加载的内核模块是否包括新添加的模块。
 
bash
   lsmod | grep scsi_mod
