使用 Image Generator 快速生成 Openwrt 固件

徐涵亮
2023-12-01

说明:生成固件必须使用64位操作系统,或者一个能运行64位操作系统的虚拟机

环境:
操作系统:ubuntu:18.04
镜像版本:openwrt-21.02.0
我的设备:Newifi-Mini(Lenovo Y1)

操作:

  1. 为ubuntu安装生成镜像所需的依赖包
sudo apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc wget unzip python python3 rsync

2.下载一个 预编译 好的镜像文件,他是一个已经编译好的 OpenWrt 编译环境,你要做的只是通过他生成你的(他支持的)设备的固件

wget https://mirrors.ustc.edu.cn/openwrt/releases/21.02.0/targets/ramips/mt7620/openwrt-imagebuilder-21.02.0-ramips-mt7620.Linux-x86_64.tar.xz

3.然后解压镜像文件并且进入该目录:

tar -xf openwrt-imagebuilder-21.02.0-ramips-mt7620.Linux-x86_64.tar.xz
cd openwrt-imagebuilder-21.02.0-ramips-mt7620.Linux-x86_64

4.使用 make image 命令生成一个设备固件
该命令,有三个参数:

PROFILE – 指定要编译的目标镜像的配置,也就是设备型号,要知道都支持哪些型号,可通过 make info 来查看,例如:

make info
    Current Target: "brcm-2.4"
        Default Packages: base-files libgcc ... kmod-switch kmod-diag nvram 
        Available Profiles:

    Broadcom:
        Generic, Broadcom WiFi (default)
        Packages: kmod-brcm-wl wlc nas kmod-wlcompat
    BroadcomMimo:
        Generic, Broadcom WiFi (MIMO)
        Packages: kmod-brcm-wl-mimo wlc nas kmod-wlcompat

等等一系列OpenWRT支持的芯片信息和型号
本例中使用的是 Newifi-Mini(Lenovo Y1),该镜像恰好支持他,并且代号为 lenovo_newifi-y1

因此,稍后再生成固件的时候 PROFILE参数则设置为 lenovo_newifi-y1

PACKAGES – 要嵌入镜像的包文件的列表
这个参数,因为默认生成的固件是没有web控制界面的,所以新手建议至少包含 luci 包和中文支持包 luci-i18n-base-zh-cn 包
这样生成的固件就有了web控制界面方便使用,但是中文需要到系统设置中手动设置才能切换过来。

FILES – 要包含进去的自定义文件的目录
我用他将提前设置好的固件配置文件包含进去,使他生成后就符合我的使用习惯,新手可以跳过。
例如:再镜像根目录下新建一个 files 文件夹,将我提前设置好的配置文件 (etc 文件夹)放进去
FILES=files/
这样,files 文件夹下的所有文件夹和文件就包含进了,生成的固件中!

5.正式开始
生成一个基本的包含web控制界面和中文支持的固件

make image PROFILE=lenovo_newifi-y1 PACKAGES="luci luci-i18n-base-zh-cn luci-app-qos luci-i18n-qos-zh-cn qos-scripts luci-i18n-firewall-zh-cn"

如果需要包含已经配置好的配置文件 还需要再 make image 等参数后面指定参数 FILES=files/
例如:

make image PROFILE=lenovo_newifi-y1 PACKAGES="luci luci-i18n-base-zh-cn luci-app-qos luci-i18n-qos-zh-cn qos-scripts luci-i18n-firewall-zh-cn" FILES=files/

FILES=files/ 中 等于号 后面的路径是 OpenWRT 源码目录中新建一个 files 文件夹,这里对应着 OpenWRT的系统根目录,在这个目录里面放入好的预先修改好的配置文件和目录 例如 OpenWRT 的配置文件目录 etc ,在构建镜像文件时, 本例中的 etc 目录将自动打包进镜像中,覆盖系统根目录中的 etc 文件夹。

参考:
https://openwrt.org/zh/docs/guide-user/additional-software/imagebuilder

 类似资料: