# base_image_build_scripts **Repository Path**: zzuos/base_image_build_scripts ## Basic Information - **Project Name**: base_image_build_scripts - **Description**: 创建base_image.img的脚本 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-20 - **Last Updated**: 2025-12-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # build_base_image_scripts 介绍与使用 --- #### 1. 分支介绍 此分支在 `ubuntu22.04` 最小镜像(只有20MB+)的基础上通过 `apt install` 命令安装一些必要的包,生成对应的 `base_image.img`。 #### 2. 文件结构 ````bash . ├── build.sh # 构建脚本 ├── README.md └── scripts ├── in_chroot │ ├── baseLinuxSoft-download.sh │ ├── clean-rootfs.sh │ ├── cvai-download.sh │ ├── gstreamer-download.sh │ ├── customSoft-download.sh │ └── ros2-download.sh └── out_chroot ├── external-files-downloader.sh └── rootfs-image-manager.sh ```` 关键文件说明: - `build.sh`:构建脚本,**必须以管理员身份运行** - `baseLinuxSoft-download.sh`:安装基本linux软件的脚本,包含的包有: ```bash [基础系统工具]:sudo、systemd、network-manager、unzip、tar、zip、ifupdown、netplan.io、bash-completion、net-tools、iproute2、openssh-server [常用工具与开发环境]:wget、curl、rsync、man-db、vim、nano、git、build-essential、python3、python3-pip、software-properties-common。 [网络与系统诊断工具]:dnsutils、traceroute、tcpdump、iperf3、htop、strace、lsof、nmap、ethtool、isc-dhcp-client、iputils-ping [视频相关工具]:v4l-utils ``` - `cvai-download.sh`:安装智能安全预警系统需要的包,包含的包有: ```bash [nvr-manager 相关依赖]:ntpdate、nginx、x264、x265 ``` - `gstreamer-download.sh`:安装`gstreamer`,包含的包有: ```bash [gstreamer 相关组件]:cmake、meson、ninja-build、pkg-config、libglib2.0-dev,libgstreamer1.0-dev、libgstreamer-plugins-base1.0-dev;gstreamer1.0-tools、gstreamer1.0-plugins-base、gstreamer1.0-plugins-good、gstreamer1.0-plugins-bad、gstreamer1.0-plugins-ugly;python3-gi、python3-gi-cairo、gir1.2-gstreamer-1.0、gir1.2-glib-2.0 ``` - `ros2-download.sh`:安装`ros2`,包含的包有: ```bash [ros2相关]:ros-humble-desktop、python3-argcomplete ``` - `customSoft-download.sh`:自己需要安装的软件包,在这里面写`apt install`命令进行安装。 #### 3. `IMAGE_SIZE`大小说明 `/scripts/out_chroot/rootfs-image-manager.sh` 中 `IMAGE_SIZE` 变量用于控制构建出的镜像大小(单位MB),如果镜像大小不够,则安装linux软件时会失败,所以要提前预留足够大小的镜像。 下列是经测试后推荐的大小: - `baseLinuxSoft+cvai+gstreamer`:设置为 `5120`。 - `baseLinuxSoft+cvai+gstreamer+ros2`: 设置为 `8192`。 - `baseLinuxSoft+cvai+gstreamer+ros2+visual`:设置为 `12288`。 #### 4. 使用教程 - 搭建环境 搭建一个 `vmware` 虚拟机,操作系统为 `ubuntu 22.04.5`。**(在本地电脑上搭建,不要使用云服务器等等,否则脚本可能无法正确执行)**。 - `clone`此分支到本地: ```shell git clone https://gitee.com/zzuos/base_image_build_scripts.git ``` - 进入 `image-build-scripts.git`: ```shell cd image-build-scripts.git ``` - 修改`build.sh`,定制你自己的软件包: - 要安装的包脚本中已经提供: 比如你需要安装`ros2`,而`ros2`安装脚本在`scripts/in_chroot`中已经提供(就是`ros2-download.sh`),则直接在`build.sh`的第`71`行添加`source /in_chroot/ros2-download.sh`这行代码即可,就会自动安装对应的包到`base_image.img`中 - 要安装的包脚本中未提供: 如果不是为了某个特性而新增的包,直接在`scripts/in_chroot/customSoft-download.sh`中写`apt install`命令安装即可。如果是为了支持某个特性而安装的包,在`scripts/in_chroot/`仿写脚本,并且添加到`build.sh`第`71`行`source`引用即可。 - 修改`base_image.img`大小 `scripts/out_chroot/rootfs-image-manager.sh`中`IMAGE_SIZE`变量用于控制镜像大小,根据自己要安装的包的多少可以进行动态调整。 - 执行`build.sh`(**必须使用管理员权限执行**): ```shell sudo ./build.sh ``` - 等待执行结束,镜像输出在 `build.sh` 下的 `IMAGE_PATH` 所示位置,镜像名为 `base_image_时间信息.img`. #### 5. 注意事项 - 脚本构建过程中耐心等待,**控制台不输出东西是正常的而不是卡死(因为把输出信息隐藏了)**, **不要随意`ctrl+c`停止** 。 - 构建过程中需要连接实验室内网,不然一些外部文件无法拉取。