---
title: 编译安装Bcache
description: "1. 获取Bcache源码(https://gitee.com/kunpengcompute/bcache/repository/archive/smart-write-cache.zip)放到“/home”。"
url: https://www.hikunpeng.com/document/detail/zh/boostsds/smartwc/kunpengswc_20_0007.html
sourcePath: /source/zh/boostsds/smartwc/kunpengswc_20_0007.html
indexId: 320e6d4a723e7466231e0757110f573fd38e6dd5f59c2e332fc495377c1423f651
---
# 编译安装Bcache

#### CentOS 7.6

1. 获取Bcache源码(https://gitee.com/kunpengcompute/bcache/repository/archive/smart-write-cache.zip)放到“/home”。
2. 解压源码。
  1 2 cd /home unzip bcache-smart-write-cache.zip

3. 编译得到Bcache驱动模块。
  1 2 cd /home/bcache-smart-write-cache/drivers/md/bcache make -C /lib/modules/$(uname -r)/build M=$(pwd)

  编译时请根据实际运行环境，选择需要运行bcache.ko的内核“build”目录进行编译。

4. 查看Bcache模块的引用计数，如果未打印任何信息，则跳过步骤5。

```
lsmod | grep -w bcache
```


  确保Bcache模块的引用计数为0。

```
bcache                458752  0
```


5. 确保当前环境没有加载bcache.ko。

```
modprobe -r bcache
```


6. （可选）删除安装目录。如果未安装Bcache则请跳过此步骤。

```
rm -rf /lib/modules/$(uname -r)/kernel/drivers/md/bcache
```


7. 创建安装目录。

```
mkdir -p /lib/modules/$(uname -r)/kernel/drivers/md/bcache
```


8. 拷贝bcache.ko目标文件到安装目录。

```
cp bcache.ko /lib/modules/$(uname -r)/kernel/drivers/md/bcache
```


9. 压缩目标文件。

```
xz -z /lib/modules/$(uname -r)/kernel/drivers/md/bcache/bcache.ko
```


10. 更新bcache.ko模块依赖性。

```
depmod -a
```


11. 更新initramfs。

```
dracut --add-drivers bcache -f /boot/initramfs-$(uname -r).img
```


12. 确认bcache.ko是否安装成功。

  - 命令1：在initramfs文件中查询bcache.ko。

```
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：查看当前系统下的Bcache模块的详细信息。

```
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返回信息中的“usr/lib/modules/”与命令2返回信息中的“/lib/modules/”目录下文件内容一致，说明已成功将当前系统下的bcache.ko文件更新至initramfs文件中。

13. 加载bcache.ko。

```
modprobe bcache
```


#### openEuler 20.03

1. 获取Bcache源码(https://gitee.com/openeuler/kernel/tree/openEuler-1.0-LTS/kernel)放到“/home”。
2. 解压源码。

```
cd /home
unzip kernel-openEuler-1.0-LTS.zip
```


3. 临时替换系统头文件。

```
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源码得到的。

4. 编译得到Bcache驱动模块。
  1 2 cd /home/kernel-openEuler-1.0-LTS/drivers/md/bcache make -C /lib/modules/$(uname -r)/build M=$(pwd)

  编译时请根据实际运行环境，选择需要运行bcache.ko的内核“build”目录进行编译。

5. 替换回原文件。

```
\mv /usr/src/kernels/$(uname -r)/include/trace/events/bcache.h.bak /usr/src/kernels/$(uname -r)/include/trace/events/bcache.h
```


6. 查看Bcache模块的引用计数，如果未打印任何信息或引用计数为0，则跳过步骤7。

```
lsmod | grep -w bcache
```


  确保Bcache模块的引用计数为0。

```
bcache                458752  0
```


7. 确保当前环境没有加载bcache.ko。

```
modprobe -r bcache
```


8. 删除安装目录。

```
rm -rf /lib/modules/$(uname -r)/kernel/drivers/md/bcache
```


9. 创建安装目录。

```
mkdir -p /lib/modules/$(uname -r)/kernel/drivers/md/bcache
```


10. 拷贝bcache.ko目标文件到安装目录。

```
cp bcache.ko /lib/modules/$(uname -r)/kernel/drivers/md/bcache
```


11. 压缩目标文件。

```
xz -z /lib/modules/$(uname -r)/kernel/drivers/md/bcache/bcache.ko
```


12. 更新bcache.ko模块依赖性。

```
depmod -a
```


13. 更新initramfs。

```
dracut --add-drivers bcache -f /boot/initramfs-$(uname -r).img
```


14. 确认bcache.ko是否安装成功。
以下两条命令执行后，显示的文件信息完全一致则表示安装成功。

  - 命令1：在initramfs文件中查询bcache.ko。

```
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：查看当前系统下的Bcache模块的详细信息。

```
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
```


15. 加载bcache.ko。

```
modprobe bcache
```
