这一期和大家来分享一下,如何打造属于自己的openwrt系统固件,其实编译真的很简单,只需要按照我的方法来操作,保证你也可以成功编译。6 y1 E8 ]- n7 A2 @6 t
8 H/ ?! \: i0 G1 {8 `$ B" p: w% L% {& L$ s& K7 m5 i7 ^7 [
开始前我们先来解决一些网友的疑问?为什么网上那么多系统,我们还要自己编译呢?其中有二点原因:# \% q( Y) C$ {6 g
, I6 g M; E" N9 g8 j
第一点:从安全上考虑,毕竟我们的网络数据,都是要通过openwrt系统,要是有人动手脚,在系统里放了后门,那么我们的隐私就没有保障了。& O# _4 f8 V8 h2 I% H% |0 `
% g2 b/ \' N$ N R3 G" i# R$ A第二点:从稳定性上考虑,因为别人分享的固件,是用来适配他自己的设备,就算你的设备和他的型号一样,不同批次的设备,硬件都很有可能不一样,特别是像外贸电视盒子,这种问题很常见。我们使用opengwrt,就是为了实现一些想要的功能,自己编译,能很好的使插件和系统更好的兼容,同时想要什么功能就集成什么插件,不过度的集成插件,确保系统的稳定。
; o6 ]% ]. @- K, _3 R/ e C, f
6 \/ V0 {" `8 [4 n0 U 大家来看看,这是我自己编译的固件,在x96 max+的电视盒上运行,面对高温的天气,到目前已经运行2个多月了,从来没断过网,非常的稳定。接下来手把手教大家怎么编译openwrt系统,时间有点长,大家耐心看完,你也一定能编译出属于自己的系统。
9 A6 G. y& F9 P8 I
) r5 k: q) S1 Z. O9 s
; i7 V8 \5 F7 a( L! o0 ?2 d$ q8 C
, j) b1 F6 Y: G; f编译openwrt系统固件,主要分为三大步骤:
2 c$ D, L/ o* Z5 \! o: h
+ ?4 }$ t- {, F' l, @1 i+ U8 _第一步:安装虚拟机
# \6 Q: s# ` X第二步:安装ubuntu 22.04系统
( I8 J. k7 Z P9 w6 P. _5 I( N第三步:编译openwrt
8 m, @8 w3 _/ p% l$ b" @$ z视频安装教程 " P1 l, r5 w, q
. T3 \# G1 w/ Q: p
1 |4 ]0 e, y4 V0 u# H图文安装教程 5 H0 \$ ^1 P! f8 T: s
9 M! Y$ l M" N) Q
一,准备工具:
+ t! z; ^0 [8 Y& u3 t- ?
; n" {0 Q# _$ w a0 G! l8 S1,虚拟机软件VMware# O' E4 w m3 V5 |
2,ubuntu-22.04.2系统4 P% J( q* B1 D0 ^
3,SSH登录工具 finalshell! ^ y5 e4 D, M/ ^4 V# `* y5 h
4,科学上网工具(自备)
/ B p& c$ b1 E" q% i# |# `3 [3 a9 x: C K! v7 |' ^
配套工具:点击下载3 F* E+ y8 P7 @) {4 M; z0 J
8 ~8 A }: p- |! U. H) `二,环境搭建:. P9 f9 d, v5 h# j8 ]
% C" F# q% K$ ~/ e. A' h) W
1,安装好虚拟机,打开软件,点击创建新的虚拟机,选择典型下一步,安装程序光盘映像,点击下一步,这过程比较简单就不多做介绍,注意网卡需要设置成桥接模式。* E' b- K( y* l, |$ J2 _
2,安装ubuntu系sudo apt update -y统,点击新建虚拟机,选择默认进行安装!( k/ g$ u/ q; Z: ^2 z$ \# i
$ M# U0 ^' ~- ^4 ?4 S. h' q
三,编译固件
3 \( Q* R A* M
! p8 A9 K& T1 W2 H; L/ D0 Z0 U3 c注意:5 U! V# f; Q4 J" k0 v2 ^2 ^
1,不要用 root 用户进行编译, r s! ?) c: j$ [' H% g- z2 ]
2,国内用户编译前最好准备好梯子; @9 x' X% F+ _( t4 X
3,默认登陆IP 192.168.1.1 密码 password
* n2 \( w s+ ~ j2 L8 @0 U—————————————————————————————————————
- M% P' v T1 o# T1,安装编译依赖
( u- i6 a' t8 G4 l! Z- l# o# a' o; N
sudo apt update -y
, Y4 q) T9 h: v# Bsudo apt full-upgrade -y# p+ b! L1 b/ O% Y5 b
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
1 [7 A1 g2 |# P3 E& n: ebzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
/ b: v; r2 h+ O* l, sgit gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \+ q9 s2 t9 Z0 O! |
libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \3 R$ _! K, ~/ ?2 f M
mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \
. Y- e- s) _$ Wlibpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \vim wget xmlto xxd zlib1g-dev% o0 P+ r/ e, D3 u a, b
2 {) S+ u6 K- Q" ~& I7 [2,下载源代码打开科学上网工具,最好全局!以下源码三选一下载,也可以使用其他团队的源码!
9 V& S9 G4 p) ]4 O0 r: P% a7 k1 C% v; K
git clone https://github.com/openwrt/openwrt 官方版本
) O9 D5 l( B2 a- K7 q6 Vgit clone https://github.com/coolsnowwolf/lede lede版本+ a- Q* s( D: S' @; @- p5 W
git clone -b 22.03 --single-branch https://github.com/Lienol/openwrt lienol版本
- S& j( w7 \9 h* E* v, X. lcd openwrt 切换到文件目录
$ B* A; P2 j8 u$ R( n9 f- G; E; s, S- Y' X' \3 m" v
如需指定openwrt版本,可以使用以下命令
2 O/ `( x0 L' |4 T6 s7 m k4 y4 ^2 G
git tag 查看稳定版,回车键拉到最低,按Q结束!& h. x; v1 d' M O# x
git checkout v22.03.3 指定版本,红色部分位版本号
u3 c. {. S' {7 ?# F1 s. i7 v
3 j8 [# N4 P6 S- L- {% S/ n# I' }; {3,添加插件或主题
6 @5 {. b6 x# [" D1 x
3 W0 W y4 y1 I! K- ~/ e& n' k- _8 h打开openwrt文件夹,找到feeds.conf.default文件打开,添加到最下面!
) y* J7 R R) R5 Z4 q+ M" c/ o, Z1 P3 K2 h/ e, w, j( l6 y
src-git amlogic https://github.com/ophub/luci-app-amlogic 电视盒子必须添加
# P% q7 e4 K) |0 D+ M1 Usrc-git alist https://github.com/sbwml/luci-app-alist Alist插件" a8 [5 B: e8 L5 t( b' ~1 A( n
src-git passwall_packages https://github.com/xiaorouji/openwrt-passwall.git;packages+ i0 Q7 g( ^9 U `" ?' C. M
src-git passwall_luci https://github.com/xiaorouji/openwrt-passwall.git;luci* ?# M& M2 L, T9 U
src-git kenzo https://github.com/kenzok8/openwrt-packages; j/ Y1 S% @7 E2 B
src-git argonnew https://github.com/jerrykuku/luci-theme-argon.git;main 主题+ h8 i( d8 h i; {
% w: B1 D1 L) g9 {4,更新源码
3 p1 I$ P$ i1 r. ~2 r/ N( P P0 }' R5 d: V
./scripts/feeds update -a 更新源码
, t2 |9 U- o, i B2 d./scripts/feeds install -a 拷贝源码6 {* f) M) H+ S3 i+ D' N5 ?( `2 b0 w
) |1 n6 V# {; a
5,定制openwrt系统/ T( |8 Z. A; W' i& H3 M
7 k3 F% `/ s: P. a- \ b6 O- Umake menuconfig 打开openwrt配置面板8 @2 N# D# s5 B4 p4 A
———————————————————————————————————# \6 N1 e$ c# Q1 E
#必须设置项目(CPU架构,镜像文件格式,)
2 j7 a: t- K3 c' i: x+ d9 v+ \# G. S( u) a, W* l
Target System -> QEMU ARM Virtual Machine (注意:这是电视盒子 x96 max+)! T; y3 J0 ^2 ^6 w# {& F
Subtarget -> QEMU ARMv8 Virtual Machine (cortex-a53) + K9 E% q2 k: d3 }8 B, ]
Target Profile -> Default
9 W! @* F" w+ |" \ u0 ATarget Images -> tar.gz( z8 Q% Y0 t+ n1 u
! Z: p/ {8 O/ l' p- J, Q7 ^CPU架构查询表:点击此处2 o1 B$ u% \1 X q( j
1 P- ~2 i6 T) g* Y
*** 必选软件包(基础依赖包,仅保证打出的包可以写入EMMC,可以在EMMC上在线升级,不包含具体的应用):1 K- K. i' ]/ d a$ n& n( Q9 \
5 S: n' T! _& ]0 |2 q
Languages -> Perl
3 d( W2 s0 m( [- @ -> perl-http-date
$ A; d3 B, v. c3 y, x% U -> perlbase-file: t8 z" J3 {2 A+ {# L7 B
-> perlbase-getopt
( G$ N% u6 [6 k: R: F0 D2 l -> perlbase-time
6 W v M7 ~" Q) m -> perlbase-unicode1 H& L% }2 N' e4 |0 o; X; T) ^
-> perlbase-utf8, X, G4 ]2 D4 g+ x7 I% A
3 g( J9 N1 y5 n$ y7 Y
Utilities -> Compression -> bsdtar 或 p7zip(非官方源)、pigz5 O' H% a& ^ k0 @/ Z/ \3 N7 A
-> Disc -> blkid、fdisk、lsblk、parted
: e6 w3 K \, t# e, i+ j+ u/ E -> Filesystem -> attr 、btrfs-progs(Build with zstd support)、chattr、dosfstools、e2fsprogs、f2fs-tools、f2fsck、lsattr、mkf2fs、xfs-fsck、xfs-mkfs1 T# ~# d- Q1 W' L) f! y8 S- K
-> Shells -> bash
6 A v/ d o1 t6 a -> gawk、getopt、losetup、tar、uuidgen
- m' l5 ]; C& n4 l6 d
! @* |/ a2 a% d [*** Wifi基础包,打出的包可支持博通SDIO无线模块,Firmware不用选,因为打包源码中已经包含了来自Armbian的firmware,会自动覆盖openwrt rootfs中已有的firmware, e, \% J4 t1 m0 k" w! @- d! I
9 R6 Q; n% r8 I9 s2 d$ b
Kernel modules -> Wireless Drivers -> kmod-brcmfmac(SDIO)
; ^7 J& H4 u* ?0 F -> kmod-brcmutil2 w9 o' d0 i1 {, K$ L
-> kmod-cfg80211
1 u6 Y$ \# f: X K) A- J0 O0 [3 K -> kmod-mac802110 H# f* L- k# g$ z: H: r
-> USB Support -> kmod-usb-net-asix
4 ]7 N4 l% a4 g7 B# N& J! O2 U -> kmod-usb-net-asix-ax881791 y" p% e7 ]' N% m
-> kmod-usb2; Q+ [- G) E# ^/ ^% C. f) f I
-> kmod-usb3
; W, }; c6 ]& y- O' ]2 d红色为选填,如果你需要!USB3.0转千兆网卡(型号:亚信asix-ax88179)则必选!
- K5 m" o2 P1 o; Q
4 Q9 H: g* l! s4 V0 qNetwork -> WirelessAPD -> hostapd-common
$ F/ b6 b. f/ \' D -> wpa-cli
6 z" i. G( B7 } B% h. S -> wpad-basic
# e$ R" L0 N9 _9 Y -> iw
1 I/ v/ w5 w5 d7 d0 J( F' L
# _* e- T: }0 J1 {0 Y0 M*** 插件和主题,语言设置选项,根据需求设置,为了减少编译失败的概率,除了必要的晶晨插件,其他都不要安装,主题也是。可以编译成功后单独编译插件在安装。0 Z$ L4 m- R: H p) R
; u5 C7 o9 M; l) L2 F+ X
8 j/ Z3 F) C( _, G& o n) eLUCI -> 2.Modules -> Translations -> Chinese simplified 简体中文 自选!1 m- k5 D% E# ^+ H7 n, C6 M
-> 3.Applications -> luci-app-amlogic 晶晨插件,电视盒子必选!
4 \2 D, g4 ^5 L1 e: C -> 4. Themes 尽量不要安装,不然容易后台面板进不去!/ I; p+ b& `, K# q5 C& q6 E8 B1 e
1 v& X! H: y! ?2 s! J: K" A) ~( G
######如果需要重新配置##########
6 k& y; V/ {) t8 I; J# w! F! e8 g0 u# k
方法:使用命令
! I/ ?1 K; |; C: x8 [9 m/ g& X0 I
2 Y. P) P" c% a0 P9 Drm -rf ./tmp && rm -rf .config
% I3 c! X/ A$ p" N; C* h6 e- H3 P- lmake menuconfig
; t9 C: a. E: a N) qmake V=s -j$(nproc)) ^, ?; ^5 h/ E+ k2 ^$ d
( `% v% D0 a" @" s* d* z: g0 `8 `
6,下载 dl 库,编译固件 (-j 后面是线程数)
' z( i, b8 E X: t h. {! N* `
( H+ S9 Y" Q* X1 C }make -j8 download V=s 下载dl库,V=s 显示任务详细情况
; A) h0 b6 ]8 C& U+ B' z# ]+ ^make V=s -j4 4代表线程,根据个人实际情况调整
' @1 ~# `! D0 S) T) y. u3 U$ X. \, Q- ~7 W* j
如果编译失败,可以执行以下命令:
( {. p0 b. s, m5 P& z9 f4 E- V# S) o4 t9 B
make clean 删除编译目录/bin和/build_dir目录中的文件5 x7 l0 r. M9 P3 `: r0 J$ F9 k
make dirclean 除了删除编译目录之外还删除编译工具目录,删除/bin和/build_dir目录的中的文件(make clean)以及/staging_dir、/toolchain、/tmp和/logs中的文件,一般在更换CPU架构的情况下才操作。8 o2 V! j0 d+ Y, s0 O& R Y% H f
! g# Y! ]- S; @3 W# W4 `% X
7,下载编译压缩包
- f" `6 X; @8 X( k- ^
* n z, d- B: L9 @! A编译完成后输出路径:home/用户名/openwrt/bin/targets,下载到本地电脑,需要通过SSH远程登录进行下载。ubuntu默认是没开通SSH登录,所以我们需要进行开通。' Y8 v7 w9 _( }
. [9 K% b2 h; J1 ^, u4 e/ V: @开通SSH登录方法:4 g3 k9 U( H' D3 c* [6 |+ B
! G; r f" d# @# I1,必须切换成为root用户" i) w) T6 }6 ?, }( ~6 T: O
sudo -i" J5 L- v6 O: }0 n. r3 {
2,先更新软件列表和更新软件
& b- h, \. p6 {" K; ^, Z( }sudo apt-get update0 i% y2 U0 {" q7 b$ p1 w" Y
3,先更新软件列表和更新软件
" v% t/ M- r% k$ K2 hsudo apt-get upgrade
- e9 n8 Z8 a( w8 ^) L! Q6 F4,安装ssh: z5 b2 E' ?- H \) c
apt-get install ssh
! Q7 I- d, S: k" e! I5,启动ssh服务# j1 U7 a0 I, Y5 s% D' R
sudo /etc/init.d/ssh start
+ X$ _7 [) A g2 d- V4 X/ W6,检查是否有ssh环境' z7 z9 |/ ~* t* e; P
ps -e | grep ssh
* B: h2 S0 F+ g' ~' J& o- w$ q Q+ p0 I6 {4 R2 I, T. H$ j( _
ubuntu开通root登录SSH权限- S0 n0 f7 c5 B* Q- d( g* X
2 B3 z9 H$ k+ X. h2 _& Z! Y1, 使用普通用户登录后切换root
0 c6 {# P: n& h; P6 l; t' r: osudo -i# t5 A. P* J& m/ a. N8 s! B5 [, f
2,创建root管理员密码
) n* x3 i. w' K0 o) apasswd root
6 F: a7 z7 h4 R3 z+ f3,开启root登录
' |2 W2 }1 b4 w5 @5 C5 ksudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config
7 X$ g- P6 R. K$ W" w, N4,开启密码验证# Z! t% s1 ^# Y, E
sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config( ~ L. o) u, E8 t; @! I3 ~
5,重启ssh服务
0 A: ~. w) e' _' w0 B3 h- Pservice sshd restart
4 S# m4 S4 D1 ^6,检查是否有ssh环境
3 q- U5 _, G/ _0 \7 z9 w$ Xps -e | grep ssh; N' P! n" k& d y
. A3 s+ R: e" Q! E3 I1 V
: S b% q$ ?2 t6 \
2 O& c1 v3 N6 E
6 W4 d* `: I5 l- e9 {( A0 p" v2 S! B, l) x. P$ J- N4 I
f7 `" O3 R: ]
# J) l& j( F- Y' L% d从零开始:自己编译OpenWrt系统!一个视频就够了!简单易懂,毫无保留,VMware虚拟机安装,Ubuntu系统配置、openwrt源码下载,配置!保姆级教程!(电视盒子X96 Max+编译固件) (syjn.blogspot.com)) I4 M( o+ B% k; p+ {
: [) a6 `0 ^; _ @
|