这一期和大家来分享一下,如何打造属于自己的openwrt系统固件,其实编译真的很简单,只需要按照我的方法来操作,保证你也可以成功编译。
6 a, ^' F# S% D/ b) w! o9 t( R T3 w7 k+ Z& G
0 Y3 _) Y" W9 q
开始前我们先来解决一些网友的疑问?为什么网上那么多系统,我们还要自己编译呢?其中有二点原因:
( C2 i- L0 F/ ^) p3 {$ l- ^$ F
% T' d* Q/ o/ w4 a" @4 }. X第一点:从安全上考虑,毕竟我们的网络数据,都是要通过openwrt系统,要是有人动手脚,在系统里放了后门,那么我们的隐私就没有保障了。
% r/ E" u& ~- L) L% H
% d+ l3 j0 K. E* K& J9 M, S第二点:从稳定性上考虑,因为别人分享的固件,是用来适配他自己的设备,就算你的设备和他的型号一样,不同批次的设备,硬件都很有可能不一样,特别是像外贸电视盒子,这种问题很常见。我们使用opengwrt,就是为了实现一些想要的功能,自己编译,能很好的使插件和系统更好的兼容,同时想要什么功能就集成什么插件,不过度的集成插件,确保系统的稳定。& Y! d1 Y5 g3 J8 l5 x I, [& [
# k" f3 D) R* E+ D 大家来看看,这是我自己编译的固件,在x96 max+的电视盒上运行,面对高温的天气,到目前已经运行2个多月了,从来没断过网,非常的稳定。接下来手把手教大家怎么编译openwrt系统,时间有点长,大家耐心看完,你也一定能编译出属于自己的系统。
7 r* ^- {2 {' y0 ]+ n6 @* r) Z; E% \% L4 n% K5 c

P/ c- l# s9 D8 V( y
4 L: L2 n! L. ~; W+ Z编译openwrt系统固件,主要分为三大步骤:
* y s+ E1 ~5 w) q" O& ]) c3 z" f9 ^2 ?# J0 h
第一步:安装虚拟机
& v; k- \ \7 Z! g& v- o第二步:安装ubuntu 22.04系统
7 o- N$ h- }8 y$ }第三步:编译openwrt; w" F7 }7 u$ ]& d! r* D6 O
视频安装教程 6 Q, Y5 p' V+ z3 T* ^8 w0 v
+ t8 Z6 Y+ H) t2 r7 `
1 K6 t0 _: g, @; W图文安装教程
0 W$ X4 [/ W, d# `2 S
% b5 P, I2 U2 {3 n一,准备工具:
2 x% G9 c; u$ ^. N" f6 B3 ?% _ B3 R/ b8 l2 B
1,虚拟机软件VMware
& n4 R, r+ {9 a: a2,ubuntu-22.04.2系统. ^0 v) f; n5 e4 D5 L
3,SSH登录工具 finalshell( W/ m, D" z% g p# K' ^
4,科学上网工具(自备)0 ~3 M9 W$ ^3 r% T& `6 `
$ s9 F( x! b. F0 `) h* C配套工具:点击下载6 P& [1 [+ P1 O
3 G w9 v- m, V. |# r( l0 _二,环境搭建:9 G% M0 i. n l
1 p1 j' @* D8 Z i; N2 V# M1,安装好虚拟机,打开软件,点击创建新的虚拟机,选择典型下一步,安装程序光盘映像,点击下一步,这过程比较简单就不多做介绍,注意网卡需要设置成桥接模式。1 J5 E! n# N# c" a p9 O
2,安装ubuntu系sudo apt update -y统,点击新建虚拟机,选择默认进行安装!
" t9 p) w) j( x2 [5 T$ V7 j$ @1 F- E( L( ]
三,编译固件+ g9 w3 H: B* ?7 V/ i
# H" j' M7 T0 V: }4 J. w注意:
& O: `" } Q6 _. f X1,不要用 root 用户进行编译# z- N: I/ g9 ~" K. w+ Q$ Z
2,国内用户编译前最好准备好梯子
1 y1 V, ~" R- _% A, P% ?1 V1 l3,默认登陆IP 192.168.1.1 密码 password1 n- z- o: e4 ?/ a
—————————————————————————————————————& z; g d* f& l8 \3 z, C8 {, t/ a
1,安装编译依赖) X$ Y8 c: Z r: h& S7 t% Y$ ~
/ ?1 ?, i' P' T/ H5 h v
sudo apt update -y b# }4 C& n$ E, R4 h6 Q
sudo apt full-upgrade -y
/ I: ?% ~- F9 W' I3 s2 L2 _. csudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
6 { e: n5 ?3 N. ~; Bbzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
4 @" ]+ [0 _5 g0 B* N pgit gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \) W9 v! T1 K9 A6 t4 A
libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \9 k7 Y* a; K( P9 y1 e5 G/ R
mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \
7 q# j9 Y* s$ s! X5 x% D* tlibpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \vim wget xmlto xxd zlib1g-dev" ?8 P( Y& F6 \" x5 m$ R, _/ e
9 U ~$ w9 V. E' k$ E2,下载源代码打开科学上网工具,最好全局!以下源码三选一下载,也可以使用其他团队的源码!# f' }* d9 ]+ j! L, g0 s
8 \2 g8 N8 X; q$ o8 _2 Vgit clone https://github.com/openwrt/openwrt 官方版本
- @5 T" o! q O) `git clone https://github.com/coolsnowwolf/lede lede版本
1 [! O4 o |3 z" p* Mgit clone -b 22.03 --single-branch https://github.com/Lienol/openwrt lienol版本7 Q% e8 p2 L' D9 u( Z) L7 D, n
cd openwrt 切换到文件目录
: [5 w7 p2 V5 f7 C; u9 S/ O- e4 i0 k7 J: y# r9 R
如需指定openwrt版本,可以使用以下命令- t. s' \1 A! n
0 X# _5 c2 k( [+ a8 Y/ E G- ^git tag 查看稳定版,回车键拉到最低,按Q结束!
! ^; B$ ^2 P7 b, ^8 h8 G. E4 ?3 Ygit checkout v22.03.3 指定版本,红色部分位版本号
3 C) k' g/ Y9 t/ ?2 e( `( Z( x" d2 U$ A: |
3,添加插件或主题0 U. f" g; v! _4 r' F4 V
3 n' L( H w7 j
打开openwrt文件夹,找到feeds.conf.default文件打开,添加到最下面!$ W7 H' S% {2 F0 A1 C8 W
$ N. r/ M; \% I+ isrc-git amlogic https://github.com/ophub/luci-app-amlogic 电视盒子必须添加9 l* H7 B% Q5 x+ [8 x9 \
src-git alist https://github.com/sbwml/luci-app-alist Alist插件
0 }/ {6 r5 l+ m- ]1 f9 Bsrc-git passwall_packages https://github.com/xiaorouji/openwrt-passwall.git;packages. k& G& d, _1 e
src-git passwall_luci https://github.com/xiaorouji/openwrt-passwall.git;luci
7 m% }7 I, G$ V! Esrc-git kenzo https://github.com/kenzok8/openwrt-packages: r/ p/ |9 j* B! g1 C7 [+ }
src-git argonnew https://github.com/jerrykuku/luci-theme-argon.git;main 主题
I/ K& \7 q* [5 H4 l5 b, |& P
/ \; e1 Q- b( D5 X. y. t' k3 y4 {5 J4,更新源码
$ r1 O) I/ c- l9 _5 E" Y1 O' g% k5 O# b
./scripts/feeds update -a 更新源码
- k/ n& L3 V% m* B, j' s./scripts/feeds install -a 拷贝源码9 v/ E3 E+ X2 e0 W$ X e
6 y4 ~5 y1 H2 v" d; a' J! T5,定制openwrt系统3 u! U; Q' ?: D9 M7 `5 W- d# `
+ `2 S6 D8 ^& \; hmake menuconfig 打开openwrt配置面板: L- O: t: d- c5 p
———————————————————————————————————2 j. G6 e' p( D3 M
#必须设置项目(CPU架构,镜像文件格式,)2 q- [; r9 { ~
+ U& m; Z2 m: Y: K1 M- y/ n4 z x
Target System -> QEMU ARM Virtual Machine (注意:这是电视盒子 x96 max+)+ e) _6 V! I# \
Subtarget -> QEMU ARMv8 Virtual Machine (cortex-a53) 8 E( B. B6 @8 n+ S
Target Profile -> Default2 X9 ^! I5 [" W" i* ~
Target Images -> tar.gz; i. F6 ]1 F+ {& p" l- \( {
2 y4 h( J/ z' C+ t4 F. s
CPU架构查询表:点击此处
" _4 `- u, s0 n) h5 x, e
* z9 G5 A8 ^" r0 ~0 q# r( h6 W*** 必选软件包(基础依赖包,仅保证打出的包可以写入EMMC,可以在EMMC上在线升级,不包含具体的应用):8 v* d) J$ Z0 ?# a
, ^0 K% I1 U& V5 E# \6 M ELanguages -> Perl
3 V% z/ X* |; w9 Z3 g -> perl-http-date
( f5 e, d& M# `7 L; y, ^ -> perlbase-file; R& W/ M+ s* v% K7 C3 O- E
-> perlbase-getopt
4 ?1 l* H! O' {. V' e f1 K -> perlbase-time5 [7 r% B5 |7 V* \8 x; {8 V
-> perlbase-unicode7 a4 G0 ]1 ]! D: V
-> perlbase-utf81 K& O; S! J- Y8 {- u2 b
5 u* [# J, a# w& r9 b# o
Utilities -> Compression -> bsdtar 或 p7zip(非官方源)、pigz
7 q+ `5 T* c& i# v% @) m -> Disc -> blkid、fdisk、lsblk、parted
, c) G3 S/ V* X, k: _ X& ~' c -> Filesystem -> attr 、btrfs-progs(Build with zstd support)、chattr、dosfstools、e2fsprogs、f2fs-tools、f2fsck、lsattr、mkf2fs、xfs-fsck、xfs-mkfs* E R1 L% \& Z# m1 @( P
-> Shells -> bash
. i; R* E1 z3 A ?% i0 N -> gawk、getopt、losetup、tar、uuidgen
/ l% v7 R/ R0 }) y1 c( ]6 h
& {$ Z# J! `9 X*** Wifi基础包,打出的包可支持博通SDIO无线模块,Firmware不用选,因为打包源码中已经包含了来自Armbian的firmware,会自动覆盖openwrt rootfs中已有的firmware: H( W2 N a* _: m$ w
8 j8 r3 f5 E' Q, y( e# {Kernel modules -> Wireless Drivers -> kmod-brcmfmac(SDIO)! L$ l/ L/ Y: F3 R0 ^" w
-> kmod-brcmutil# W& S$ X9 L$ Q7 P8 x
-> kmod-cfg80211( m) f/ i$ h1 h4 }8 N9 w* L; l
-> kmod-mac80211
$ }8 d! L' H) x% d' x -> USB Support -> kmod-usb-net-asix
: L# o2 p7 z3 u% t -> kmod-usb-net-asix-ax88179$ M# d3 C; q3 j6 I1 {: `
-> kmod-usb2* n/ T! q F2 Y) r
-> kmod-usb3) { h( ]$ w, {0 n% y1 i
红色为选填,如果你需要!USB3.0转千兆网卡(型号:亚信asix-ax88179)则必选!1 H" f* Q4 r4 y
! d4 S+ M x& V% v/ c$ K
Network -> WirelessAPD -> hostapd-common
: L; h3 z w2 R( } -> wpa-cli
7 g8 `1 ?. |- @1 S0 m -> wpad-basic9 O! _! V% F8 J
-> iw: o, ~) r$ W: Z. ]! r* L3 B
" e3 q0 T# z# T! L2 Z2 A! x1 ]*** 插件和主题,语言设置选项,根据需求设置,为了减少编译失败的概率,除了必要的晶晨插件,其他都不要安装,主题也是。可以编译成功后单独编译插件在安装。
" N. r; k! v7 C( v" P! G
) w5 u/ n6 a! I* m) r3 p# c8 g& T5 S. Q, v3 t& g
LUCI -> 2.Modules -> Translations -> Chinese simplified 简体中文 自选!! d$ n* j9 r" U& X' I
-> 3.Applications -> luci-app-amlogic 晶晨插件,电视盒子必选!
1 |( O1 c6 m5 E$ K! B4 Z9 { -> 4. Themes 尽量不要安装,不然容易后台面板进不去!
& L" [7 s3 K" f2 \) w$ k b9 m2 ]. Y6 i
######如果需要重新配置##########
( U' L; d( N7 z+ b8 k" X( o( P' i" x( _, Q
方法:使用命令$ S% _( h& k$ f# b. Q* ^8 Q$ d
" O, @2 Q- @+ b1 R* @
rm -rf ./tmp && rm -rf .config% }) {; W. h" M( @* q& d
make menuconfig) m- ~+ {+ h0 @6 O
make V=s -j$(nproc)
" Q. K @ J7 |/ r5 }9 j* b9 z# Q# b: t2 }0 ^: F
6,下载 dl 库,编译固件 (-j 后面是线程数)
% [% r0 E8 O l3 g; h; P: x, \% E; I: G
make -j8 download V=s 下载dl库,V=s 显示任务详细情况! x. d; \- l6 R; U* G
make V=s -j4 4代表线程,根据个人实际情况调整 Y% |% {" r6 n% n
( H2 @) d* Q6 S3 M: s
如果编译失败,可以执行以下命令:6 l; n7 L: b" ^6 h+ R
, {( }6 W. n0 Y9 o/ \make clean 删除编译目录/bin和/build_dir目录中的文件8 ^9 \% u. Y) m
make dirclean 除了删除编译目录之外还删除编译工具目录,删除/bin和/build_dir目录的中的文件(make clean)以及/staging_dir、/toolchain、/tmp和/logs中的文件,一般在更换CPU架构的情况下才操作。0 x7 H+ j* i' G# U7 n
( O! b- w h* y$ R4 ^/ k6 G, Z
7,下载编译压缩包
- f5 S1 e5 u1 j
) d7 d8 V& D* A' b' U编译完成后输出路径:home/用户名/openwrt/bin/targets,下载到本地电脑,需要通过SSH远程登录进行下载。ubuntu默认是没开通SSH登录,所以我们需要进行开通。
6 _( h4 B7 ]. X- K. {$ D% Q/ M- V$ O4 i* f2 I
开通SSH登录方法:' F3 w i2 O$ I7 h+ h& U+ J. y
- N7 G$ R# j6 J) a! M4 A4 F
1,必须切换成为root用户
$ G! [2 ]6 y- k2 W9 o9 I$ `sudo -i4 G" g% e7 b$ N3 U
2,先更新软件列表和更新软件 I4 p9 `8 }6 U, e, I# t" ?
sudo apt-get update5 g: \! N1 X8 M1 w) k
3,先更新软件列表和更新软件7 o! C1 Y' D/ z, ]8 |
sudo apt-get upgrade4 l c# N7 U, X, Y
4,安装ssh
$ l7 z9 M3 W4 ^apt-get install ssh4 J4 c: ]' M! o! j& M
5,启动ssh服务1 W) Y; B3 n3 N+ { i- u: j/ B) U7 o
sudo /etc/init.d/ssh start# c; O7 r4 g' ]( P
6,检查是否有ssh环境
% f( f# B. x; C0 i0 s% T9 C aps -e | grep ssh
+ Y4 J U' M$ T. L: A5 a4 a9 ^+ u4 @
ubuntu开通root登录SSH权限
. G Z; z- p" j% {$ U% ? c7 q) j8 R. {4 I; o" h& n
1, 使用普通用户登录后切换root- ^2 p1 x( w% H/ ~, x, T
sudo -i
. C* n& Q# c" J, Z( q5 Q2,创建root管理员密码
b9 K8 f5 [; l- r% S2 rpasswd root
# q8 r! H" n: G0 {- u3,开启root登录( D8 i9 q, L- i! V; {. `9 q/ O
sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config; g! X+ {$ z+ g" Z3 }! @/ T+ n
4,开启密码验证. @. v2 {2 M( G& [9 B1 I2 h$ g9 i) l* p
sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config* x/ b. u2 Z6 s* T T
5,重启ssh服务4 I9 E# _, r3 O9 J% Q2 o
service sshd restart0 `# K: G- w( X* q
6,检查是否有ssh环境
# M( F& W7 ]) X# C( Y( b7 kps -e | grep ssh6 H5 f/ P3 ^0 |# d$ }
& j4 |; k% v0 h( } x. e
t( \: M- B% R7 g" W0 Q- M, E. E; ?. i$ r% J0 k
5 L8 X$ T8 f) e9 F8 ]- G& u" w! n5 b8 a7 d B$ i
7 X8 q' P& |4 W9 g
9 k! d- Y1 h! W3 U$ d7 {
从零开始:自己编译OpenWrt系统!一个视频就够了!简单易懂,毫无保留,VMware虚拟机安装,Ubuntu系统配置、openwrt源码下载,配置!保姆级教程!(电视盒子X96 Max+编译固件) (syjn.blogspot.com)% C+ z' j1 l/ H7 w" J9 G( I
- ]2 m( J( l( A |