Skip to content

FNOSP/fnmake

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

fnmake

本仓库包含用于构建/打包环境的辅助脚本,旨在通过 chroot 或 docker 环境运行 make 构建流程从而避免直接在宿主上污染环境。

仓库结构(简要)

  • chroot_make.sh — 使用 chroot 环境运行构建流程的脚本。
  • docker_make.sh — 使用 docker 容器运行构建流程的脚本。

注意事项

  • 在运行这些脚本前,请先阅读脚本 --help,确认脚本中的默认参数符合你的环境。
  • 运行 chroot 或 docker 相关脚本可能需要 root 权限,请小心运行并在受信任的环境中执行。

脚本详解

以下为两个脚本的常见用法、可配置项示例与排错建议。请在运行前先打开对应脚本查看 --help(脚本可能有额外参数或环境变量)。

chroot_make.sh

  • 目的:在一个隔离的 chroot 根文件系统内运行 make(或其他构建命令),用于生成构建产物。

  • 可用选项:

    • --pkgs PACKAGE(s):在 chroot 内安装额外包,支持逗号或空格分隔,并可重复指定(默认:build-essential)。
    • --strip:在构建后对生成的 .ko 模块执行 strip(默认:false)。
    • -h, --help:显示帮助并退出。
  • 环境变量:

    • TRIM_OVERLAYFS:overlayfs 根路径,脚本默认使用 /opt/trim_overlayfs, 但会在运行时检查该变量并拒绝使用根路径 /。必须可写并存在或脚本会尝试创建所需目录。
  • 行为要点:

    • 若未通过 -C 指定内核构建目录,脚本会根据宿主内核版本尝试定位 /lib/modules/$(uname -r)/build/usr/src/linux-headers-$(uname -r)
    • 若未指定 M=,脚本会使用当前工作目录作为工程路径。
  • 示例:

    # 使用默认 overlay 路径并运行 make
    ./chroot_make.sh -- make -C /lib/modules/$(uname -r)/build M=$(pwd) modules
    
    # 指定额外包并启用 strip,同时指定根路径
    sudo TRIM_OVERLAYFS=/var/chroot ./chroot_make.sh --pkgs build-essential bc --strip -- make -C /lib/modules/$(uname -r)/build M=$(pwd) CONFIG_NTFS3_FS=m modules

docker_make.sh

  • 目的:在一个隔离的 docker 容器内运行 make(或其他构建命令),用于生成构建产物。

  • 可用选项:

    • --image IMAGE:指定要使用的 Docker 镜像;若不指定,脚本会基于宿主 /etc/os-release 自动选择(例如 debian:<codename>ubuntu:22.04)。
    • --pkgs PACKAGE(s):在容器内安装额外包,支持逗号或空格分隔(默认:build-essential)。
    • --strip:构建完成后在容器内对 .ko 文件执行 strip
    • -h, --help:显示帮助并退出。
  • 行为要点:

    • 若未通过 -C 指定内核构建目录,脚本会尝试定位宿主的内核头目录(/lib/modules/$(uname -r)/build/usr/src/linux-headers-$(uname -r))。
    • 脚本会将宿主的 /usr(只读)、BUILD(只读)和 SPACE(读写)挂载到容器,以便复用宿主的库和头文件。
    • 若本地不存在指定镜像,脚本会尝试 docker pull 并在退出时视情况清理拉取的镜像。
  • 示例:

    # 使用默认镜像并运行 make
    ./docker_make.sh -- make -C /lib/modules/$(uname -r)/build M=$(pwd) modules
    
    # 指定镜像与额外包,并启用 strip,同时指定要使用的 Docker 镜像
    ./docker_make.sh --image ubuntu:22.04 --pkgs build-essential bc --strip -- make -C /lib/modules/$(uname -r)/build M=$(pwd) CONFIG_NTFS3_FS=m modules

许可

本仓库使用仓库根目录下的 LICENSE 文件中所述的许可协议。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages