说明:生成固件必须使用64位操作系统,或者一个能运行64位操作系统的虚拟机
环境:
操作系统:ubuntu:18.04
镜像版本:openwrt-21.02.0
我的设备:Newifi-Mini(Lenovo Y1)
操作:
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