type
status
slug
summary
tags
category
icon
password
new update day
Property
Oct 22, 2023 01:31 PM
created days
Last edited time
Oct 22, 2023 01:31 PM

一、开篇介绍

因为最近在实验室瞎倒腾翻到了一个工控机,然后心心念了好久,最终还是没忍住拿来做了软路由,在折腾的过程中,遇到了很多的坑。

坑一

其中最大的坑莫过于自己编译属于自己的镜像了。刚开始太年轻没有相关的经验,于是就开始愣头青的交叉编译一把梭,虽然到最后是成功了,但是这个过程还是比较艰辛的,而且编译完成的镜像因为编译环境的问题,出现了与官方镜像不兼容的问题;即无法使用 opkg 包管理器安装官方软件包(大雾、搜索得知是自己工具链的选择有问题、在这里不禁感叹过时教程有点害人啊!!)
所以这个方法现在不太建议大家使用,建议大家使用下文说到的使用 openwrt-imagebuilder 编译自己的系统镜像。

坑二

官方镜像默认编译安装了下面列表里面的功能包与内核模块
敲黑板!! 不知道大家注意到没有,官方的镜像里面是没有编译安装 kmod-e1000e 这个内核模块的,只有 kmod-e1000 这就代表如果你的软路由 使用了千兆网卡 这个时候如果刷入官方固件,那么很有可能,你的 wan 口无法正常工作,只能手动安装 kmod-e1000e 这个内核模块才能够正常工作。
这也是为什么我想自己编译属于自己的固件镜像的原因啦!(因为每次更新固件wan口都无法正常工作,急死人啊~~,而且更新固件的时候,还会把原来下载到软路由上 /root 分区的安装包给清除掉。需要手动 scp 上次安装(还是有点麻烦的)

二、方便、快捷、简单实用的 openwrt 固件镜像构建方法

在陆续踩了一堆坑了以后,后来了解到, openwrt 为每个平台、每一个版本都提供了一个 openwrt-imagebuilder 镜像编译环境(大雾、为什么我原来没有发现这个小可爱啊~~
下面就为大家介绍一下怎么使用 openwrt-imagebuilder 编译,自定义的 x86 平台的固件镜像。

1.系统环境准备

2.下载 openwrt-imagebuilder 工具

3.编译环境准备

3.1编译命令介绍

openwrt-imagebuilder 的编译命令是下面这种格式
共有三个传递的参数:PROFILE PACKAGES FILES、其中
  • PROFILE
    • PROFILE=XXX是指预定义的Profile,对应你的路由型号,可实用 make info 命令查看所有的PROFILE
  • PACKAGES
    • PAKAGES后面罗列出需要添加到固件中的额外的包,不填写的话只包含预定义的需要的最少的包,如果前面以”-“符号开头的表示不不含这个包,比如说:PACKAGES=”kmod-e1000e”
  • FILES
    • 编译的时候按照所给的配置文件直接进行路由器的相关配置,各文件所在目录位置需要和路由器系统配置文件位置相对应,例如 files/etc/config/network -> /etc/config/network

4.开始编译

好了解到编译命令的各个参数的意义后,现在我们就可以开始我们的重头戏了、开始编译、构建自定义的固件镜像!

4.1编译参数介绍

下面是我对我的编译参数的介绍、如果你有自己的特定需求的话,可以去 openwrt 的下载界面packages/里面找到自己所需要的包的名字,然后加入到编译选项里面,进行相关定制
为 Openwrt 添加温度显示功能 (不支持最新19*版本)手动进行 Ubuntu 版本升级