安装KSL

本文提供RPM包安装KSL的方法,请在安装后对KSL进行验证。

安装步骤

  1. 可选:为阻止缓冲区溢出攻击,建议在安装KSL前开启使用ASLR(Address Space Layout Randomization)。

    ASLR技术通过对堆、栈、共享库映射等线性区布局的随机化,增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置。该技术可作用于堆、栈、内存映射区(mmap基址、shared libraries、vdso页)。

    echo 2 >/proc/sys/kernel/randomize_va_space

  2. 按照获取软件包获取到KSL软件包,解压后得到二进制RPM包。
  3. 使用root用户安装KSL。

    1
    rpm -ivh boostkit-ksl-xxxx.aarch64.rpm
    

    安装结束后,会自动在环境变量LD_LIBRARY_PATH中添加lib文件夹所在目录即“/usr/local/ksl/lib”

    上述命令中涉及的xxxx代表版本号。

安装后验证

  1. 执行source命令或重新登录终端使环境变量生效。

    1
    source /etc/profile
    

  2. 查看环境变量LD_LIBRARY_PATH是否包含KSL的安装路径“/usr/local/ksl/lib”

    1
    env | grep LD_LIBRARY_PATH
    

    回显结果包含安装路径,说明安装成功,如下所示。

    1
    LD_LIBRARY_PATH=/usr/local/ksl/lib:
    

    安装成功后在安装路径(默认路径是“/usr/local/ksl”)下生成相应文件,其中,“include”文件夹包含子库的头文件,“lib”文件夹包含了系统库的动态库文件,“bin”文件夹包含了KSL_ASN1命令行编译工具。

  3. 使用时,请在GCC编译选项中添加动态库所在路径,链接需要使用的动态库文件,编译后用ldd命令检查程序依赖库是否准确链接。

    AVX2KI、KQMalloc、HTL、KSL_ASN1、KHSEL、kpglibc子库支持组合使用,组合使用时需要将每个子库单独使能。

    • 若需要使用AVX2KI,请在编译时添加:
      • 当前服务器自适配版本:-I /usr/local/ksl/include -L /usr/local/ksl/lib -lavx2ki
      • NEON指令实现版本:-I /usr/local/ksl/include -L /usr/local/ksl/lib -lavx2neon
      • 256长度SVE指令实现版本:-I /usr/local/ksl/include -L /usr/local/ksl/lib -lavx2sve
      • 512长度SVE指令实现版本:-I /usr/local/ksl/include -L /usr/local/ksl/lib -lavx2sve512
    • 若需要使用KQMalloc请在编译时添加:-I /usr/local/ksl/include -L /usr/local/ksl/lib -lkqmalloc

      KQMalloc库如需在openEuler 20.03上使用,应用层需加上编译选项-ldl

    • 若需要使用HTL请在编译时添加:-I /usr/local/ksl/include -L /usr/local/ksl/lib -lhtl
    • 若需要使用KSL_ASN1请在编译时添加:-I /usr/local/ksl/include -L /usr/local/ksl/lib -lhiasn1

      KSL_ASN1编译工具hiasn1cli,位于“/usr/local/ksl/bin”下。用户可以使用它来解析ASN.1脚本,并将ASN.1脚本转换为C语言代码的中间文件(包含多个源文件和头文件)。具体使用方法请参见编译工具使用

    • 若需要使用kpglibc请在编译时添加:-I /usr/local/ksl/include -L /usr/local/ksl/lib -lkpglibc