---
title: Bcache编译与安装
description: "1. 获取Bcache源码放到“/home”。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/220RC3/sds/kunpengsdss_swc_27_0007.html
sourcePath: /source/zh/kunpengboostkithistory/220RC3/sds/kunpengsdss_swc_27_0007.html
indexId: a6a78e8afff62db6fc8a83528d40ccebb01b467e3f9bdd688dd08c0804292e6173
---
# Bcache编译与安装

#### CentOS 7.6

1. 获取Bcache源码放到“/home”。
  下载链接：https://github.com/kunpengcompute/bcache/releases/tag/swc-v0.2.0(https://github.com/kunpengcompute/bcache/releases/tag/swc-v0.2.0)

2. 解压源码。
  1 2 cd /home unzip bcache-swc-v0.2.0.zip

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

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

4. 查看Bcache模块的引用计数。

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


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

```
bcache                458752  0
```


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

```
modprobe -r bcache
```


6. （可选）删除安装目录。

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


  如果未安装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是否安装成功。

```
lsinitrd /boot/initramfs-$(uname -r).img | grep bcache.ko.xz
-rw-r--r-- 1 root root 997136 Nov 30 11:45usr/lib/modules/4.14.0-115.el7a.0.1.aarch64/kernel/drivers/md/bcache/bcache.ko.xz
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
```


13. 加载bcache.ko。

```
modprobe bcache
```


#### openEuler 20.03

1. 获取Bcache源码放到“/home”。
  下载链接：https://gitee.com/openeuler/kernel/tree/openEuler-1.0-LTS/kernel(https://gitee.com/openeuler/kernel/tree/openEuler-1.0-LTS/kernel)

2. 解压源码。

```
unzip openeuler-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/include/trace/events/bcache.h /usr/src/kernels/$(uname -r)/include/trace/events/bcache.h
```


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

  make时请根据实际运行环境，选择需要运行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模块的引用计数。

```
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是否安装成功。

```
lsinitrd /boot/initramfs-$(uname -r).img | grep bcache.ko.xz
-rw-r--r-- 1 root root 997136 Nov 30 11:45usr/lib/modules/4.19.90-2012.4.0.0053.oe1.aarch64/kernel/drivers/md/bcache/bcache.ko.xz
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.19.90-2012.4.0.0053.oe1.aarch64/kernel/drivers/md/bcache/bcache.ko.xz
```


15. 加载bcache.ko。

```
modprobe bcache
```
