这一期和大家来分享一下,如何打造属于自己的openwrt系统固件,其实编译真的很简单,只需要按照我的方法来操作,保证你也可以成功编译。
开始前我们先来解决一些网友的疑问?为什么网上那么多系统,我们还要自己编译呢?其中有二点原因:
第一点:从安全上考虑,毕竟我们的网络数据,都是要通过openwrt系统,要是有人动手脚,在系统里放了后门,那么我们的隐私就没有保障了。
第二点:从稳定性上考虑,因为别人分享的固件,是用来适配他自己的设备,就算你的设备和他的型号一样,不同批次的设备,硬件都很有可能不一样,特别是像外贸电视盒子,这种问题很常见。我们使用opengwrt,就是为了实现一些想要的功能,自己编译,能很好的使插件和系统更好的兼容,同时想要什么功能就集成什么插件,不过度的集成插件,确保系统的稳定。
大家来看看,这是我自己编译的固件,在x96 max+的电视盒上运行,面对高温的天气,到目前已经运行2个多月了,从来没断过网,非常的稳定。接下来手把手教大家怎么编译openwrt系统,时间有点长,大家耐心看完,你也一定能编译出属于自己的系统。
编译openwrt系统固件,主要分为三大步骤:
第一步:安装虚拟机
第二步:安装ubuntu 22.04系统
第三步:编译openwrt
一,准备工具:
1,虚拟机软件VMware
2,ubuntu-22.04.2系统
3,SSH登录工具 finalshell
4,科学上网工具(自备)
2,Ubuntu桌面版:https://pan.quark.cn/s/87bf9ab9500c
3,SSH上传下载工具:https://pan.quark.cn/s/0f918ec93b4a
4,Flippy预编译好的 Arm64 内核:https://pan.quark.cn/s/d30c9c69171d
6,固件分享:https://pan.quark.cn/s/97ecbbaa2c7f
二,环境搭建:
1,安装好虚拟机,打开软件,点击创建新的虚拟机,选择典型下一步,安装程序光盘映像,点击下一步,这过程比较简单就不多做介绍,注意网卡需要设置成桥接模式。
2,安装ubuntu系sudo apt update -y统,点击新建虚拟机,选择默认进行安装!
三,编译固件
注意:
1,不要用 root 用户进行编译
2,国内用户编译前最好准备好梯子
3,默认登陆IP 192.168.1.1 密码 password
—————————————————————————————————————
第三步:编译openwrt
视频安装教程
图文安装教程
一,准备工具:
1,虚拟机软件VMware
2,ubuntu-22.04.2系统
3,SSH登录工具 finalshell
4,科学上网工具(自备)
openwrt编译固件打包配套工具:
1,VMware虚拟机,附带注册码:https://pan.quark.cn/s/2b62c07b951a
1,VMware虚拟机,附带注册码:https://pan.quark.cn/s/2b62c07b951a
2,Ubuntu桌面版:https://pan.quark.cn/s/87bf9ab9500c
3,SSH上传下载工具:https://pan.quark.cn/s/0f918ec93b4a
4,Flippy预编译好的 Arm64 内核:https://pan.quark.cn/s/d30c9c69171d
6,固件分享:https://pan.quark.cn/s/97ecbbaa2c7f
🔥技术交流
电报实用技能交流群:https://t.me/shiyongjineng
二,环境搭建:
1,安装好虚拟机,打开软件,点击创建新的虚拟机,选择典型下一步,安装程序光盘映像,点击下一步,这过程比较简单就不多做介绍,注意网卡需要设置成桥接模式。
2,安装ubuntu系sudo apt update -y统,点击新建虚拟机,选择默认进行安装!
三,编译固件
注意:
1,不要用 root 用户进行编译
2,国内用户编译前最好准备好梯子
3,默认登陆IP 192.168.1.1 密码 password
—————————————————————————————————————
1,安装编译依赖
sudo apt update -y
sudo apt full-upgrade -y
sudo apt update -y
sudo apt full-upgrade -y
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \
libpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \vim wget xmlto xxd zlib1g-dev
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \
libpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \vim wget xmlto xxd zlib1g-dev
2,下载源代码
打开科学上网工具,最好全局!以下源码三选一下载,也可以使用其他团队的源码!
git clone https://github.com/openwrt/openwrt 官方版本
git clone https://github.com/coolsnowwolf/lede lede版本
git clone -b 22.03 --single-branch https://github.com/Lienol/openwrt lienol版本
cd openwrt 切换到文件目录
如需指定openwrt版本,可以使用以下命令
git tag 查看稳定版,回车键拉到最低,按Q结束!
git checkout v22.03.3 指定版本,红色部分位版本号
3,添加插件或主题
打开openwrt文件夹,找到feeds.conf.default文件打开,添加到最下面!
src-git amlogic https://github.com/ophub/luci-app-amlogic 电视盒子必须添加
src-git alist https://github.com/sbwml/luci-app-alist Alist插件
src-git passwall_packages https://github.com/xiaorouji/openwrt-passwall.git;packages
src-git passwall_luci https://github.com/xiaorouji/openwrt-passwall.git;luci
src-git kenzo https://github.com/kenzok8/openwrt-packages
src-git argonnew https://github.com/jerrykuku/luci-theme-argon.git;main 主题
4,更新源码
./scripts/feeds update -a 更新源码
./scripts/feeds install -a 拷贝源码
5,定制openwrt系统
make menuconfig 打开openwrt配置面板
———————————————————————————————————
#必须设置项目(CPU架构,镜像文件格式,)
Target System -> QEMU ARM Virtual Machine (注意:这是电视盒子 x96 max+)
Subtarget -> QEMU ARMv8 Virtual Machine (cortex-a53)
Target Profile -> Default
Target Images -> tar.gz
CPU架构查询表:点击此处
*** 必选软件包(基础依赖包,仅保证打出的包可以写入EMMC,可以在EMMC上在线升级,不包含具体的应用):
Languages -> Perl
-> perl-http-date
-> perlbase-file
-> perlbase-getopt
-> perlbase-time
-> perlbase-unicode
-> perlbase-utf8
Utilities -> Compression -> bsdtar 或 p7zip(非官方源)、pigz
-> Disc -> blkid、fdisk、lsblk、parted
-> Filesystem -> attr 、btrfs-progs(Build with zstd support)、chattr、dosfstools、e2fsprogs、f2fs-tools、f2fsck、lsattr、mkf2fs、xfs-fsck、xfs-mkfs
-> Shells -> bash
-> gawk、getopt、losetup、tar、uuidgen
*** Wifi基础包,打出的包可支持博通SDIO无线模块,Firmware不用选,因为打包源码中已经包含了来自Armbian的firmware,会自动覆盖openwrt rootfs中已有的firmware
Kernel modules -> Wireless Drivers -> kmod-brcmfmac(SDIO)
-> kmod-brcmutil
-> kmod-cfg80211
-> kmod-mac80211
-> USB Support -> kmod-usb-net-asix
-> kmod-usb-net-asix-ax88179
-> kmod-usb2
-> kmod-usb3
红色为选填,如果你需要!USB3.0转千兆网卡(型号:亚信asix-ax88179)则必选!
Network -> WirelessAPD -> hostapd-common
-> wpa-cli
-> wpad-basic
-> iw
*** 插件和主题,语言设置选项,根据需求设置,为了减少编译失败的概率,除了必要的晶晨插件,其他都不要安装,主题也是。可以编译成功后单独编译插件在安装。
LUCI -> 2.Modules -> Translations -> Chinese simplified 简体中文 自选!
-> 3.Applications -> luci-app-amlogic 晶晨插件,电视盒子必选!
-> 4. Themes 尽量不要安装,不然容易后台面板进不去!
######如果需要重新配置##########
方法:使用命令
rm -rf ./tmp && rm -rf .config
make menuconfig
make V=s -j$(nproc)
6,下载 dl 库,编译固件 (-j 后面是线程数)
make -j8 download V=s 下载dl库,V=s 显示任务详细情况
make V=s -j4 4代表线程,根据个人实际情况调整
如果编译失败,可以执行以下命令:
make clean 删除编译目录/bin和/build_dir目录中的文件
make dirclean 除了删除编译目录之外还删除编译工具目录,删除/bin和/build_dir目录的中的文件(make clean)以及/staging_dir、/toolchain、/tmp和/logs中的文件,一般在更换CPU架构的情况下才操作。
7,下载编译压缩包
编译完成后输出路径:home/用户名/openwrt/bin/targets,下载到本地电脑,需要通过SSH远程登录进行下载。ubuntu默认是没开通SSH登录,所以我们需要进行开通。
开通SSH登录方法:
1,必须切换成为root用户
sudo -i
2,先更新软件列表和更新软件
sudo apt-get update
3,先更新软件列表和更新软件
sudo apt-get upgrade
4,安装ssh
apt-get install ssh
5,启动ssh服务
sudo /etc/init.d/ssh start
6,检查是否有ssh环境
ps -e | grep ssh
ubuntu开通root登录SSH权限
1, 使用普通用户登录后切换root
sudo -i
2,创建root管理员密码
passwd root
3,开启root登录
sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config
4,开启密码验证
sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config
5,重启ssh服务
service sshd restart
6,检查是否有ssh环境
ps -e | grep ssh
打开科学上网工具,最好全局!以下源码三选一下载,也可以使用其他团队的源码!
git clone https://github.com/openwrt/openwrt 官方版本
git clone https://github.com/coolsnowwolf/lede lede版本
git clone -b 22.03 --single-branch https://github.com/Lienol/openwrt lienol版本
cd openwrt 切换到文件目录
如需指定openwrt版本,可以使用以下命令
git tag 查看稳定版,回车键拉到最低,按Q结束!
git checkout v22.03.3 指定版本,红色部分位版本号
3,添加插件或主题
打开openwrt文件夹,找到feeds.conf.default文件打开,添加到最下面!
src-git amlogic https://github.com/ophub/luci-app-amlogic 电视盒子必须添加
src-git alist https://github.com/sbwml/luci-app-alist Alist插件
src-git passwall_packages https://github.com/xiaorouji/openwrt-passwall.git;packages
src-git passwall_luci https://github.com/xiaorouji/openwrt-passwall.git;luci
src-git kenzo https://github.com/kenzok8/openwrt-packages
src-git argonnew https://github.com/jerrykuku/luci-theme-argon.git;main 主题
4,更新源码
./scripts/feeds update -a 更新源码
./scripts/feeds install -a 拷贝源码
5,定制openwrt系统
make menuconfig 打开openwrt配置面板
———————————————————————————————————
#必须设置项目(CPU架构,镜像文件格式,)
Target System -> QEMU ARM Virtual Machine (注意:这是电视盒子 x96 max+)
Subtarget -> QEMU ARMv8 Virtual Machine (cortex-a53)
Target Profile -> Default
Target Images -> tar.gz
CPU架构查询表:点击此处
*** 必选软件包(基础依赖包,仅保证打出的包可以写入EMMC,可以在EMMC上在线升级,不包含具体的应用):
Languages -> Perl
-> perl-http-date
-> perlbase-file
-> perlbase-getopt
-> perlbase-time
-> perlbase-unicode
-> perlbase-utf8
Utilities -> Compression -> bsdtar 或 p7zip(非官方源)、pigz
-> Disc -> blkid、fdisk、lsblk、parted
-> Filesystem -> attr 、btrfs-progs(Build with zstd support)、chattr、dosfstools、e2fsprogs、f2fs-tools、f2fsck、lsattr、mkf2fs、xfs-fsck、xfs-mkfs
-> Shells -> bash
-> gawk、getopt、losetup、tar、uuidgen
*** Wifi基础包,打出的包可支持博通SDIO无线模块,Firmware不用选,因为打包源码中已经包含了来自Armbian的firmware,会自动覆盖openwrt rootfs中已有的firmware
Kernel modules -> Wireless Drivers -> kmod-brcmfmac(SDIO)
-> kmod-brcmutil
-> kmod-cfg80211
-> kmod-mac80211
-> USB Support -> kmod-usb-net-asix
-> kmod-usb-net-asix-ax88179
-> kmod-usb2
-> kmod-usb3
红色为选填,如果你需要!USB3.0转千兆网卡(型号:亚信asix-ax88179)则必选!
Network -> WirelessAPD -> hostapd-common
-> wpa-cli
-> wpad-basic
-> iw
*** 插件和主题,语言设置选项,根据需求设置,为了减少编译失败的概率,除了必要的晶晨插件,其他都不要安装,主题也是。可以编译成功后单独编译插件在安装。
LUCI -> 2.Modules -> Translations -> Chinese simplified 简体中文 自选!
-> 3.Applications -> luci-app-amlogic 晶晨插件,电视盒子必选!
-> 4. Themes 尽量不要安装,不然容易后台面板进不去!
######如果需要重新配置##########
方法:使用命令
rm -rf ./tmp && rm -rf .config
make menuconfig
make V=s -j$(nproc)
6,下载 dl 库,编译固件 (-j 后面是线程数)
make -j8 download V=s 下载dl库,V=s 显示任务详细情况
make V=s -j4 4代表线程,根据个人实际情况调整
如果编译失败,可以执行以下命令:
make clean 删除编译目录/bin和/build_dir目录中的文件
make dirclean 除了删除编译目录之外还删除编译工具目录,删除/bin和/build_dir目录的中的文件(make clean)以及/staging_dir、/toolchain、/tmp和/logs中的文件,一般在更换CPU架构的情况下才操作。
7,下载编译压缩包
编译完成后输出路径:home/用户名/openwrt/bin/targets,下载到本地电脑,需要通过SSH远程登录进行下载。ubuntu默认是没开通SSH登录,所以我们需要进行开通。
开通SSH登录方法:
1,必须切换成为root用户
sudo -i
2,先更新软件列表和更新软件
sudo apt-get update
3,先更新软件列表和更新软件
sudo apt-get upgrade
4,安装ssh
apt-get install ssh
5,启动ssh服务
sudo /etc/init.d/ssh start
6,检查是否有ssh环境
ps -e | grep ssh
ubuntu开通root登录SSH权限
1, 使用普通用户登录后切换root
sudo -i
2,创建root管理员密码
passwd root
3,开启root登录
sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config
4,开启密码验证
sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config
5,重启ssh服务
service sshd restart
6,检查是否有ssh环境
ps -e | grep ssh