---
title: 源码安装
description: "KAE1.0源码包中包含内核驱动、用户态驱动、基于OpenSSL的KAE引擎和zlib库四个模块，过程中需要使用命令先进行编译，安装，最后检查是否安装成功。若需要升级KAE版本，请先卸载旧版本再进行新版本的安装。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/252RC1/accel/kunpengaccel_06_0015.html
sourcePath: /source/zh/kunpengboostkithistory/252RC1/accel/kunpengaccel_06_0015.html
indexId: 83e1b2ce1b34ef4546c5d22efa34a628fc32566c3e4b7f1cf68943f244eafad972
---
# 源码安装

KAE1.0源码包中包含内核驱动、用户态驱动、基于OpenSSL的KAE引擎和zlib库四个模块，过程中需要使用命令先进行编译，安装，最后检查是否安装成功。若需要升级KAE版本，请先卸载旧版本再进行新版本的安装。

#### 前提条件

- 安装前的系统环境已满足  环境要求
中的要求。
- 使用openssl version命令检查OpenSSL是否为1.1.1x系列，若不符合请参见  安装OpenSSL/Tongsuo
安装OpenSSL。
- 设置OpenSSL环境变量“OPENSSL_ENGINES”为KAE动态库所在目录，使OpenSSL能够识别到KAE引擎。
  1 export OPENSSL_ENGINES=/usr/local/lib/engines-1.1


#### 安装步骤

1. 使用远程登录工具，以root账号进入Linux操作系统命令行界面。
2. 请参见获取软件包下载KAE1.0源码包，将KAE源码包拷贝到自定义路径下并解压。或通过以下命令下载（鲲鹏920处理器）。

```
git clone https://gitcode.com/boostkit/KAE.git -b kae1
```


3. 安装内核驱动。
  在KAEdriver源码目录下，进入“kae_driver”目录后开始安装内核驱动。

  1 2 3 cd kae_driver make make install

  加速器驱动编译生成uacce.ko、hisi_qm.ko、hisi_sec2.ko、hisi_hpre.ko、hisi_zip.ko、hisi_rde.ko，安装路径为：“/lib/modules/`uname -r`/extra”。 由于SUSE及CentOS内核目录为“/lib/modules/`uname -r`/”，驱动安装的目录为“/lib/modules/`uname -r`/extra”（`uname -r`命令获取当前运行内核信息）。如果其他操作系统不是该目录，需要修改Makefile文件中install指定的内核路径。 install: $(shell mkdir -p /lib/modules/`uname -r`/extra)修改为$(shell mkdir -p内核路径/extra)

4. 安装用户态驱动。
  在KAEdriver源码目录下，进入“warpdrive”目录后开始安装Warpdriver驱动开发库。 1 2 3 4 5 cd warpdrive sh autogen.sh ./configure make make install

  其中，执行编译命令./configure时可以加--prefix选项用于指定加速器用户态驱动需要安装的位置，用户态驱动动态库文件为libwd.so。Warpdrive默认安装路径为“/usr/local”，动态库文件在“/usr/local/lib”下。

  KAE引擎需要使用到OpenSSL的动态库与Warpdrive的动态库。Warpdrive源码安装路径选择需要与OpenSSL安装路径保持一致，使得KAE加速引擎可以通过LD_LIBRARY_PATH能够同时识别到这两个动态库。

5. （可选）如果是SUSE操作系统，在加载外部驱动前需要先将配置文件“/etc/modprobe.d/10-unsupported-modules.conf”中的“allow_unsupported_modules”参数值设置为“1”。
6. 加载加速器驱动到内核。

  - 方式一：重启系统加载。
  - 方式二：通过命令行手动依次加载，并查看是否加载成功。

    a. 查询已载入内核的uacce驱动模块。
      1 lsmod | grep uacce

      若没有任何回显内容则执行6.b~6.e将相应的模块加载到内核。

    b. 加载uacce驱动。
      1 modprobe uacce

    c. 加载hisi_sec2驱动，将根据“/etc/modprobe.d/hisi_sec2.conf”下的配置文件加载到内核。
      1 modprobe hisi_sec2

    d. 加载hisi_hpre驱动，将根据“/etc/modprobe.d/hisi_hpre.conf”下的配置文件加载到内核。
      1 modprobe hisi_hpre

    e. 加载hisi_rde驱动，将根据“/etc/modprobe.d/hisi_rde.conf”下的配置文件加载到内核。
      1 modprobe hisi_rde

    f. 加载hisi_zip驱动，将根据“/etc/modprobe.d/hisi_zip.conf”下的配置文件加载到内核。
      1 modprobe hisi_zip

    g. 再次查询已载入内核的uacce驱动模块。
      1 lsmod | grep hisi_qm

      有以下加载的模块显示则表示加载成功。 1 2 hisi_qm 262144 3 hisi_sec2,hisi_zip,hisi_hpre uacce 262144 1 hisi_qm

7. 编译安装KAE引擎。
  1 2 3 4 5 cd kae_engine chmod +x configure ./configure make clean && make make install

  其中，执行编译命令./configure时可以加--prefix选项用于指定KAE引擎的安装路径，KAE引擎动态库文件为libkae.so。

  推荐通过默认方式安装KAE引擎。默认安装路径为“/usr/local”，动态库文件在“/usr/local/lib/engines-1.1”下。

  如果libwd和OpenSSL安装方式不是按默认进行安装，则可以通过以下命令指定OpenSSL和libwd的安装路径： 1 ./configure --openssl_path=/usr/local/openssl –wd_path=/usr/local/libwd 其中，“/usr/local/openssl”和“/usr/local/libwd”是OpenSSL和libwd的一个示例安装路径。

8. 编译安装zlib压缩库。

  a. 从zlib官网下载    zlib-1.2.11.tar.gz(https://www.zlib.net/fossils/zlib-1.2.11.tar.gz)
，拷贝到“kae_zip_engine/open_source”路径下。
  b. 编译安装zlib库。
    1 2 cd kae_zip_engine sh setup.sh install

    zlib加速库安装在“/usr/local/kaezip”。


#### 安装后检查

1. 执行cd命令，进入到“/usr/local/lib”目录或者用户自定义安装目录下。
2. 查看软链接状态。

  a. 查看libwd软链接状态。
    1 ls -al /usr/local/lib/ | grep libwd

    信息回显软链接及so存在，说明libwd安装成功。 1 2 3 lrwxrwxrwx. 1 root root 14 Jun 25 11:16 libwd.so -> libwd.so.1.0.1 lrwxrwxrwx. 1 root root 14 Jun 25 11:16 libwd.so.0 -> libwd.so.1.0.1 -rwxr-xr-x. 1 root root 137280 Jun 24 11:37 libwd.so.1.0.1

  b. 查看KAE引擎软链接状态。
    1 ls -al /usr/local/lib/engines-1.1/

    信息回显软链接及so存在，说明KAE引擎安装成功。 1 2 3 lrwxrwxrwx. 1 root root 48 Jun 25 11:21 kae.so -> /usr/local/openssl/lib/engines-1.1/kae.so.1.0.1 lrwxrwxrwx. 1 root root 48 Jun 25 11:21 kae.so.0 -> /usr/local/openssl/lib/engines-1.1/kae.so.1.0.1 -rwxr-xr-x. 1 root root 212192 Jun 24 11:37 kae.so.1.0.1

  c. 查看zlib库软链接状态。
    1 ll /usr/local/kaezip/lib

    信息回显软链接及so存在，说明zlib库安装成功。 1 2 3 4 -rw-r-r-. 1 root root 161162 Jul 10 12:54 libz.a lrwxrwxrwx. 1 root root 14 Jul 10 12:54 libz.so -> libz.so.1.2.11 lrwxrwxrwx. 1 root root 14 Jul 10 12:54 libz.so.1 -> libz.so.1.2.11 -rwxr-xr-x. 1 root root 146656 Jul 10 12:54 libz.so.1.2.11

3. 查看虚拟文件系统下对应的加速器设备。
  1 ls -al /sys/class/uacce/

  回显结果如下。 1 2 3 4 5 6 7 8 9 total 0 lrwxrwxrwx. 1 root root 0 Nov 14 03:45 hisi_hpre-2 -> ../../devices/pci0000:78/0000:78:00.0/0000:79:00.0/uacce/hisi_hpre-2 lrwxrwxrwx. 1 root root 0 Nov 14 03:45 hisi_hpre-3 -> ../../devices/pci0000:b8/0000:b8:00.0/0000:b9:00.0/uacce/hisi_hpre-3 lrwxrwxrwx. 1 root root 0 Nov 17 22:09 hisi_rde-4 -> ../../devices/pci0000:78/0000:78:01.0/uacce/hisi_rde-4 lrwxrwxrwx. 1 root root 0 Nov 17 22:09 hisi_rde-5 -> ../../devices/pci0000:b8/0000:b8:01.0/uacce/hisi_rde-5 lrwxrwxrwx. 1 root root 0 Nov 14 08:39 hisi_sec-0 -> ../../devices/pci0000:74/0000:74:01.0/0000:76:00.0/uacce/hisi_sec-0 lrwxrwxrwx. 1 root root 0 Nov 14 08:39 hisi_sec-1 -> ../../devices/pci0000:b4/0000:b4:01.0/0000:b6:00.0/uacce/hisi_sec-1 lrwxrwxrwx. 1 root root 0 Nov 17 22:09 hisi_zip-6 -> ../../devices/pci0000:74/0000:74:00.0/0000:75:00.0/uacce/hisi_zip-6 lrwxrwxrwx. 1 root root 0 Nov 17 22:09 hisi_zip-7 -> ../../devices/pci0000:b4/0000:b4:00.0/0000:b5:00.0/uacce/hisi_zip-7


#### 安装后验证

1. 查看KAEOpensslEngine加速引擎是否生效。
  以验证RSA性能为例，验证步骤请参见测试同步RSA性能，通过RSA性能命令可以看到指定KAE引擎之后，RSA的性能得到明显提升。

  除上述方法，在执行RSA性能命令过程中，可以在新的终端上同时查看hisi_hpre设备的硬件队列资源情况如下，相同地，SM3/SM4算法可以查看hisi_sec2的硬件队列消耗情况。

  1 cat /sys/class/uacce/hisi_hpre-*/attrs/available_instances

  您也可以通过以下命令每0.1秒刷新一次，实时查看hisi_hpre的硬件队列消耗情况。 1 watch -n 0.1 cat /sys/class/uacce/hisi_hpre-*/attrs/available_instances

  显示结果从256变为255，说明RSA算法消耗了HPRE加速器一个硬件单元队列，说明KAEOpensslEngine加速引擎已生效。

2. 查看zlib库加速引擎是否生效。
  通过ldd命令查看zlib库是否链接到libwd和libkaezip。 1 ldd /usr/local/kaezip/lib/libz.so.1.2.11

  如果显示如下返回信息，说明zlib加速库安装成功。同样的，用户目标进程也可以通过ldd命令查看是否使用libwd和libkaezip。 1 2 3 4 5 linux-vdso.so.1 => (0x0000ffff80280000) libc.so.6 => /lib64/libc.so.6 (0x0000ffff80080000) libwd.so.1 => /lib64/libwd.so.1 (0x0000ffff80040000) /lib/ld-linux-aarch64.so.1 (0x0000ffff80290000) libkaezip.so => /usr/local/kaezip/lib/libkaezip.so (0x0000ffff80830000)
