编译内核是一项相对复杂的操作,建议在熟悉 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