这一期和大家来分享一下,如何打造属于自己的openwrt系统固件,其实编译真的很简单,只需要按照我的方法来操作,保证你也可以成功编译。 W. ^: E6 i! M1 I, v* @
. m" y, _( \) Y7 V1 y, m" T7 W
5 |( U* G( ?- g* O开始前我们先来解决一些网友的疑问?为什么网上那么多系统,我们还要自己编译呢?其中有二点原因:
$ R" y/ P0 E- T8 C# I8 T0 ?. `9 v# G* k( ]$ K. j! a2 |9 B
第一点:从安全上考虑,毕竟我们的网络数据,都是要通过openwrt系统,要是有人动手脚,在系统里放了后门,那么我们的隐私就没有保障了。
2 }2 ]1 l, X8 y" U3 y( k! f n- S( V/ @" Y: Q: m( ~/ f# Y
第二点:从稳定性上考虑,因为别人分享的固件,是用来适配他自己的设备,就算你的设备和他的型号一样,不同批次的设备,硬件都很有可能不一样,特别是像外贸电视盒子,这种问题很常见。我们使用opengwrt,就是为了实现一些想要的功能,自己编译,能很好的使插件和系统更好的兼容,同时想要什么功能就集成什么插件,不过度的集成插件,确保系统的稳定。+ L# o* d1 ]) R9 K5 g! E% M
+ {* p; r6 V. F 大家来看看,这是我自己编译的固件,在x96 max+的电视盒上运行,面对高温的天气,到目前已经运行2个多月了,从来没断过网,非常的稳定。接下来手把手教大家怎么编译openwrt系统,时间有点长,大家耐心看完,你也一定能编译出属于自己的系统。
2 {# ?! W% Y/ F8 q3 r
: O/ W+ U1 S- X& H2 g2 E
( _/ U7 f7 I5 z7 s7 B0 ]. F# n4 y7 }$ z- @0 b
编译openwrt系统固件,主要分为三大步骤:" F" M# l+ u8 ~7 W z- P- e6 W9 L# E
* q) V" S: P% q9 q! ^第一步:安装虚拟机1 ~5 l, R4 ?" J9 g3 c
第二步:安装ubuntu 22.04系统2 l6 ^( ]) x1 C( j4 A7 ~4 m+ Y
第三步:编译openwrt
; z1 b8 _& ?5 `& n& r! z0 C% J视频安装教程
) f( m% Z t' W) A1 d
/ C* F7 A1 X) U0 V8 A- @. L$ I
6 Q+ i* b, ^8 [6 n! U1 i. ^0 _1 j9 G图文安装教程
1 m) e, }4 v' o! @, I2 W2 L) f9 M7 G% b5 ?# r- A
一,准备工具:
+ Q- t$ {8 m( C* t2 L* C- L0 r. X1 g7 e, u8 B; Y% ~& _! C( x
1,虚拟机软件VMware' v4 p8 k. n) q \, k
2,ubuntu-22.04.2系统
& b( G' X5 ~3 e+ E3,SSH登录工具 finalshell
* y0 [/ P1 Q1 f0 q- t0 |4 Z9 b% K8 J4,科学上网工具(自备)
% u T$ E( u+ \1 w0 [' V+ Q% X3 m+ ?) `) S2 x1 E0 D, _
配套工具:点击下载
% {1 P- y: r" Z2 w% l$ y4 j7 w4 ]% z$ u# M2 ^5 `4 q
二,环境搭建:
6 A0 R9 r2 ?1 [) E. H: R% O# h, k+ m/ T L p8 S' H4 u
1,安装好虚拟机,打开软件,点击创建新的虚拟机,选择典型下一步,安装程序光盘映像,点击下一步,这过程比较简单就不多做介绍,注意网卡需要设置成桥接模式。* m. V0 l/ j/ V% t3 p# y
2,安装ubuntu系sudo apt update -y统,点击新建虚拟机,选择默认进行安装!* w- v/ ~9 T7 ?, K; n5 f- d0 `
7 x4 r* i2 U5 o$ ^0 t5 w% ^" t三,编译固件) q% n2 U q! Q, ?8 X
- @. e' F! l% S% a$ N) T( [$ Z注意:7 v" l3 p( b% n2 M% b7 F2 i
1,不要用 root 用户进行编译
6 m6 c+ _7 t# g2,国内用户编译前最好准备好梯子$ J( H: C" }; F
3,默认登陆IP 192.168.1.1 密码 password5 z/ f3 d, V$ A4 t
—————————————————————————————————————, i4 C% H4 ~7 u; U- c9 Z# z K
1,安装编译依赖
" f: E% K4 N1 U2 R8 T2 y! M) A
9 \8 O- K$ H4 V6 u* D. dsudo apt update -y
/ E6 F( a, V, ~ esudo apt full-upgrade -y: ^+ w7 ?% F+ @2 y
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \# |, t! s; E- h8 \+ |
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
& P) q# ^3 v- |git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
# O# C; Q4 @; M& a) g- Dlibmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \7 `2 Y& p; G; R: Z' C/ A
mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \
7 o7 l- S A0 @5 G# Dlibpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \vim wget xmlto xxd zlib1g-dev7 Y( U7 |5 N" p* J( T8 Q0 I2 S3 Z
! ]: ?, Z% x/ Z, S- p
2,下载源代码打开科学上网工具,最好全局!以下源码三选一下载,也可以使用其他团队的源码!
+ J1 L. {! U& u: J1 c! `
- `7 a/ B( G, Cgit clone https://github.com/openwrt/openwrt 官方版本& V0 [9 n0 J: D7 _6 I
git clone https://github.com/coolsnowwolf/lede lede版本6 @& l! x5 r5 `) ^. s j
git clone -b 22.03 --single-branch https://github.com/Lienol/openwrt lienol版本' m9 I5 L7 u p* R0 h
cd openwrt 切换到文件目录
7 B9 s$ `- p" V7 o8 z3 X* M5 @
" N3 c% A1 e0 X( P如需指定openwrt版本,可以使用以下命令! k, B% G5 {' Q O: S0 T: \
. R6 ]2 _! l+ V* @' t5 s0 r. j) h* b
git tag 查看稳定版,回车键拉到最低,按Q结束!8 }3 z$ B* @% y! _% P- w; m/ t
git checkout v22.03.3 指定版本,红色部分位版本号
- b. {9 X, h) m$ B7 w
9 d: D4 S9 x7 s- z6 [8 D; J5 K3,添加插件或主题
4 V; L+ {. o1 N4 _# ?& R; p
2 j' J& D6 R6 _: I, p9 ]: l G打开openwrt文件夹,找到feeds.conf.default文件打开,添加到最下面!
2 s5 x* P4 o6 L2 m
; w. S+ h, B# d ?- ~src-git amlogic https://github.com/ophub/luci-app-amlogic 电视盒子必须添加, v& h5 r* p6 Q* ]
src-git alist https://github.com/sbwml/luci-app-alist Alist插件
, \) C+ `9 A h, lsrc-git passwall_packages https://github.com/xiaorouji/openwrt-passwall.git;packages
7 B7 e% B* V; H" A4 Y, ~1 A: {src-git passwall_luci https://github.com/xiaorouji/openwrt-passwall.git;luci
" C: U, P, x5 ?3 v0 csrc-git kenzo https://github.com/kenzok8/openwrt-packages/ m4 [+ j% T2 n" B
src-git argonnew https://github.com/jerrykuku/luci-theme-argon.git;main 主题1 V) N* R! r+ E# d& Q, p: `( Y
- p# V. b- L, Y C/ c+ g' c
4,更新源码% V( v& L' Q& ^" l; _! v1 L5 Z
5 \, ~5 V& f/ \; S3 m/ a/ F9 M. U/ C6 J
./scripts/feeds update -a 更新源码
& b1 s6 t0 a4 e1 V; h( N- d./scripts/feeds install -a 拷贝源码
) `! A" R' X. O( }/ x2 W( J/ ?- [+ l+ Y$ j1 z5 @/ r
5,定制openwrt系统# g3 l' ]6 F, K! O
+ { V9 ?8 w3 F. b0 w3 y4 _6 E4 t
make menuconfig 打开openwrt配置面板9 l( n- G* r; J: z' r
———————————————————————————————————# X; k* P2 ~' I; ~0 P0 \ j }8 z
#必须设置项目(CPU架构,镜像文件格式,)
1 t1 m, B k9 N% T/ o/ {
& N4 }, l, v, c9 e7 ]/ v9 JTarget System -> QEMU ARM Virtual Machine (注意:这是电视盒子 x96 max+)8 n' v4 x5 ^1 p
Subtarget -> QEMU ARMv8 Virtual Machine (cortex-a53) % l4 a6 L* O% l0 R3 A2 V
Target Profile -> Default1 S+ L* V2 X v K. |$ j; L$ J
Target Images -> tar.gz, K5 I# ^" Y4 @) w1 q
& L" ~, Q( h( ]2 b* h5 |, ~; M" rCPU架构查询表:点击此处
; N' d, U: v* n$ S3 l
, g+ W% E, K8 g+ }: v*** 必选软件包(基础依赖包,仅保证打出的包可以写入EMMC,可以在EMMC上在线升级,不包含具体的应用):
1 O1 r" C( j2 f! M( }5 N# y" L
5 b4 ?* L" I& d* u8 YLanguages -> Perl
4 c B3 c ?8 B& ?5 g! f$ i -> perl-http-date
1 C) h+ \* z, D4 Q -> perlbase-file
4 X) v" ^0 g) B0 y* ` t) g -> perlbase-getopt
0 u( D' F- O. X V -> perlbase-time9 d2 X7 @9 q7 v- Z, I
-> perlbase-unicode
8 c; T$ A- d. f3 Z -> perlbase-utf87 G' L$ i3 x- ~. K6 [# U" J/ H
, {( J" M% b, E% `
Utilities -> Compression -> bsdtar 或 p7zip(非官方源)、pigz0 w3 S( ?! n6 i( e, }. i
-> Disc -> blkid、fdisk、lsblk、parted5 v/ \1 Y5 p7 z" [. o+ C
-> Filesystem -> attr 、btrfs-progs(Build with zstd support)、chattr、dosfstools、e2fsprogs、f2fs-tools、f2fsck、lsattr、mkf2fs、xfs-fsck、xfs-mkfs
# }! }" g: E' e. W) B -> Shells -> bash9 e& J4 `% f. [. o) l# _9 p1 y6 V! ~
-> gawk、getopt、losetup、tar、uuidgen
; T- Y6 e; k% L
1 Q% r# T9 L; q( d7 W0 ^*** Wifi基础包,打出的包可支持博通SDIO无线模块,Firmware不用选,因为打包源码中已经包含了来自Armbian的firmware,会自动覆盖openwrt rootfs中已有的firmware" E; Q8 U6 @" f* U$ ~# d5 b
6 T- N+ n+ e0 o i& C# Q$ }Kernel modules -> Wireless Drivers -> kmod-brcmfmac(SDIO)
/ b- K! w" N6 l) N3 @ -> kmod-brcmutil4 P" t: X" o- M2 g0 w
-> kmod-cfg80211
9 k6 D9 }" n6 l4 U) ]; w7 I) |9 ~# ] -> kmod-mac80211: M, K6 }4 i& ?% ~: ~4 g
-> USB Support -> kmod-usb-net-asix/ z8 M; F' K# o& F6 p" L+ J
-> kmod-usb-net-asix-ax88179
2 v* L3 P% h( U) \ -> kmod-usb2
! ?3 E! l/ L8 ]( T' I, V -> kmod-usb35 m j Z G# m/ w, Y9 F- k5 v
红色为选填,如果你需要!USB3.0转千兆网卡(型号:亚信asix-ax88179)则必选!
% j6 a* M6 {1 J; y$ V" ?* l+ U( F) i9 W
Network -> WirelessAPD -> hostapd-common8 t: N* }) t& h
-> wpa-cli9 w' |9 I; ^& g( n2 m
-> wpad-basic+ ^8 Y2 }; c5 {. K3 x; ^% p2 P
-> iw
3 T' P! r3 r3 q/ L' {0 a3 X/ J M+ z& m b5 \
*** 插件和主题,语言设置选项,根据需求设置,为了减少编译失败的概率,除了必要的晶晨插件,其他都不要安装,主题也是。可以编译成功后单独编译插件在安装。
* _+ {+ i5 G |& _' j
" ]; ?7 b Z$ c8 q- v Q4 Z, i
) K5 G0 W3 Y) H: SLUCI -> 2.Modules -> Translations -> Chinese simplified 简体中文 自选!: @ p* b5 T# m8 L: o6 f
-> 3.Applications -> luci-app-amlogic 晶晨插件,电视盒子必选!5 A) Y0 P {3 ?! p, P( u2 w# c
-> 4. Themes 尽量不要安装,不然容易后台面板进不去!
9 b& ^- ]' f& X" e" ~5 }+ x% K4 j$ T) h- N( K
######如果需要重新配置##########
% m9 m8 S) T' H7 w" N+ n$ J) y% h( M
方法:使用命令+ ~% j4 |) r4 A2 j8 {
' F: R3 Y2 [$ O0 t# r8 e+ nrm -rf ./tmp && rm -rf .config
R3 F6 ?% h, \3 O* ] Hmake menuconfig( ]/ y$ F6 n+ u* m, ]$ r
make V=s -j$(nproc)3 G q @; ?; P( ~& L- _' n% _
, r! R# Q8 _: u. y6,下载 dl 库,编译固件 (-j 后面是线程数)
5 p! K8 s; j( `- ^/ X0 b" r/ s6 N7 h! f
make -j8 download V=s 下载dl库,V=s 显示任务详细情况
/ Q1 G0 G0 u! i6 C1 P' F' s/ [make V=s -j4 4代表线程,根据个人实际情况调整7 L5 a; B+ L# o8 L0 [- ~& q
8 r8 r; D& A I! M \7 d5 M% p
如果编译失败,可以执行以下命令:
/ v# f7 G) u3 D; p/ Z7 \7 u& R- i# S7 q; a3 V
make clean 删除编译目录/bin和/build_dir目录中的文件; C! J6 w9 X# W: F# t% @. O
make dirclean 除了删除编译目录之外还删除编译工具目录,删除/bin和/build_dir目录的中的文件(make clean)以及/staging_dir、/toolchain、/tmp和/logs中的文件,一般在更换CPU架构的情况下才操作。1 m y1 Y5 K$ t9 p# J3 k3 q u
* m7 p4 ~* f o. x4 ~/ n7,下载编译压缩包
/ v+ U' D4 N* Z$ l: y- f$ B7 Q0 z* r7 ~. k0 x0 s( @9 [
编译完成后输出路径:home/用户名/openwrt/bin/targets,下载到本地电脑,需要通过SSH远程登录进行下载。ubuntu默认是没开通SSH登录,所以我们需要进行开通。. C8 k/ C! C# o" e3 z, [
8 Q9 l" i) B2 O& R. _
开通SSH登录方法:! x! L, G/ X; U2 \/ ^- h$ V8 X) f
5 O) D2 ~+ A6 O) k- W1 H) G, G! L
1,必须切换成为root用户% a! H/ b) z! w
sudo -i* Y4 ?9 m$ d t7 j/ `$ Q! Y
2,先更新软件列表和更新软件
: U, [; F8 f2 D* Y% p' i3 Psudo apt-get update
+ t% E) ~) A% X3,先更新软件列表和更新软件) a# ^: _& o0 ^+ v1 S. f6 K7 s8 r3 p
sudo apt-get upgrade
+ B5 b% e3 @# A4,安装ssh
# \( T, g3 Y" T$ M. ]! capt-get install ssh
# P3 Q: S2 z' {# _5,启动ssh服务
' E- Y K. A2 s. v, jsudo /etc/init.d/ssh start
: c6 b4 D1 W+ W. t! t9 h: x6,检查是否有ssh环境
8 B, d6 V( R7 Aps -e | grep ssh
; L' e# G3 O! @4 P7 u# a: P9 I7 [$ F0 f! V! y
ubuntu开通root登录SSH权限& l3 }; E: d7 u
, D/ [; T& ~, {5 @# }
1, 使用普通用户登录后切换root* m0 c/ j$ T# }1 c9 Q& h
sudo -i: V# M* u/ D4 l
2,创建root管理员密码& ]! T5 A* _, L4 c
passwd root4 h1 R3 m. m/ C' r3 N8 N
3,开启root登录
3 ?# \/ m$ S& k3 u, X8 @3 ksudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config
; U* d, f* Y& s& ~+ P6 g( J4,开启密码验证3 [/ x! G" H0 H2 y6 J) e4 J7 ?0 ]; W
sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config
4 @; H" N, J5 B( l* F5,重启ssh服务# P- R, Q' G4 g. S( B
service sshd restart
8 d/ y* C7 w' Z6,检查是否有ssh环境
, n" H# w1 n7 F# n. u2 v: ?ps -e | grep ssh
0 a) q; ]$ m, A. f3 ^1 }! {6 S& E2 a, o7 p0 I5 S2 v
9 z, x& z3 E2 p0 v/ s: v
7 i6 N( u- s8 `; D
# H( F) C/ U4 R
. }/ R. S- P# J- ^; q3 \$ S7 a. P8 p4 w& p3 a
7 F8 |% ^( d7 }6 n' M; r: p9 h9 V
从零开始:自己编译OpenWrt系统!一个视频就够了!简单易懂,毫无保留,VMware虚拟机安装,Ubuntu系统配置、openwrt源码下载,配置!保姆级教程!(电视盒子X96 Max+编译固件) (syjn.blogspot.com)
' f: ^8 F& z0 Z X& d3 V6 q; Z4 J
( J8 k) y# G( R |