这一期和大家来分享一下,如何打造属于自己的openwrt系统固件,其实编译真的很简单,只需要按照我的方法来操作,保证你也可以成功编译。) v1 m, h9 q- k4 r4 E8 F4 e9 h
* g$ Y% `- e; I% | j9 r" b4 p* P" {# A# T" C; G9 Y0 a
开始前我们先来解决一些网友的疑问?为什么网上那么多系统,我们还要自己编译呢?其中有二点原因:. y! L3 D( E; G& h
9 [) W+ z$ L7 R, m
第一点:从安全上考虑,毕竟我们的网络数据,都是要通过openwrt系统,要是有人动手脚,在系统里放了后门,那么我们的隐私就没有保障了。2 u6 C8 ~' }, c5 O5 d; A9 [
% H# r4 i7 m( S' Z! q第二点:从稳定性上考虑,因为别人分享的固件,是用来适配他自己的设备,就算你的设备和他的型号一样,不同批次的设备,硬件都很有可能不一样,特别是像外贸电视盒子,这种问题很常见。我们使用opengwrt,就是为了实现一些想要的功能,自己编译,能很好的使插件和系统更好的兼容,同时想要什么功能就集成什么插件,不过度的集成插件,确保系统的稳定。
9 x- g- k& _+ T' h, i) V
5 B2 W' j4 Q( A( F& q4 V+ g 大家来看看,这是我自己编译的固件,在x96 max+的电视盒上运行,面对高温的天气,到目前已经运行2个多月了,从来没断过网,非常的稳定。接下来手把手教大家怎么编译openwrt系统,时间有点长,大家耐心看完,你也一定能编译出属于自己的系统。
' q0 g9 t9 R, `
) N, Z0 c) d" V% |5 R) v9 D - ~8 z+ ]" d$ K# M+ W9 Y2 V) d
7 _+ q5 N8 X1 }) J6 w8 |+ r: j编译openwrt系统固件,主要分为三大步骤:/ z: Z5 h/ O I: W' j- q
# {. v8 H$ M- ^3 y& J% _* c第一步:安装虚拟机5 o6 T+ u# y% t* E
第二步:安装ubuntu 22.04系统
7 C- [- A% k! C1 o& O第三步:编译openwrt
" F" z b1 c- o8 ?视频安装教程 5 F) w9 t- k6 @0 o9 M; ^
2 o) e+ M4 U" g4 i
+ [3 }' w* }* y) V
图文安装教程 ( @2 D1 \: l- i" t+ [2 G
$ b$ m: O# N( F2 e( Y
一,准备工具:2 i, \- A3 W1 V+ _, ~* o/ Y# Q, }; q
1 Q5 l8 n, e( b4 s( F& ~
1,虚拟机软件VMware5 z# B+ T7 A3 j0 j, C( x' T& S
2,ubuntu-22.04.2系统
; \0 Z5 E/ \$ z8 D' A; i% I3,SSH登录工具 finalshell
4 P) L$ \( p/ a0 d* U: ]' _# G; h4,科学上网工具(自备)
! C+ Q1 G4 M: ?
& j! Y4 d6 i8 L5 s" p9 @配套工具:点击下载
/ X& m- ^ B6 @0 k$ `1 v; V* L+ b$ T; S' Z- W- W& C( l: t
二,环境搭建:# U/ d9 ~( a( Q7 C8 D/ o
' E. A7 k: p H1,安装好虚拟机,打开软件,点击创建新的虚拟机,选择典型下一步,安装程序光盘映像,点击下一步,这过程比较简单就不多做介绍,注意网卡需要设置成桥接模式。* q! H. R2 D6 k. ~
2,安装ubuntu系sudo apt update -y统,点击新建虚拟机,选择默认进行安装!
+ o' y8 [( F- M# Z, {1 K u$ M! ]$ O" S5 V( f8 H* P
三,编译固件* n1 |! j8 F' n; ^7 k& O5 C, V& e
8 f" N/ L, |! |, |# y% k/ @. b& U2 y
注意:; n0 k. j" g, S
1,不要用 root 用户进行编译
" `) C% ~! [8 ?8 Q& m" J! ^2,国内用户编译前最好准备好梯子0 y8 j- D A. i! [" L
3,默认登陆IP 192.168.1.1 密码 password4 {$ }1 L1 y9 l6 N
—————————————————————————————————————) j0 [2 m+ x1 I8 c. X3 @" [1 X
1,安装编译依赖- ^! {. M- C6 x h8 f% g; x
( y+ S* `) X2 ysudo apt update -y
% B9 D9 B; u1 x1 ]5 G5 o" fsudo apt full-upgrade -y0 h5 ~! i$ T9 |+ x
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
t4 j) p* j& c! j) @9 g0 E, r6 m7 Hbzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \0 j) I. h, S" o% U9 m
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \0 s* N$ N$ \1 [6 b1 h. l# Y) [" H
libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \* U5 f* K& I. ^) [6 o! o( w- M5 m
mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \& g+ f8 U$ C _$ P O# |$ g
libpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \vim wget xmlto xxd zlib1g-dev# J2 ^) J2 H- {* H
" w0 R @0 H1 h/ a% D+ U. m) e
2,下载源代码打开科学上网工具,最好全局!以下源码三选一下载,也可以使用其他团队的源码!/ z$ N" E- z8 \& r7 m2 }5 {
. c5 `0 x$ T3 _! ?6 Bgit clone https://github.com/openwrt/openwrt 官方版本
( y/ S4 g* |, [: rgit clone https://github.com/coolsnowwolf/lede lede版本' A" L4 K* [1 v, m. }; C
git clone -b 22.03 --single-branch https://github.com/Lienol/openwrt lienol版本
0 ~7 w6 L( C9 e% E, I% |/ zcd openwrt 切换到文件目录9 o# J5 E) k* I) G* C, j
0 Q2 ?; E6 p1 P/ Z$ l如需指定openwrt版本,可以使用以下命令
! y. ?4 V2 R7 _, l$ ], M H
1 W' a# a# T o9 r- ugit tag 查看稳定版,回车键拉到最低,按Q结束!) R7 z" m. c) h) A9 y
git checkout v22.03.3 指定版本,红色部分位版本号+ P- f( h+ X$ n" a1 p8 g
3 c$ }8 Y. N* f& ]3,添加插件或主题$ k9 a8 ~6 L& f O; ^
) q3 l' n; e5 `# c
打开openwrt文件夹,找到feeds.conf.default文件打开,添加到最下面!' L k# ]% U0 g1 d
, ^" ~2 d5 H8 y5 @0 t/ @
src-git amlogic https://github.com/ophub/luci-app-amlogic 电视盒子必须添加
0 E6 d' t8 n+ Q$ ?2 f( Bsrc-git alist https://github.com/sbwml/luci-app-alist Alist插件
8 e+ H" a7 n; _src-git passwall_packages https://github.com/xiaorouji/openwrt-passwall.git;packages g% _; m' E' b) y( x
src-git passwall_luci https://github.com/xiaorouji/openwrt-passwall.git;luci
- H" ?8 N2 T; z. ~- T. gsrc-git kenzo https://github.com/kenzok8/openwrt-packages- \) F- H) q. H T3 Z4 y
src-git argonnew https://github.com/jerrykuku/luci-theme-argon.git;main 主题( Z( D$ W0 C$ p& z g6 p# ?! B
- E* [$ F; ^! q4,更新源码+ A, U$ C5 T1 Q" ?$ m& G9 W* n
+ W0 V) z% j; w
./scripts/feeds update -a 更新源码
2 x1 s4 O- f8 T6 B6 F9 O2 Q./scripts/feeds install -a 拷贝源码
6 c+ a0 j/ I' [% N8 d
0 u7 u' g; I4 ?& v5,定制openwrt系统
6 z4 ] [+ Y' e. \
5 q0 z9 }" h# Imake menuconfig 打开openwrt配置面板7 q2 i/ X: Z3 d7 }# A
———————————————————————————————————
& ]/ E; B- ]7 F7 M#必须设置项目(CPU架构,镜像文件格式,); \8 {* V4 B, v
; K2 z( B4 S( u+ K: \- J
Target System -> QEMU ARM Virtual Machine (注意:这是电视盒子 x96 max+)! _6 N) ?* w# I% U; h3 K
Subtarget -> QEMU ARMv8 Virtual Machine (cortex-a53) % [0 x6 j- x, o6 g+ F, X- T- J$ o
Target Profile -> Default& V Z/ G/ n. f% c: v. o
Target Images -> tar.gz8 r4 e# j5 c O/ O! i g7 z u
2 n" A, T. c% ~6 x. t
CPU架构查询表:点击此处7 b% `" g( D, v$ e8 ~1 e$ y
, E/ N/ p" v! ?! X% V4 s: }# n*** 必选软件包(基础依赖包,仅保证打出的包可以写入EMMC,可以在EMMC上在线升级,不包含具体的应用):- A5 Q) X4 `* K* X: a' z
9 M5 {- U9 q4 w. G" C0 sLanguages -> Perl+ K7 f6 b0 C9 d7 ]: _
-> perl-http-date/ ~( s$ v, x+ g
-> perlbase-file& h2 }# ^. l; T& v+ c1 V9 u0 w& r7 v! i
-> perlbase-getopt2 X4 I1 Q5 w2 y* \3 V3 E
-> perlbase-time4 M! ^5 C6 x5 k; `
-> perlbase-unicode
$ `, [8 q1 q3 p1 [: i ^ -> perlbase-utf8
/ \4 y) V( G4 d, y) T% [8 {% I) s+ W# A# Y U( U0 J9 Y. t
Utilities -> Compression -> bsdtar 或 p7zip(非官方源)、pigz
1 s2 z* D. _! i -> Disc -> blkid、fdisk、lsblk、parted
* `; p7 z4 }& M+ f9 m+ u6 Z -> Filesystem -> attr 、btrfs-progs(Build with zstd support)、chattr、dosfstools、e2fsprogs、f2fs-tools、f2fsck、lsattr、mkf2fs、xfs-fsck、xfs-mkfs/ l* m+ m/ I2 F7 G) B
-> Shells -> bash! H: P- I7 @' r5 H2 x1 U
-> gawk、getopt、losetup、tar、uuidgen6 v7 O) N/ f2 C! E4 L: B
- l2 _0 T' X8 k5 g% g+ ~0 v+ ^
*** Wifi基础包,打出的包可支持博通SDIO无线模块,Firmware不用选,因为打包源码中已经包含了来自Armbian的firmware,会自动覆盖openwrt rootfs中已有的firmware M8 X5 P) K! b+ w5 o2 b
" [9 K2 |0 Q# r7 h( x9 Z5 {" IKernel modules -> Wireless Drivers -> kmod-brcmfmac(SDIO)7 s* o" M4 v6 s! \; y
-> kmod-brcmutil
6 x" ]8 }) x+ ~ -> kmod-cfg80211
0 w% C/ _- G0 h: }1 A -> kmod-mac80211
* S- ]( g5 ^6 I" I+ U -> USB Support -> kmod-usb-net-asix
/ }8 q& W' F. N; W `1 K6 p+ G/ P1 ? -> kmod-usb-net-asix-ax88179
. d. A: {0 J; K+ p! L& u$ A4 c -> kmod-usb2
, d( r- V& D1 A9 H p2 K -> kmod-usb3
- x! Q% W0 |) j3 Q% ~红色为选填,如果你需要!USB3.0转千兆网卡(型号:亚信asix-ax88179)则必选!
1 t" D8 u( L6 t* h; Q% X1 t( r V; |6 W
Network -> WirelessAPD -> hostapd-common1 u4 g. v; T3 \9 {
-> wpa-cli
! W3 \! D) J! x/ r- S1 }( q -> wpad-basic. E: a6 U$ Z- c- O/ u
-> iw, T0 }+ ?! X; V& I
/ u, q- x2 w2 u( _
*** 插件和主题,语言设置选项,根据需求设置,为了减少编译失败的概率,除了必要的晶晨插件,其他都不要安装,主题也是。可以编译成功后单独编译插件在安装。- [' a4 W6 H, p1 s3 W& Z4 U2 a# [
- R Q6 A; s8 e" T+ D$ \
$ x! i' A- n) w; z( _: ]! M; ], ^LUCI -> 2.Modules -> Translations -> Chinese simplified 简体中文 自选!/ J7 A* C& a' s0 Q& s* l
-> 3.Applications -> luci-app-amlogic 晶晨插件,电视盒子必选!/ r, I& I; k1 @8 w. }7 R
-> 4. Themes 尽量不要安装,不然容易后台面板进不去!
$ ^+ W/ s7 c; a* X' D' J0 [4 R7 r1 k) S
######如果需要重新配置##########2 G" d; q. ]3 J5 ]7 c# @- g: Q
& J" N# c, x1 a) [* r& m6 }' k方法:使用命令- S* C! V1 S/ V: W
6 L( y& f2 f$ ]0 u. }4 irm -rf ./tmp && rm -rf .config
8 q y9 j; i& V; l8 F& g5 vmake menuconfig
6 U$ ~' }0 V5 V9 z6 D+ j$ Vmake V=s -j$(nproc)
8 B' w4 l& ^6 ?" @9 s6 a* W! }
6,下载 dl 库,编译固件 (-j 后面是线程数)
0 X+ c1 J$ Q8 m; W( m9 l! B! A9 _9 I$ s4 R8 k l
make -j8 download V=s 下载dl库,V=s 显示任务详细情况1 n/ n; V! f# N" c% ^
make V=s -j4 4代表线程,根据个人实际情况调整
( |9 z" g5 R% W1 b- i3 P# o/ n% [% l
如果编译失败,可以执行以下命令:5 G4 M* X) D2 u
4 m. a6 v% @3 [) j3 C; n
make clean 删除编译目录/bin和/build_dir目录中的文件
1 ?% N# E+ M" Y l: X6 @make dirclean 除了删除编译目录之外还删除编译工具目录,删除/bin和/build_dir目录的中的文件(make clean)以及/staging_dir、/toolchain、/tmp和/logs中的文件,一般在更换CPU架构的情况下才操作。
$ J: K: ]) D- X
+ V9 K$ Y, p* w, m7,下载编译压缩包: i' b4 C6 {$ L2 J: @+ n
' ?3 k- B6 N. u4 L6 e# `编译完成后输出路径:home/用户名/openwrt/bin/targets,下载到本地电脑,需要通过SSH远程登录进行下载。ubuntu默认是没开通SSH登录,所以我们需要进行开通。
) z# m) \ w& M
6 F( L* Q" K# G, f1 S& V8 v1 z( d/ p开通SSH登录方法:
) `$ B1 B% H' ?9 I9 M8 D5 f7 M: K2 D! a" r$ w
1,必须切换成为root用户/ z1 Z2 ?* g# [, P3 D; L% ^4 _
sudo -i
9 _& o* `- N L }! W2,先更新软件列表和更新软件
4 T% @& E! U% y0 z1 A& ]1 Fsudo apt-get update' J8 K6 N& [" e: a' O
3,先更新软件列表和更新软件
+ H+ p. R% d* m( A2 ^sudo apt-get upgrade$ v9 @& v4 y1 @: z
4,安装ssh
1 K8 ~5 P4 q* z' o. l" v$ L3 m4 I, Mapt-get install ssh
1 I5 G2 j5 D* x, J7 v5,启动ssh服务, {# O, u/ C6 \2 U8 @; C
sudo /etc/init.d/ssh start
+ x. p5 N% |6 u- u6,检查是否有ssh环境
- O, w$ U; _- Cps -e | grep ssh
/ s i/ @+ \2 [1 X7 P0 M& P
! R' `3 Z. N r% A3 u2 p+ uubuntu开通root登录SSH权限
! x0 C$ w" U+ i6 u( Y7 R1 |
1 K, x6 F, v) J' Y+ g1, 使用普通用户登录后切换root
( L- b7 J' \4 j$ ?$ d3 F* Csudo -i7 L! Y2 Z2 T5 T: r8 z
2,创建root管理员密码
/ ]! d, O" M& t4 i" n1 opasswd root- e0 ?; T$ j- T1 v" y1 H7 u
3,开启root登录
3 U( \$ _7 f: ~+ Xsudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config
* T1 V. L6 S. c8 D9 M4,开启密码验证& g* e- X0 _3 T5 q
sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config
1 S) @: N2 J! y3 e- R- q5,重启ssh服务
; q& B6 h8 K0 D4 z" I7 Vservice sshd restart
* s! J* p$ m5 ?4 J6,检查是否有ssh环境0 W/ S) L. t C, C
ps -e | grep ssh2 Y1 ^$ e2 C& b; A& e; }& A: b( @5 G
5 J) A8 j9 x, ]# Q9 i3 X0 F( J* t. C
( i! ` X4 F4 x8 `& `2 B6 f/ T" \( w( y5 l$ U
3 r/ G6 a& S) c7 V: {# D
& k+ p3 ~' y4 p/ b; x. C" M2 g. E2 Q" D
从零开始:自己编译OpenWrt系统!一个视频就够了!简单易懂,毫无保留,VMware虚拟机安装,Ubuntu系统配置、openwrt源码下载,配置!保姆级教程!(电视盒子X96 Max+编译固件) (syjn.blogspot.com)
' q# J: {" \5 X' F
! S3 p1 d7 x. a/ U |