You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04下非root用户是否可将Linux headers包安装到自定义目录

非root用户在Ubuntu 20.04安装Linux headers到自定义目录方案

非root用户完全可以将Linux headers安装到$HOME下的自定义路径,全程不需要root权限,无需配置sudo密码或密钥,完全适配你的Jenkins任务场景。

操作步骤

  • 首先确定需要的内核版本,若要匹配当前运行内核的版本,可通过uname -r命令获取,例如返回结果为5.15.0-78-generic,对应需要下载两个包:通用头文件包linux-headers-5.15.0-78、架构专属头文件包linux-headers-5.15.0-78-generic。
  • 下载对应版本的deb安装包,apt download命令仅做包下载操作,不需要root权限:
    # 创建临时下载目录
    mkdir -p $HOME/linux-headers/build
    cd $HOME/linux-headers/build
    # 替换为实际需要的版本号即可下载指定版本headers
    apt download linux-headers-5.15.0-78 linux-headers-5.15.0-78-generic
    
  • 解压deb包到自定义安装路径,无需使用dpkg(dpkg写入系统目录需要root),直接解压包内数据即可:
    # 定义headers的最终安装路径
    HEADERS_DIR=$HOME/linux-headers/5.15.0-78-generic
    mkdir -p $HEADERS_DIR
    # 依次解压两个deb包的内容到目标路径
    ar x linux-headers-5.15.0-78_*.deb
    tar -xf data.tar.* -C $HEADERS_DIR
    ar x linux-headers-5.15.0-78-generic_*.deb
    tar -xf data.tar.* -C $HEADERS_DIR
    
  • 修正头文件内的默认路径引用:deb包内的Makefile默认指向系统/usr/src、/lib/modules路径,需要替换为你的自定义路径:
    sed -i "s|/usr/src|$HEADERS_DIR/usr/src|g" $HEADERS_DIR/usr/src/linux-headers-*/Makefile
    sed -i "s|/lib/modules|$HEADERS_DIR/lib/modules|g" $HEADERS_DIR/usr/src/linux-headers-*/Makefile
    

驱动编译使用方法

编译驱动时无需将headers放置到系统默认路径,直接通过KERNELDIR参数指定自定义路径即可,示例编译命令:

make -C $HEADERS_DIR/usr/src/linux-headers-$(uname -r) M=$(pwd) modules

编译完成的驱动可直接拷贝到对应内核版本的目标机器加载使用,不需要目标机器安装编译工具或DKMS,符合严格的权限管控要求。

Jenkins任务适配说明

  • 可在任务脚本中增加版本比对逻辑,每次运行先查询Ubuntu源内的最新headers版本,和本地已安装的版本比对,有更新时自动执行下载、解压、路径修正流程
  • 所有操作全程使用普通用户权限即可完成,无需额外配置权限规则

内容的提问来源于stack exchange,提问作者Steve Folly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 12:15:03