---
title: 源码安装
description: "KAE2.0源码包中包含KAEKernelDriver内核驱动、UADK框架、KAEOpensslEngine引擎和KAEZlib、KAEZstd、KAELz4几个模块，其中KAEKernelDriver内核驱动与UADK为必选项，其他模块按实际需求选择安装。若需要升级KAE版本，请先卸载旧版本再进行新版本的安装。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/252RC1/accel/kunpengaccel_06_0012.html
sourcePath: /source/zh/kunpengboostkithistory/252RC1/accel/kunpengaccel_06_0012.html
indexId: 7dec955466b2dbf8d3e99346103692d8e738d032200100b76936320fd1dc6b9372
---
# 源码安装

KAE2.0源码包中包含KAEKernelDriver内核驱动、UADK框架、KAEOpensslEngine引擎和KAEZlib、KAEZstd、KAELz4几个模块，其中KAEKernelDriver内核驱动与UADK为必选项，其他模块按实际需求选择安装。若需要升级KAE版本，请先卸载旧版本再进行新版本的安装。

#### 前提条件

- 安装前系统环境已满足  环境要求
中的要求。
- 使用openssl version命令检查OpenSSL是否为1.1.1x或3.0.x系列或者Tongsuo版本是否为8.4.0，若不符合请参见  安装OpenSSL/Tongsuo
安装OpenSSL/Tongsuo。
- 使用以下命令安装相关依赖。
  1 yum install -y make kernel-devel-`uname -r` libtool numactl-devel openssl-devel lz4-devel libzstd-devel chrpath cmake libunwind-devel

- 设置OpenSSL环境变量“OPENSSL_ENGINES”为KAE动态库所在目录，使OpenSSL能够识别到KAE引擎。

  - OpenSSL 1.1.1x系列：
    1 export OPENSSL_ENGINES=/usr/local/lib/engines-1.1

  - OpenSSL 3.0.x系列：
    1 export OPENSSL_ENGINES=/usr/local/lib/engines-3.0


  - Tongsuo：
    1 export OPENSSL_ENGINES=/usr/local/tongsuo/lib/engines-3.0


- 设置LD_LIBRARY_PATH环境变量，使KAE能够识别到UADK驱动动态库。
  1 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib


#### 安装步骤

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

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


3. （可选）一键安装所有模块。
  当OpenSSL为1.1.1x系列，代码脚本提供一键式安装命令。进入KAE源码包目录，使用sh build.sh all命令安装以上所有组件内容。

  1 2 cd KAE sh build.sh all

4. 安装内核驱动。

  a. 进入KAE源码包目录中，执行安装脚本。
    1 2 cd KAE sh build.sh driver

    加速器驱动编译生成uacce.ko、hisi_qm.ko、hisi_sec2.ko、hisi_hpre.ko、hisi_zip.ko，安装路径为：“/lib/modules/`uname -r`/extra”。

  b. 查看驱动是否安装成功。

    - 查看“/sys/class/uacce”目录下是否存在加速引擎文件系统。
      1 ll /sys/class/uacce/

      回显信息如下所示，表示驱动安装成功。 1 2 3 4 5 6 lrwxrwxrwx. 1 root root 0 Aug 22 17:14 hisi_hpre-2 -> ../../devices/pci0000:78/0000:78:00.0/0000:79:00.0/uacce/hisi_hpre-2 lrwxrwxrwx. 1 root root 0 Aug 22 17:14 hisi_hpre-3 -> ../../devices/pci0000:b8/0000:b8:00.0/0000:b9:00.0/uacce/hisi_hpre-3 lrwxrwxrwx. 1 root root 0 Aug 22 17:14 hisi_sec2-0 -> ../../devices/pci0000:74/0000:74:01.0/0000:76:00.0/uacce/hisi_sec2-0 lrwxrwxrwx. 1 root root 0 Aug 22 17:14 hisi_sec2-1 -> ../../devices/pci0000:b4/0000:b4:01.0/0000:b6:00.0/uacce/hisi_sec2-1 lrwxrwxrwx. 1 root root 0 Aug 22 17:14 hisi_zip-4 -> ../../devices/pci0000:74/0000:74:00.0/0000:75:00.0/uacce/hisi_zip-4 lrwxrwxrwx. 1 root root 0 Aug 22 17:14 hisi_zip-5 -> ../../devices/pci0000:b4/0000:b4:00.0/0000:b5:00.0/uacce/hisi_zip-5

    - 通过lsmod查看驱动安装情况来判断驱动是否安装成功。
      1 lsmod | grep hisi_qm

      回显信息如下所示，表示驱动安装成功。 1 2 hisi_qm 262144 3 hisi_sec2,hisi_zip,hisi_hpre uacce 262144 1 hisi_qm

- 若安装驱动或重启设备后查询不到设备文件，可能是操作系统自带加速驱动导致，可以卸载驱动后重新加载；或在启动脚本rc.local中加上重新加载驱动命令，以确保重启设备后能正常加载加速器驱动。以下命令以hisi_sec2为例重新加载。
  1 2 rmmod hisi_sec2 modprobe hisi_sec2

- 鲲鹏920服务器上，如果执行sh build.sh cleanup后重新安装仍旧找不到设备文件，请确保License安装成功，若无License也会导致驱动安装失败，关于License请参见  获取License
。
- KAE2.0版本安装驱动会默认将加解密及解压缩驱动一起安装，若不需要可手动卸载不需要的驱动文件。


5. 安装UADK框架。

  a. 执行安装UADK框架的脚本命令。
    1 sh build.sh uadk

    UADK框架中包含了用户态驱动，用户态驱动动态库文件为libwd.so、libwd_crypto.so等。UADK默认安装路径为“/usr/include/uadk”，动态库文件在“/usr/local/lib”下。

    若执行安装UADK命令后失败，提示缺少头文件，则安装相关依赖包后重新执行安装命令即可。

  b. 查看UADK框架是否安装成功。
    1 ll /usr/local/lib/libwd*

    回显信息如下，表示安装成功。 1 2 3 4 5 6 7 8 9 10 11 12 -rwxr-xr-x. 1 root root 961 Aug 22 17:23 /usr/local/lib/libwd_comp.la lrwxrwxrwx. 1 root root 19 Aug 22 17:23 /usr/local/lib/libwd_comp.so -> libwd_comp.so.2.5.0 lrwxrwxrwx. 1 root root 19 Aug 22 17:23 /usr/local/lib/libwd_comp.so.2 -> libwd_comp.so.2.5.0 -rwxr-xr-x. 1 root root 377872 Aug 22 17:23 /usr/local/lib/libwd_comp.so.2.5.0 -rwxr-xr-x. 1 root root 973 Aug 22 17:23 /usr/local/lib/libwd_crypto.la lrwxrwxrwx. 1 root root 21 Aug 22 17:23 /usr/local/lib/libwd_crypto.so -> libwd_crypto.so.2.5.0 lrwxrwxrwx. 1 root root 21 Aug 22 17:23 /usr/local/lib/libwd_crypto.so.2 -> libwd_crypto.so.2.5.0 -rwxr-xr-x. 1 root root 715616 Aug 22 17:23 /usr/local/lib/libwd_crypto.so.2.5.0 -rwxr-xr-x. 1 root root 907 Aug 22 17:23 /usr/local/lib/libwd.la lrwxrwxrwx. 1 root root 14 Aug 22 17:23 /usr/local/lib/libwd.so -> libwd.so.2.5.0 lrwxrwxrwx. 1 root root 14 Aug 22 17:23 /usr/local/lib/libwd.so.2 -> libwd.so.2.5.0 -rwxr-xr-x. 1 root root 1342080 Aug 22 17:23 /usr/local/lib/libwd.so.2.5.0

6. 编译安装KAEOpensslEngine加速引擎。

  - OpenSSL 1.1.1x系列：

    - 使用默认路径下的OpenSSL。
      1 sh build.sh engine

    - 支持使用其他路径下的OpenSSL，如下所示。
      1 sh build.sh engine /usr/local/ssl1_1_1w

  - OpenSSL 3.0.x系列：

    - 使用默认路径下的OpenSSL。
      1 sh build.sh engine3

    - 支持使用其他路径下的OpenSSL，如下所示。
      1 sh build.sh engine3 /usr/local/ssl3_0_14


  - Tongsuo：

    - 使用默认路径下的Tongsuo。
      1 sh build.sh engine3_tongsuo

    - 支持使用其他路径下的Tongsuo，如下所示。
      1 sh build.sh engine3_tongsuo /opt/tongsuo

KAE引擎动态库文件为libkae.so。动态库文件在“/usr/local/lib/engines-x.x”或“/usr/local/tongsuo/lib/engines-3.0”下。
7. 查看KAE引擎是否安装成功。

  - OpenSSL 1.1.1x系列：
    1 ll /usr/local/lib/engines-1.1

  - OpenSSL 3.0.x系列：
    1 ll /usr/local/lib/engines-3.0


  - Tongsuo 8.4.0：
    1 ll /usr/local/tongsuo/lib/engines-3.0

回显信息如下，表示安装成功。
```
total 5644
-rw-r--r--. 1 root root 3846524 Aug 22 17:28 kae.a
-rwxr-xr-x. 1 root root     995 Aug 22 17:28 kae.la
lrwxrwxrwx. 1 root root      12 Aug 22 17:28 kae.so -> kae.so.2.0.0
lrwxrwxrwx. 1 root root      12 Aug 22 17:28 kae.so.2 -> kae.so.2.0.0
-rwxr-xr-x. 1 root root 1967736 Aug 22 17:28 kae.so.2.0.0
```

8. 编译安装KAEZlib加速库。
在完成KAEZlib加速库的安装后，可以结合自身需求进行KAEGzip解压缩工具的编译安装，该解压缩工具集成了KAE硬加速接口，使用户能够更加便捷地使用鲲鹏硬加速模块进行文件的压缩和解压操作。安装步骤请参见8.c~8.d。


  a. 编译安装。
    1 sh build.sh zlib

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

  b. 查看zlib加速压缩库是否安装成功。
    1 ll /usr/local/kaezip/lib/

    回显信息如下所示，表示安装成功。 1 2 3 4 5 6 7 8 lrwxrwxrwx. 1 root root 40 Aug 29 10:20 libkaezip.so -> /usr/local/kaezip/lib/libkaezip.so.2.0.0 lrwxrwxrwx. 1 root root 40 Aug 29 10:20 libkaezip.so.0 -> /usr/local/kaezip/lib/libkaezip.so.2.0.0 -rwxr-xr-x. 1 root root 148096 Aug 29 10:20 libkaezip.so.2.0.0 -rw-r--r--. 1 root root 145674 Aug 29 10:20 libz.a lrwxrwxrwx. 1 root root 14 Aug 29 10:20 libz.so -> libz.so.1.2.11 lrwxrwxrwx. 1 root root 14 Aug 29 10:20 libz.so.1 -> libz.so.1.2.11 -rwxr-xr-x. 1 root root 144784 Aug 29 10:20 libz.so.1.2.11 drwxr-xr-x. 2 root root 4096 Aug 29 10:20 pkgconfig

  c. 可选：编译安装KAEGzip解压缩工具。
    1 sh build.sh gzip

    工具安装在“/usr/local/kaegzip”。

  d. 可选：查看KAEGzip解压缩工具是否安装成功。
    1 ldd /usr/local/kaegzip/gzip

    回显信息如下所示，表示安装成功。 1 2 3 4 5 6 7 8 9 [root@localhost /]# ldd /usr/local/kaegzip/gzip linux-vdso.so.1 (0x0000ffff7fbc1000) libz.so.1 => /usr/local/kaezip/lib/libz.so.1 (0x0000ffff7fb50000) libwd.so.2 => /usr/local/lib/libwd.so.2 (0x0000ffff7fae0000) libkaezip.so => /usr/local/kaezip/lib/libkaezip.so (0x0000ffff7fa90000) libc.so.6 => /usr/lib64/libc.so.6 (0x0000ffff7f8e0000) /lib/ld-linux-aarch64.so.1 (0x0000ffff7fb84000) libwd_comp.so.2 => /usr/local/lib/libwd_comp.so.2 (0x0000ffff7f8a0000) libnuma.so.1 => /usr/lib64/libnuma.so.1 (0x0000ffff7f870000)

9. 编译安装KAEZstd加速库。

  a. 编译安装。
    1 sh build.sh zstd

    KAEZstd加速库安装在“/usr/local/kaezstd”。

  b. 查看是否安装成功。
    1 ll /usr/local/kaezstd/lib/

    回显信息如下所示，表示安装成功。 1 2 3 4 5 6 7 8 9 -rwxr-xr-x. 1 root root 82688 Aug 29 10:40 libkaezstd.a lrwxrwxrwx. 1 root root 42 Aug 29 10:40 libkaezstd.so -> /usr/local/kaezstd/lib/libkaezstd.so.2.0.0 lrwxrwxrwx. 1 root root 42 Aug 29 10:40 libkaezstd.so.0 -> /usr/local/kaezstd/lib/libkaezstd.so.2.0.0 -rwxr-xr-x. 1 root root 76880 Aug 29 10:40 libkaezstd.so.2.0.0 -rw-r--r--. 1 root root 996750 Aug 29 10:40 libzstd.a lrwxrwxrwx. 1 root root 16 Aug 29 10:40 libzstd.so -> libzstd.so.1.5.2 lrwxrwxrwx. 1 root root 16 Aug 29 10:40 libzstd.so.1 -> libzstd.so.1.5.2 -rwxr-xr-x. 1 root root 908616 Aug 29 10:40 libzstd.so.1.5.2 drwxr-xr-x. 2 root root 4096 Aug 29 10:40 pkgconfig

10. 编译安装KAELz4加速库。

  a. 编译安装。
    1 sh build.sh lz4

    KAELz4加速库安装在“/usr/local/kaelz4”。

  b. 查看是否安装成功。
    1 ll /usr/local/kaelz4/lib/

    回显信息如下所示，表示安装成功。 1 2 3 4 5 6 7 8 9 -rwxr-xr-x 1 root root 208716 Oct 24 14:26 libkaelz4.a lrwxrwxrwx 1 root root 40 Oct 24 14:26 libkaelz4.so -> /usr/local/kaelz4/lib/libkaelz4.so.1.0.0 lrwxrwxrwx 1 root root 40 Oct 24 14:26 libkaelz4.so.0 -> /usr/local/kaelz4/lib/libkaelz4.so.1.0.0 -rwxr-xr-x 1 root root 145296 Oct 24 14:26 libkaelz4.so.1.0.0 -rw-r--r-- 1 root root 318592 Oct 24 14:27 liblz4.a lrwxrwxrwx 1 root root 15 Oct 24 14:27 liblz4.so -> liblz4.so.1.9.4 lrwxrwxrwx 1 root root 15 Oct 24 14:27 liblz4.so.1 -> liblz4.so.1.9.4 -rwxr-xr-x 1 root root 276320 Oct 24 14:27 liblz4.so.1.9.4 drwxr-xr-x 2 root root 4096 Oct 24 14:27 pkgconfig


#### 安装后检查

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

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

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

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

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

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

  如果有如下返回信息，说明KAEZlib加速库安装成功。同样的，用户的进程也可以通过ldd命令查看是否使用libwd库。

  1 2 3 4 5 6 7 linux-vdso.so.1 (0x0000ffffa631d000) libc.so.6 => /usr/lib64/libc.so.6 (0x0000ffffa6110000) libkaezip.so => /usr/local/kaezip/lib/libkaezip.so (0x0000ffffa60df000) libwd.so.2 => /usr/local/lib/libwd.so.2 (0x0000ffffa607e000) libwd_comp.so.2 => /usr/local/lib/libwd_comp.so.2 (0x0000ffffa605d000) /lib/ld-linux-aarch64.so.1 (0x0000ffffa62e0000) libnuma.so.1 => /usr/lib64/libnuma.so.1 (0x0000ffffa6038000)

3. 查看KAEZstd库加速引擎是否生效。通过ldd命令查看KAEZstd加速库是否链接到libwd库。
  1 ldd /usr/local/kaezstd/lib/libkaezstd.so

  如果有如下返回信息，说明KAEZstd加速库安装成功。 1 2 3 4 5 6 linux-vdso.so.1 (0x0000ffff89774000) libwd.so.2 => /usr/local/lib/libwd.so.2 (0x0000ffff896b5000) libwd_comp.so.2 => /usr/local/lib/libwd_comp.so.2 (0x0000ffff89684000) libc.so.6 => /usr/lib64/libc.so.6 (0x0000ffff894d5000) /lib/ld-linux-aarch64.so.1 (0x0000ffff89737000) libnuma.so.1 => /usr/lib64/libnuma.so.1 (0x0000ffff894b0000)

4. 查看KAELz4库加速引擎是否生效。通过ldd命令查看KAELz4加速库是否链接到libwd库。
  1 ldd /usr/local/kaelz4/lib/libkaelz4.so

  如果有如下返回信息，说明KAELz4加速库安装成功。 1 2 3 4 5 6 linux-vdso.so.1 (0x0000ffff84add000) libwd.so.2 => /usr/local/lib/libwd.so.2 (0x0000ffff84a0e000) libwd_comp.so.2 => /usr/local/lib/libwd_comp.so.2 (0x0000ffff849dd000) libc.so.6 => /usr/lib64/libc.so.6 (0x0000ffff8482e000) /lib/ld-linux-aarch64.so.1 (0x0000ffff84aa0000) libnuma.so.1 => /usr/lib64/libnuma.so.1 (0x0000ffff84809000)
