驱动自动加载配置

使用场景

当用户需要配置内核通用驱动的自动加载或第三方驱动的自动加载时,可参见此章节修改相关配置文件。

前提条件

一台带网络端口且操作系统为Ubuntu 22.04的x86架构的Linux服务器。

操作步骤

  1. 登录Linux服务器。
  2. 执行如下命令,切换至root用户。

    su - root

  3. 使用WinSCP工具或其他工具,将下载软件包获取的驱动包“Ascend-hdk-310b-npu-driver-soc_<version>_linux-aarch64.run”(若有软实时OS需求,请使用带-rt参数的驱动包Ascend-hdk-310b-npu-driver-soc_<version>_linux-rt-aarch64.run)上传至Linux系统root用户属组目录下,例如“/opt”,详细操作请参见使用WinSCP传输文件
  4. 执行如下命令,进入“opt”目录。

    cd /opt

  5. 将驱动包解压至“opt”的子目录“repack”下。

    bash Ascend-hdk-310b-npu-driver-soc_<version>_linux-aarch64.run --noexec --extract=./repack

    若有软实时OS需求,该命令为bash Ascend-hdk-310b-npu-driver-soc_<version>_linux-rt-aarch64.run --noexec --extract=./repack

  6. 执行如下命令进入解压目录。

    cd repack

  7. 执行如下命令,解压modules.tar.gz。

    tar -zxvf modules.tar.gz

  8. 查看驱动包中是否包含通用驱动。

    示例:执行以下命令,查看驱动包中是否包含通用驱动rfkill.ko。

    find ./ -name rfkill.ko

    若有以下回显,则表示有通用驱动rfkill.ko。

    ./5.10.0+/kernel/net/rfkill/rfkill.ko

    若驱动包中包含该通用驱动,请参见9进行配置。

    若驱动包中不包含该通用驱动,请参见10进行配置。

  9. 若驱动包中包含通用驱动,新增自动加载配置,步骤如下。

    1. 执行如下命令,进入“scripts”目录。

      cd scripts

    2. 执行如下命令,打开11-atlas.conf配置文件。

      vim 11-atlas.conf

    3. 新增需要自动加载的驱动名。

      示例:新增自动加载驱动rfkill.ko。

      rfkill
    4. 按“Esc”键,再执行如下命令,保存修改并按“Enter”键退出。

      :wq!

    5. 将修改后文件11-atlas.conf拷贝至重构驱动包中的重打包目录“scripts”下,再执行重打包流程。详细操作请参见重构驱动包

  10. 若驱动包中不包含通用驱动,用户需新增驱动,步骤如下。

    1. 执行如下命令,进入“scripts”目录。

      cd scripts

    2. 修改filelist.csv文件,使驱动升级有效。
      1. 执行以下命令,打开filelist.csv配置文件。

        vim filelist.csv

      2. 修改filelist.csv配置文件,新增驱动文件配置。
        示例:添加如下内容,增加myhello.ko的配置。
        ko,copy,myhello.ko,driver/myhello.ko,TRUE,440,root:root,all,NA,all,NA,FALSE,NA,driver,NA
        • 加粗字体440为新增驱动文件的权限,用户可根据自身需要进行修改。
        • 驱动文件myhello.ko的生成方式请参见编译并生效新增用户驱动
      3. 按“Esc”键,再执行如下命令,保存修改并按“Enter”键退出。

        :wq!

    3. 修改minirc_sys_init_ext.sh脚本,使驱动自动加载。
      1. 执行以下命令,打开minirc_sys_init_ext.sh配置文件。

        vim minirc_sys_init_ext.sh

      2. 在load_device_modules()函数中新增需要自动加载的驱动配置信息。
        示例:新增如下加粗字体内容,配置myhello.ko驱动文件的自动加载。
        load_device_modules()
        {
            echo "load device ext modules"
            ko_path="${targetdir}"/driver       
            ko_check ${ko_path}/myhello.ko
            echo "finish load device ext modules"
        }
      3. 按“Esc”键,再执行如下命令,保存修改并按“Enter”键退出。

        :wq!

    4. 将修改后的filelist.csv与minirc_sys_init_ext.sh拷贝至重构驱动包中重打包目录“scripts”下。
    5. 10.b.ii中生成的myhello.ko拷贝至重构驱动包中重打包目录“drivers”下。
    6. 再执行重打包流程,详细操作请参见重构驱动包

生效驱动文件

  1. 升级驱动,具体请参见升级当前区
  2. 查看驱动模块是否加载成功。

    • 若驱动包中包含通用驱动,执行如下命令。

      lsmod |grep rfkill

      出现以下类似回显表示加载成功。

      rfkill                 45056  1
    • 若驱动包中不包含通用驱动,执行如下命令。

      lsmod |grep myhello

      出现以下类似回显表示加载成功。
      myhello                16384  0