这一期和大家来分享一下,如何打造属于自己的openwrt系统固件,其实编译真的很简单,只需要按照我的方法来操作,保证你也可以成功编译。: V$ ^0 w% J$ h& i+ K% b4 G
# o" g! U$ h2 z. I) V3 z) q7 ~0 o0 v6 P8 z& y0 L5 x
开始前我们先来解决一些网友的疑问?为什么网上那么多系统,我们还要自己编译呢?其中有二点原因:8 H; T7 a% h1 O; k+ s: H" S
+ L9 f& ~! D* A, O
第一点:从安全上考虑,毕竟我们的网络数据,都是要通过openwrt系统,要是有人动手脚,在系统里放了后门,那么我们的隐私就没有保障了。% R5 E" O9 q0 a* [
2 k& ]/ m4 F8 _5 c
第二点:从稳定性上考虑,因为别人分享的固件,是用来适配他自己的设备,就算你的设备和他的型号一样,不同批次的设备,硬件都很有可能不一样,特别是像外贸电视盒子,这种问题很常见。我们使用opengwrt,就是为了实现一些想要的功能,自己编译,能很好的使插件和系统更好的兼容,同时想要什么功能就集成什么插件,不过度的集成插件,确保系统的稳定。
3 q: R- F5 Y& t6 P9 ]$ y8 K6 B8 t% M& w1 F1 m* p. t/ H: m3 S
大家来看看,这是我自己编译的固件,在x96 max+的电视盒上运行,面对高温的天气,到目前已经运行2个多月了,从来没断过网,非常的稳定。接下来手把手教大家怎么编译openwrt系统,时间有点长,大家耐心看完,你也一定能编译出属于自己的系统。
( f! q, A; i$ {, c
! p" g" c" B& @! ^( h8 r
# u! @# z# A- p6 {
' G. @3 M, ^& \- ] ?% s( }+ F编译openwrt系统固件,主要分为三大步骤:& X( Z6 p4 T/ i+ A p
& l' m" Y' H! u3 m8 l; J/ G. T9 |3 [
第一步:安装虚拟机
" _; N1 V* n! O$ c第二步:安装ubuntu 22.04系统
! v$ W* Q5 H3 x) T/ D4 w" O& S第三步:编译openwrt& c2 v" E ~& W& }
视频安装教程 2 s5 A, I9 G# b6 s8 F- u, L; A$ k
+ L2 _6 V" x, Q. E3 E * y/ n5 E) c0 h3 r& j/ F
图文安装教程
, m! D% h% S" S9 S
, p! C# o2 l8 @) J" p! V2 S: X一,准备工具:
' ~0 {6 \# f1 \8 B* ~7 T5 h& S4 C6 o: l. m* @1 }; e Y
1,虚拟机软件VMware! q0 w2 ~( K+ ?4 k3 o7 K! n( T% c/ h% U
2,ubuntu-22.04.2系统
/ ^& l1 [' i3 a {3,SSH登录工具 finalshell
* N: E4 Z8 m5 j$ [4,科学上网工具(自备)
9 t0 S: x4 C! j2 l4 ]
* Z- Z# C5 A6 E. [配套工具:点击下载
& y- t s; X% n& ~' ?3 t2 a: k5 q+ |( P1 F5 L5 c/ Y
二,环境搭建:5 b/ o8 a+ l; y; g9 e# U/ t: F/ c# N
3 x5 c# M) h! Z2 m7 c* n9 d1,安装好虚拟机,打开软件,点击创建新的虚拟机,选择典型下一步,安装程序光盘映像,点击下一步,这过程比较简单就不多做介绍,注意网卡需要设置成桥接模式。, ]4 H' u" _1 C3 q6 [
2,安装ubuntu系sudo apt update -y统,点击新建虚拟机,选择默认进行安装!# {, y& b9 Q" p- w0 u
- T c* U: I1 w. b x三,编译固件- e( S+ [, m" n0 f5 a; _, _
% a$ S( s! A ~8 u& D5 h注意:
9 d0 t' T# Z/ \5 @0 l1,不要用 root 用户进行编译
0 d( h- H% v+ i) }+ O2,国内用户编译前最好准备好梯子
3 |& S8 s3 y% m3,默认登陆IP 192.168.1.1 密码 password/ y, v F) m" ~" G( V8 Z
—————————————————————————————————————5 _8 _5 V' k, g
1,安装编译依赖
; X' H. v! u4 n/ n ^0 |; {& N9 {5 U
sudo apt update -y
1 f% t# X; ^0 f: S$ W4 fsudo apt full-upgrade -y/ P! E7 f% {4 W" U9 e! o$ m
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \) a9 Q& s$ P0 q/ ~( \. c8 I3 B2 S6 v
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
! Z5 Y: ^/ ]5 l3 Q+ h! G- k9 Xgit gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \- k. q$ E" ~3 T0 ?. W5 S, x' r: j
libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \: s# A+ T5 L/ V: s3 q, X
mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \% M( C) W2 F0 p. p, N3 r6 ~
libpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \vim wget xmlto xxd zlib1g-dev3 ~8 C) G' G5 b) _ }) ?5 {6 L
^0 E8 n* G. ~& \4 k( p2,下载源代码打开科学上网工具,最好全局!以下源码三选一下载,也可以使用其他团队的源码!% c0 c4 G& ]! G7 n3 p( b$ G
7 M0 J* } Q. _; g1 V8 t( \
git clone https://github.com/openwrt/openwrt 官方版本4 w: E3 k5 V9 d/ D* G. G, i
git clone https://github.com/coolsnowwolf/lede lede版本' r/ l. U( b6 ?" v
git clone -b 22.03 --single-branch https://github.com/Lienol/openwrt lienol版本
% b- R/ q1 Q+ m9 u. ncd openwrt 切换到文件目录! s$ Y) X I) s* G5 M- ^) F* l
' b% Z4 O. i* q1 a
如需指定openwrt版本,可以使用以下命令* ~8 a$ i1 c" R, G
$ z c9 J' K' R( C
git tag 查看稳定版,回车键拉到最低,按Q结束!
/ I3 o- n. Z5 |' H- w3 tgit checkout v22.03.3 指定版本,红色部分位版本号
, ~ \7 L. j4 p- o6 T& k, {1 o6 l1 s1 N6 G8 [* s) S
3,添加插件或主题
# ~/ ^; I. D: ` j1 Q+ W) Y$ P& E: k+ g: b
打开openwrt文件夹,找到feeds.conf.default文件打开,添加到最下面!4 X( U# X# @3 o/ k% x3 b3 Q
' _, d% a, a+ G' t/ z& Esrc-git amlogic https://github.com/ophub/luci-app-amlogic 电视盒子必须添加
2 t. K$ _/ b! A1 t. k* A: \src-git alist https://github.com/sbwml/luci-app-alist Alist插件
& A% Q: c& T; @' k6 {% X+ K; Lsrc-git passwall_packages https://github.com/xiaorouji/openwrt-passwall.git;packages
& O) `) C# K# W" a1 E: jsrc-git passwall_luci https://github.com/xiaorouji/openwrt-passwall.git;luci% _; Q6 F! @9 d* C3 W
src-git kenzo https://github.com/kenzok8/openwrt-packages
0 e4 h6 t: t2 U* c) S: g( O5 p; Vsrc-git argonnew https://github.com/jerrykuku/luci-theme-argon.git;main 主题# b5 g' M7 s& @! p
" m4 ~7 E+ y, Z3 l) X* W, K
4,更新源码2 p0 k0 d" b# G6 X# N% y2 l& s- R
3 e2 `" J# Y' O' t7 Q./scripts/feeds update -a 更新源码
0 C' O$ g" x' W* m/ ], T8 D/ W" ?/ A./scripts/feeds install -a 拷贝源码5 d [8 X3 _, X% [1 {
% N7 k2 w3 R: X4 F/ j5,定制openwrt系统
& \' j& W" ^# W/ o6 u+ |2 R# e, a7 Z, p, ~3 j
make menuconfig 打开openwrt配置面板
- ]1 [6 p: l" B2 w9 m4 ]2 G———————————————————————————————————
, {1 E: P0 G- g3 R#必须设置项目(CPU架构,镜像文件格式,)# A* z# f- y3 J2 d$ V0 {; B
& I. a9 @5 E. ~# \/ mTarget System -> QEMU ARM Virtual Machine (注意:这是电视盒子 x96 max+)% H. h: L& Q9 [8 ]1 h' I4 q
Subtarget -> QEMU ARMv8 Virtual Machine (cortex-a53)
5 K( {: `8 w1 n/ i4 }/ ]$ T2 i* r3 d+ n2 OTarget Profile -> Default* w e2 q% Q/ Q; d6 v0 h+ q
Target Images -> tar.gz
/ O; J V9 e. t5 M( ^
% k8 y! j! `! e$ |7 ?, B3 e$ kCPU架构查询表:点击此处1 F& e! ]* U( w) f q3 I1 Y+ w S
6 T& A3 p/ w+ p2 j
*** 必选软件包(基础依赖包,仅保证打出的包可以写入EMMC,可以在EMMC上在线升级,不包含具体的应用):
. p U1 Q9 f9 [8 p+ @- X- t0 f7 H* p% A9 v3 Y1 ?' `' C
Languages -> Perl
% ^: A/ a+ E) _6 ^( j( V" e/ L0 m: O -> perl-http-date6 s6 n% B+ e# s+ d. Z c
-> perlbase-file9 ?; m" q: D- R
-> perlbase-getopt
. y# b% G G+ J7 d5 h& h5 F -> perlbase-time
[' n) F! C, F% M; s" `9 b -> perlbase-unicode u { I, s5 Z5 A; x
-> perlbase-utf8
: |) ? M2 j! d, h7 a; C2 b' }: [' O) _% C1 S
Utilities -> Compression -> bsdtar 或 p7zip(非官方源)、pigz
" g1 m P8 ^* C% Q -> Disc -> blkid、fdisk、lsblk、parted$ ^9 n( [ M4 _4 n J; F% r
-> Filesystem -> attr 、btrfs-progs(Build with zstd support)、chattr、dosfstools、e2fsprogs、f2fs-tools、f2fsck、lsattr、mkf2fs、xfs-fsck、xfs-mkfs
% _# B. [8 `3 g5 c- j9 z* m -> Shells -> bash
: O J5 ?8 u( a! j -> gawk、getopt、losetup、tar、uuidgen
: _. `7 W" Q- Q+ N; _7 ]
1 V; I$ n! \' C: H*** Wifi基础包,打出的包可支持博通SDIO无线模块,Firmware不用选,因为打包源码中已经包含了来自Armbian的firmware,会自动覆盖openwrt rootfs中已有的firmware
0 C @% k6 [& ?* d# J: B- g* m; [+ D$ T
Kernel modules -> Wireless Drivers -> kmod-brcmfmac(SDIO)
/ z5 w$ @+ h. b5 r. i -> kmod-brcmutil
1 ]" _6 [2 r2 D! F& q: D5 m1 U% N -> kmod-cfg80211
) y+ D$ y( ]2 {0 W9 M6 h6 F -> kmod-mac802118 D8 K3 ^' Q: _" P: C; o5 d
-> USB Support -> kmod-usb-net-asix/ A; |5 U6 T7 V# V
-> kmod-usb-net-asix-ax88179
7 J0 ]/ p9 {( W0 [ -> kmod-usb2
4 l* ^" v0 x8 d1 y* f; ~; F/ X5 H -> kmod-usb3 I4 S, d4 Y. n
红色为选填,如果你需要!USB3.0转千兆网卡(型号:亚信asix-ax88179)则必选!5 N" J; A2 z! M& t
( t9 k3 ]9 C+ Z4 F4 U$ ^
Network -> WirelessAPD -> hostapd-common. T S- _) {" a& d4 _& l" l }
-> wpa-cli
; n0 o5 { o1 b1 H+ J: g -> wpad-basic5 }. t& w. Q5 P
-> iw3 C \2 g5 j& q
$ c/ F8 _4 E- |* r/ J; E' o*** 插件和主题,语言设置选项,根据需求设置,为了减少编译失败的概率,除了必要的晶晨插件,其他都不要安装,主题也是。可以编译成功后单独编译插件在安装。2 p. h+ t6 @3 j1 m% j- z# l
9 H# O+ x/ T% d& T- x2 M2 I7 q* w, g
LUCI -> 2.Modules -> Translations -> Chinese simplified 简体中文 自选!
: r+ X7 |0 m( F7 @. d) g: X -> 3.Applications -> luci-app-amlogic 晶晨插件,电视盒子必选!
: H: ^& S: v0 H2 Q9 t9 C -> 4. Themes 尽量不要安装,不然容易后台面板进不去!
3 b Q, E! V% a& T" _8 E# y* k" l I9 w! Q3 Z
######如果需要重新配置##########7 c4 n5 p( l3 d* ], S+ {1 f+ i8 y0 m
$ e+ ~ y6 o/ w3 B) _3 d方法:使用命令# ^5 m6 Z/ k9 u
, S/ H3 N4 Z4 B# D/ r ?9 Crm -rf ./tmp && rm -rf .config
8 z8 R9 D; @& D0 c* ]make menuconfig
/ z) o6 y1 |* l! ]% y9 zmake V=s -j$(nproc)" j% i" V9 Z5 w& I: g5 Y0 U1 W
! x2 Z( C+ {+ A' n' g+ u* [6,下载 dl 库,编译固件 (-j 后面是线程数)* ^: z$ U6 D8 o0 o
' x# c U) c7 P* x' Z
make -j8 download V=s 下载dl库,V=s 显示任务详细情况 s! _" r1 V. O* _& P) m
make V=s -j4 4代表线程,根据个人实际情况调整
$ e7 G. Y8 A: ]4 p& S }; J6 t2 X l5 J( p: O9 ]% m1 z* E+ H/ Y
如果编译失败,可以执行以下命令:8 h6 [1 u8 L l. B
- V( a- I2 `6 I0 R& j3 _6 |make clean 删除编译目录/bin和/build_dir目录中的文件
3 D" @, k* S4 u( V0 c- `- rmake dirclean 除了删除编译目录之外还删除编译工具目录,删除/bin和/build_dir目录的中的文件(make clean)以及/staging_dir、/toolchain、/tmp和/logs中的文件,一般在更换CPU架构的情况下才操作。# V) k9 y' g5 s( O
+ u# D4 [' h q8 N& Z
7,下载编译压缩包
% B3 W" h1 I* t" O+ O# w5 [- A: B9 _) G0 c: @% i$ D3 N
编译完成后输出路径:home/用户名/openwrt/bin/targets,下载到本地电脑,需要通过SSH远程登录进行下载。ubuntu默认是没开通SSH登录,所以我们需要进行开通。
+ H# Q' J: y1 L/ B$ S
. e H& @6 d$ R: E1 u开通SSH登录方法:
% P; C3 h- X4 p) p" l/ x1 D9 S, F* y2 b$ M: ~8 ` z
1,必须切换成为root用户; h P+ ^! y1 {5 W, o1 z( }
sudo -i
- T/ z. E" J& ^" n3 p2,先更新软件列表和更新软件
& y, W! E$ P3 z7 V* O, W- b" W5 vsudo apt-get update+ _( x% ?& K9 [- k
3,先更新软件列表和更新软件
; ^/ ^. F" B8 Y" h: Wsudo apt-get upgrade2 G/ U: d' a. ]* }- k( y, E3 D3 }
4,安装ssh
/ R9 B) F4 k- m. wapt-get install ssh7 ~5 _, H+ |( ~& R" `
5,启动ssh服务7 j2 k, J; [" [4 [( h& R
sudo /etc/init.d/ssh start
, w, @8 F9 a8 n% r3 w/ O' P. R z6,检查是否有ssh环境8 c; h8 j- G1 t" G. V7 D: t1 s$ D
ps -e | grep ssh
1 C" V8 X8 `. F8 T1 l, p
6 y6 B. i% }* k1 q0 d" R9 ^ubuntu开通root登录SSH权限& {5 m$ q% D) H- d' `/ Y# a
1 }9 @ |* M5 \& w. s
1, 使用普通用户登录后切换root5 U) r$ f; w) \1 @
sudo -i2 @4 r3 b5 I4 ~. D
2,创建root管理员密码+ y7 c4 A4 `& ^& W* a. S
passwd root D- R# O, W6 z+ M% R" s- \
3,开启root登录5 F/ Y0 [1 ~% r9 m3 W3 t
sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config
' z( p4 t& w' R4 ]7 d* S4,开启密码验证
) R5 B# J. B7 ]4 o; Jsudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config
# T8 e. T& o$ l) I$ { v1 n3 S5,重启ssh服务
1 z$ a/ { R3 X$ s, n: Sservice sshd restart/ F' P* |8 I4 Z; \- Y" ^* n# q
6,检查是否有ssh环境. W1 K3 Z& u3 h3 C( a* O9 @* B: M3 q, X
ps -e | grep ssh
+ k* f$ v7 ?1 }8 D' c _
* X( o8 k, p2 Z- `: b, V Q" M( }1 y+ D
+ t" k! ~" V% W, l6 u
4 Y3 l- H& `. b& l
~$ P- H4 C8 U9 d$ j- @
2 ^9 C7 @4 U$ W' g. z V: {; k! }' p2 N' k
从零开始:自己编译OpenWrt系统!一个视频就够了!简单易懂,毫无保留,VMware虚拟机安装,Ubuntu系统配置、openwrt源码下载,配置!保姆级教程!(电视盒子X96 Max+编译固件) (syjn.blogspot.com)* X8 ]. _/ F; H2 ~! e' u# l2 w
Z0 w% p+ y, ]+ Q |