下面记录在在Ubuntu 18.04系统下安装低延时内核的流程:
Ubuntu 内核信息
ll /boot
其中initrd.img为根文件系统,System.map为内核符号表(将内核代码段中的地址映射到对应的函数名或者全局变量名),vmlinuz为内核镜像。
下载Linux源码
Linux内核官方地址:www.kernel.org
本例中使用的版本为linux-4.15.18
https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/
安装依赖选项:
sudo apt install libncurses5-dev openssl libssl-dev
sudo apt install build-essential
sudo apt install pkg-config
sudo apt install libc6-dev
sudo apt install bison flex libelf-dev zlibc minizip
sudo apt install libidn11-dev libidn11
配置内核信息
linux源码下载完成后,需要配置.config文件,可以复制/boot下已配置的config文件进行覆盖,例如/boot/config-5.3.0-28-generic文件,覆盖.config文件后,在源码目录下输入命令:
make menuconfig
进入如下界面:
然后将内核配置为抢占式:
-> Processor type and features
-> preemption Model
配置为Preemptible Kernel(Low-Latency Desktop):
其次调高内核默认的颗粒度
-> Processor type and features
-> Timer frequency
配置为1000 Hz:
编译并构建镜像
- 编译内核:在Linux源码目录下输入:
make bzImage
等待内核编译完成。
- 编译模块,内核编译完成后继续输入:
make modules
等待模块编译完成,该步骤所需时间较长。
- 安装模块,模块编译完成后,输入:
sudo make INSTALL_MOD_STRIPE=1 modules_install
完成后会生成在/lib/modules/4.15.18目录,在构建根文件系统时用到。
- 构建根文件系统,输入命令:
sudo mkinitramfs /lib/modules/4.15.18 -o /boot/initrd.img-4.15.18-lowlatency
将内核镜像文件和System.map拷贝到/boot目录下,并且修改文件名称:
sudo cp linux-4.15.18/arch/x86/boot/bzImage /boot/vmlinux-4.15.18-lowlatency
sudo cp linux-4.15.18/System.map /boot/System.map-4.15.18-lowlatency
跟新grub
编辑grub文件:
sudo vim /etc/default/grub
将文件中的GRUB_TIMEOUT_STYLE=hidden和GRUB_TIMEOUT=10命令注释掉,否则系统重启后可能不会出现内核选择菜单。
然后输入更新grub命令:
sudo update-grub
最后重启系统,选择低延时内核,重进进入系统后可以用命令查看内核信息是否被修改:
uname -a