编译安装Bcache
编译安装内核与编译安装Bcache是作用相同,是并列关系,按需选择其中一个执行即可。
CentOS 7.6
- 获取Bcache源码放到“/home”。
下载链接:https://gitee.com/kunpengcompute/bcache/repository/archive/smart-write-cache.zip
- 解压源码。
1 2
cd /home unzip bcache-smart-write-cache.zip
- 编译得到Bcache驱动模块。
1 2
cd /home/bcache-smart-write-cache/drivers/md/bcache make -C /lib/modules/$(uname -r)/build M=$(pwd)
make时请根据实际运行环境,选择需要运行bcache.ko的内核build目录进行编译。
- 查看Bcache模块的引用计数,如果未打印任何信息,则跳过步骤5。
lsmod | grep -w bcache
确保Bcache模块的引用计数为0。
bcache 458752 0
- 确保当前环境没有加载bcache.ko。
modprobe -r bcache
- (可选)删除安装目录。如果未安装Bcache则请跳过此步骤。
rm -rf /lib/modules/$(uname -r)/kernel/drivers/md/bcache
- 创建安装目录。
mkdir -p /lib/modules/$(uname -r)/kernel/drivers/md/bcache
- 拷贝bcache.ko目标文件到安装目录。
cp bcache.ko /lib/modules/$(uname -r)/kernel/drivers/md/bcache
- 压缩目标文件。
xz -z /lib/modules/$(uname -r)/kernel/drivers/md/bcache/bcache.ko
- 更新bcache.ko模块依赖性。
depmod -a
- 更新initramfs。
dracut --add-drivers bcache -f /boot/initramfs-$(uname -r).img
- 确认bcache.ko是否安装成功。
以下两条命令执行后,显示的文件信息如下,使用命令3可以看出/lib与/usr/lib是同一个路径,所以意味着命令1和命令2回显的内容是一致的。
- 命令1:
lsinitrd /boot/initramfs-$(uname -r).img | grep bcache.ko.xz
回显如下所示。
-rw-r--r-- 1 root root 997136 Nov 30 11:45 usr/lib/modules/4.14.0-115.el7a.0.1.aarch64/kernel/drivers/md/bcache/bcache.ko.xz
- 命令2:
ls -l /lib/modules/$(uname -r)/kernel/drivers/md/bcache/bcache.ko.xz
回显如下所示。
-rw-r--r-- 1 root root 997136 Nov 30 11:45 /lib/modules/4.14.0-115.el7a.0.1.aarch64/kernel/drivers/md/bcache/bcache.ko.xz
命令3:
ll /lib
回显如下所示。
lrwxrwxrwx. 1 root root 7 Feb 27 11:45 /lib -> usr/lib
- 命令1:
- 加载bcache.ko。
modprobe bcache
openEuler 20.03
- 获取Bcache源码放到“/home”。
下载链接:https://gitee.com/openeuler/kernel/tree/openEuler-1.0-LTS/kernel
- 解压源码。
unzip kernel-openEuler-1.0-LTS.zip
- 临时替换系统头文件。
mv /usr/src/kernels/$(uname -r)/include/trace/events/bcache.h /usr/src/kernels/$(uname -r)/include/trace/events/bcache.h.bak cp /home/kernel-openEuler-1.0-LTS/include/trace/events/bcache.h /usr/src/kernels/$(uname -r)/include/trace/events/bcache.h
/home/kernel-openEuler-1.0-LTS文件夹是解压bcache源码得到的。
- 编译得到Bcache驱动模块。
1 2
cd /home/kernel-openEuler-1.0-LTS/drivers/md/bcache make -C /lib/modules/$(uname -r)/build M=$(pwd)
make时请根据实际运行环境,选择需要运行bcache.ko的内核build目录进行编译。
- 替换回原文件。
mv /usr/src/kernels/$(uname -r)/include/trace/events/bcache.h.bak /usr/src/kernels/$(uname -r)/include/trace/events/bcache.h
- 查看Bcache模块的引用计数,如果未打印任何信息,则跳过步骤7。
lsmod | grep -w bcache
确保Bcache模块的引用计数为0。
bcache 458752 0
- 确保当前环境没有加载bcache.ko。
modprobe -r bcache
- 删除安装目录。
rm -rf /lib/modules/$(uname -r)/kernel/drivers/md/bcache
- 创建安装目录。
mkdir -p /lib/modules/$(uname -r)/kernel/drivers/md/bcache
- 拷贝bcache.ko目标文件到安装目录。
cp bcache.ko /lib/modules/$(uname -r)/kernel/drivers/md/bcache
- 压缩目标文件。
xz -z /lib/modules/$(uname -r)/kernel/drivers/md/bcache/bcache.ko
- 更新bcache.ko模块依赖性。
depmod -a
- 更新initramfs。
dracut --add-drivers bcache -f /boot/initramfs-$(uname -r).img
- 确认bcache.ko是否安装成功。
以下两条命令执行后,显示的文件信息完全一致则表示安装成功。
- 命令1:
lsinitrd /boot/initramfs-$(uname -r).img | grep bcache.ko.xz
回显如下所示。
-rw-r--r-- 1 root root 997136 Nov 30 11:45 usr/lib/modules/4.14.0-115.el7a.0.1.aarch64/kernel/drivers/md/bcache/bcache.ko.xz
- 命令2:
ls -l /lib/modules/$(uname -r)/kernel/drivers/md/bcache/bcache.ko.xz
回显如下所示。
-rw-r--r-- 1 root root 997136 Nov 30 11:45 /lib/modules/4.14.0-115.el7a.0.1.aarch64/kernel/drivers/md/bcache/bcache.ko.xz
- 命令1:
- 加载bcache.ko。
modprobe bcache
父主题: 安装Bcache