Linux内核编译添加bcache
前言
由于我需要使用bcache,但是我们安装的centos系统的内核比较老默认不包含bcache, Bcache内核模块仅在Linux 3.10及以上版本支持
我就想自己编译一个稍微版本高点的Linux内核替换下现在的内核,也顺便学习一下内核编译,当然这篇文章是比较简单的记录
不涉及编译内核参数的解释
环境
系统: CentOS7.6
内核:4.19.307
安装编译依赖软件包
1 | yum install -y gcc make git ctags ncurses-devel openssl-develyum install -y bison flex elfutils-libelf-devel bc |
创建内核编译目录
使用 home
下的 kernelbuild
目录
1 | mkdir ~/kernelbuild |
获取内核源码
[清华大学镜像])站:Index of /kernel/v4.x/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
linux-4.xx.xx.tar.xz
linux-4.xx.xx.tar.gz
这两个格式都可以的,tar.xz压缩率更高,文件更小。
1 | wget https://mirror.tuna.tsinghua.edu.cn/kernel/v4.x/linux-4.17.11.tar.xz |
解压内核代码
将其解压后进入源码目录:
1 | tar -xvJf linux-4.17.11.tar.xz |
为确保内核树绝对干净,进入内核目录并执行 make mrproper 命令:
1 | cd linux-4.17.11make clean && make mrproper |
内核配置
复制当前的内核配置文件
config-3.10.0-862.el7.x86_64
是我当前环境的内核配置文件,根据实际情况修改
1 | cp /boot/config-3.10.0-862.el7.x86_64 .config |
高级配置
y 是启用, n 是禁用, m 是需要时启用.
make menuconfig
: 老的 ncurses 界面,被 nconfig 取代make nconfig
: 新的命令行 ncurses 界面
添加bcache
选择Device Drivers,回车
选择Multiple devices driver support(RAID and LVM),回车
用空格将方框中的全部选中
编译和安装
编译内核
1 | make -j x |
如果你是四核的机器,x可以是8
你也可以自动获取 $(nproc)
1 | make -j $(nproc) |
如何执行的时候出现警告
1 | [root@master linux-4.19.307]# make -j 15 |
是由于内核配置文件中的一些选项的值无效导致的
解决方法
进入内核源码目录,执行以下命令清除之前的配置和编译文件:
1
make distclean
然后执行以下命令重新配置内核:
1
make menuconfig
安装内核
Warning: 从这里开始,需要 root 权限执行命令,否则会失败.
编译完内核后安装:
1 | make modules_install install |
设置启动
1 | # 查看启动顺序 |
关于Bcache的介绍和使用
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment