这一期和大家来分享一下,如何打造属于自己的openwrt系统固件,其实编译真的很简单,只需要按照我的方法来操作,保证你也可以成功编译。/ R! `6 a: l3 ]% f/ Y; F4 @' x; I
& ^5 t; P( d# f1 B7 I9 s; K1 j" O i, V( ]
开始前我们先来解决一些网友的疑问?为什么网上那么多系统,我们还要自己编译呢?其中有二点原因:* G1 v1 K# w4 i/ H% J% F9 `
9 ?8 d6 Z& \2 T7 }6 s+ t
第一点:从安全上考虑,毕竟我们的网络数据,都是要通过openwrt系统,要是有人动手脚,在系统里放了后门,那么我们的隐私就没有保障了。5 i8 Q; ]2 b# F& ^ u9 o: |0 F" ^
8 W, g5 R8 _% ?! n: I, |$ J. Y
第二点:从稳定性上考虑,因为别人分享的固件,是用来适配他自己的设备,就算你的设备和他的型号一样,不同批次的设备,硬件都很有可能不一样,特别是像外贸电视盒子,这种问题很常见。我们使用opengwrt,就是为了实现一些想要的功能,自己编译,能很好的使插件和系统更好的兼容,同时想要什么功能就集成什么插件,不过度的集成插件,确保系统的稳定。
8 e' u3 P9 ^: k; ?+ I0 [1 j1 z
4 {! C' i! O( }% ^# w' C0 S# q 大家来看看,这是我自己编译的固件,在x96 max+的电视盒上运行,面对高温的天气,到目前已经运行2个多月了,从来没断过网,非常的稳定。接下来手把手教大家怎么编译openwrt系统,时间有点长,大家耐心看完,你也一定能编译出属于自己的系统。
( y& ^2 `! ^$ g4 g& @
7 Y; E+ k- d- q+ L0 r
! |9 a$ H: a/ d- E1 y! b* q+ V' N" I% E% ^* l6 d* Q
编译openwrt系统固件,主要分为三大步骤:
4 X3 h. m* H* p# I5 z
1 {, h$ F2 K, Y5 s, U) H第一步:安装虚拟机
) ]' n5 O& \ y. K% G第二步:安装ubuntu 22.04系统2 r }3 S9 Q' h- a R5 b
第三步:编译openwrt% B! z) K5 p! ?- _* F
视频安装教程 / X( B, d: V! [( A( X% {2 W
% Z2 X) b2 j* b4 S% Y, |& p
4 j& y/ N' G- i# S, A7 ?" b图文安装教程
3 u" F9 G, Z& Y- X; w/ `7 u) Y2 \8 N
一,准备工具:
9 I, v1 G6 i' k0 c* C4 Q2 T, E/ H) D/ G% G+ R8 [3 W: ?& ]
1,虚拟机软件VMware9 S, f! O! n6 Q2 c- X
2,ubuntu-22.04.2系统 g! P9 T6 o( c% w
3,SSH登录工具 finalshell
7 a% f' Y" ?# M4,科学上网工具(自备)
5 p) J0 g) I4 `: n: |
9 _) T1 E: c$ S* I, ^. R" U配套工具:点击下载
9 k ^5 e# r5 P3 W$ s
, o4 H, M5 }2 }7 [2 r二,环境搭建:2 q4 g) q+ z9 `( [! C- n) a
5 W- |* y- Z1 L* ?3 `1,安装好虚拟机,打开软件,点击创建新的虚拟机,选择典型下一步,安装程序光盘映像,点击下一步,这过程比较简单就不多做介绍,注意网卡需要设置成桥接模式。! ]: @7 [8 s/ W+ s0 b- Q
2,安装ubuntu系sudo apt update -y统,点击新建虚拟机,选择默认进行安装!
6 _) }3 m% P' Q8 |, K3 L
% q! U8 A3 Y( v" }. `. F三,编译固件
- ~, M- W. V& B0 w+ v+ t7 N% L' A4 H+ o' H! r8 E
注意:% T5 _4 j( j3 M3 c
1,不要用 root 用户进行编译
" Z+ ]' t: a8 _, U- v2,国内用户编译前最好准备好梯子- ^5 O/ J: \3 \+ Z' a- P" p
3,默认登陆IP 192.168.1.1 密码 password4 v+ c: m# p2 h: O/ ? L
—————————————————————————————————————' L% h1 t. }; J% J
1,安装编译依赖8 L( L6 U+ W" F7 I
1 D F$ B4 D j D* [
sudo apt update -y3 i% V. j: q" `/ F; e: o* t+ m
sudo apt full-upgrade -y
0 f" \! _3 a) |sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
# R5 Z; ~9 J V, w4 |bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
7 n9 H9 B/ A: c, j- Ggit gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \) F* i0 F& m1 X
libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
6 u- O0 B; M5 ]" W' ^6 P! J0 Bmkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \1 s9 [' t; C* _. p d: v
libpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \vim wget xmlto xxd zlib1g-dev
0 h7 j0 r8 D ~( [8 W6 j( i2 L i
9 n' u) i1 J' S5 j) E2 F( y2,下载源代码打开科学上网工具,最好全局!以下源码三选一下载,也可以使用其他团队的源码!1 F) D- [' f7 _
3 n& U2 G& | z) s. R. F. L' bgit clone https://github.com/openwrt/openwrt 官方版本- r: h9 e8 z( P
git clone https://github.com/coolsnowwolf/lede lede版本
& z8 N) t3 C! X& x% i. Bgit clone -b 22.03 --single-branch https://github.com/Lienol/openwrt lienol版本: g$ o4 @/ d/ o; E/ z
cd openwrt 切换到文件目录
! I+ Z( c$ v, P6 d: n
6 w& r: e4 Y- H9 ]% z2 B如需指定openwrt版本,可以使用以下命令
5 J$ f; p8 Y% v3 C' J7 e* G
! X& a& D5 U9 b1 y. {git tag 查看稳定版,回车键拉到最低,按Q结束!
/ {" P1 w" f2 d9 e5 D, ?; Cgit checkout v22.03.3 指定版本,红色部分位版本号
2 U( O# U, p8 i& z
& u0 _. z$ M0 x9 G0 z k; M, P& i3,添加插件或主题
( ^' [) d$ G. C6 m4 z
, O0 N" v) N9 L' y9 E) y/ I# a打开openwrt文件夹,找到feeds.conf.default文件打开,添加到最下面!" V* m* c. F, B( _$ R1 F
1 C' N+ i! S5 q4 R' q
src-git amlogic https://github.com/ophub/luci-app-amlogic 电视盒子必须添加4 @) w* w$ `3 Z
src-git alist https://github.com/sbwml/luci-app-alist Alist插件0 }2 M2 v) J8 A! C! f& e' R; t
src-git passwall_packages https://github.com/xiaorouji/openwrt-passwall.git;packages1 D5 e h$ i. C$ n: Z5 ]; Z- T$ ?4 R
src-git passwall_luci https://github.com/xiaorouji/openwrt-passwall.git;luci
9 L& C, r% U5 h7 j$ ?src-git kenzo https://github.com/kenzok8/openwrt-packages
$ u' E, j5 S `src-git argonnew https://github.com/jerrykuku/luci-theme-argon.git;main 主题( W0 Z* @& E+ x$ W" M" B
1 q B$ I# `, Z1 O5 O+ v0 Q
4,更新源码/ S8 c6 N! d8 Q' d* g
, v7 O5 N& A$ e' A! Y! ^./scripts/feeds update -a 更新源码8 }0 P7 B7 k6 ~
./scripts/feeds install -a 拷贝源码6 j4 W" K v& O
% o3 Q; H0 f# d& s0 N% q8 P
5,定制openwrt系统
1 q& x/ F# n; A: a' r, {5 |9 L9 A9 A4 c* L0 h
make menuconfig 打开openwrt配置面板
[8 a. _ l9 C- V———————————————————————————————————
! I/ Z2 |1 ^2 x" L/ d#必须设置项目(CPU架构,镜像文件格式,)5 J. h$ B. g( J' `7 S0 ]0 V$ `
4 N: p! D5 X# h. U- c3 a0 q
Target System -> QEMU ARM Virtual Machine (注意:这是电视盒子 x96 max+)
% A3 D# Y2 V. y* d2 M% ZSubtarget -> QEMU ARMv8 Virtual Machine (cortex-a53) " q: P9 e' U1 d3 m( k
Target Profile -> Default
' Z/ U+ N0 V- y& q J9 ]8 |; ]Target Images -> tar.gz8 l+ |8 B `0 P6 L3 ^
- ~+ w# a5 ? {+ H6 X: I7 R; D! N& F
CPU架构查询表:点击此处
+ S) E, T# T) y8 r/ N- `
+ `- Y- n' v4 I*** 必选软件包(基础依赖包,仅保证打出的包可以写入EMMC,可以在EMMC上在线升级,不包含具体的应用):
]2 E _" b1 w
, q' f) ?" E9 {! z* |Languages -> Perl5 `3 z' E" {7 @$ U$ m& y
-> perl-http-date
, U2 B+ g- U1 |! Q8 w# z7 A1 R$ Z -> perlbase-file
( Y+ O3 I) w. `5 E -> perlbase-getopt
}4 }, I: Z: J# s8 V -> perlbase-time
4 g7 J& p; _% w" a" C' f -> perlbase-unicode
2 O9 B. T2 P1 C6 F& v' h d! N -> perlbase-utf8
^5 ]# _$ r1 s# S% F$ ~) I7 w
# V5 ]3 S" R( h) k6 rUtilities -> Compression -> bsdtar 或 p7zip(非官方源)、pigz
$ |/ R) ~* c0 V0 s -> Disc -> blkid、fdisk、lsblk、parted
! G: C& g+ j" e3 d$ K8 ]) E -> Filesystem -> attr 、btrfs-progs(Build with zstd support)、chattr、dosfstools、e2fsprogs、f2fs-tools、f2fsck、lsattr、mkf2fs、xfs-fsck、xfs-mkfs. q2 F$ g) `# d" d0 D6 n
-> Shells -> bash2 a: W6 G: U9 ?
-> gawk、getopt、losetup、tar、uuidgen* v+ P1 G1 y; j5 z
5 ?9 s1 h0 y9 D m# P Z0 h7 b& k
*** Wifi基础包,打出的包可支持博通SDIO无线模块,Firmware不用选,因为打包源码中已经包含了来自Armbian的firmware,会自动覆盖openwrt rootfs中已有的firmware
: y) q/ M/ z9 ~& B% `' _
& Q0 @( _% ] G( _5 ~0 kKernel modules -> Wireless Drivers -> kmod-brcmfmac(SDIO)
! e5 n- ]0 T! r# U1 J7 O -> kmod-brcmutil
2 d( [5 C% i8 P. } -> kmod-cfg80211' s3 C2 e& n6 _* L7 G$ d
-> kmod-mac80211
+ p# _. y& `0 M/ L' O -> USB Support -> kmod-usb-net-asix
) @; R- E/ O; J; B- B( j/ q& N: ? -> kmod-usb-net-asix-ax88179
$ ]( X; W+ S& F5 } -> kmod-usb2
1 u `& ?+ y. N H% ] -> kmod-usb3 @+ ]6 t$ R) G& _) u
红色为选填,如果你需要!USB3.0转千兆网卡(型号:亚信asix-ax88179)则必选!/ G' R/ s. W+ z$ U; u3 k
$ y" b+ m9 ~% A' r9 t& @5 K$ Q5 p- P' s( ONetwork -> WirelessAPD -> hostapd-common# z( w- p$ D) n) g& d
-> wpa-cli
3 u& J' O+ f" G6 \1 @' ^0 v -> wpad-basic
K! l2 n D. a0 \8 n5 _& x -> iw0 w, L4 k' v4 K3 E* C9 p: w
# u3 B' { v6 `* y*** 插件和主题,语言设置选项,根据需求设置,为了减少编译失败的概率,除了必要的晶晨插件,其他都不要安装,主题也是。可以编译成功后单独编译插件在安装。
) {* R2 e9 m r/ O& X7 K
, J2 e8 V* S" A3 i: g7 H0 _! P9 D; O$ d N$ Z+ r0 j
LUCI -> 2.Modules -> Translations -> Chinese simplified 简体中文 自选!5 z y& M9 m3 P1 B. V# J" ^/ \2 _
-> 3.Applications -> luci-app-amlogic 晶晨插件,电视盒子必选!' {4 x; c9 `' Q7 l1 M/ L/ k
-> 4. Themes 尽量不要安装,不然容易后台面板进不去!
9 r9 p- h8 m- Q1 b
4 [ Q( S i6 u. E. h+ {######如果需要重新配置##########
* Q$ g& u, f$ [9 X& V: D+ n; e l
% f/ z' u2 J4 E+ _8 X& f9 \方法:使用命令6 ~% d0 ]; U8 i# p# c0 Q; h
3 l$ s( U; ] q( H" J3 U- Qrm -rf ./tmp && rm -rf .config
8 Q6 V( m$ i4 C, b# i5 Mmake menuconfig+ A& J: a1 K7 M v8 n
make V=s -j$(nproc)
% E9 R- e& L8 C" G' I" X
5 i' J! c; i3 W" l6,下载 dl 库,编译固件 (-j 后面是线程数)
5 V: K! B7 `7 i" H, G8 N* K: E* E( \6 j+ ^6 x
make -j8 download V=s 下载dl库,V=s 显示任务详细情况8 S# A) `4 d2 ]
make V=s -j4 4代表线程,根据个人实际情况调整- N' f$ N: P0 V# m, m: I y
/ _. }4 A( K" q8 I5 ?" {如果编译失败,可以执行以下命令:# b$ m% u( P) D6 f$ B
; b# ]' n M% s, ]" M7 D$ mmake clean 删除编译目录/bin和/build_dir目录中的文件
( U, W1 z& D, M6 p7 B" l% e, A8 E4 smake dirclean 除了删除编译目录之外还删除编译工具目录,删除/bin和/build_dir目录的中的文件(make clean)以及/staging_dir、/toolchain、/tmp和/logs中的文件,一般在更换CPU架构的情况下才操作。
9 }& l0 E2 H1 h: l6 K6 Z- n
. @/ h1 A5 G$ {3 t7,下载编译压缩包. L$ r# O4 |7 W) Y1 n2 p
* I* ?* Y. c2 B3 c; i编译完成后输出路径:home/用户名/openwrt/bin/targets,下载到本地电脑,需要通过SSH远程登录进行下载。ubuntu默认是没开通SSH登录,所以我们需要进行开通。0 J: W/ l4 k+ V- H
" l! {8 J/ k/ D4 u! }
开通SSH登录方法:: L4 L, @* O3 u1 H) g) u
' s7 M2 F: l5 Y2 L9 o
1,必须切换成为root用户
: ~. L3 t& |- j, K s- V$ S3 ksudo -i4 J# F5 T2 L5 g+ y
2,先更新软件列表和更新软件3 X9 U$ p/ A1 Z. f, S& w/ ]
sudo apt-get update
& ]; G9 O& S) N& x3,先更新软件列表和更新软件7 ]" j3 x! a$ f" A2 {) T, H; W) c
sudo apt-get upgrade
( H6 d6 E7 p; w5 a/ s4,安装ssh
% l+ x1 ?! b! O( O& W9 g; Japt-get install ssh' t# d6 ^0 w$ Q# `7 {( `
5,启动ssh服务' F; }8 J( G7 \, O2 P @
sudo /etc/init.d/ssh start5 S; W9 N/ h) k# s9 T% Z
6,检查是否有ssh环境
& S0 J. ~4 [/ Z7 [. Cps -e | grep ssh/ i- o9 t/ S9 y
g7 X& G `5 ~0 _
ubuntu开通root登录SSH权限
5 t m( Y A+ Q; @
/ Q: K) Q1 B; v1 n: J& F6 O$ j1, 使用普通用户登录后切换root
1 F6 v. D0 O9 i- P2 j2 m: P; Rsudo -i& o) g/ D: {$ Y8 A& k
2,创建root管理员密码, l7 Y# ^; c& \3 p. T' k$ v( b% G
passwd root
1 y+ r- A% }" d: {7 ^6 A( Z3,开启root登录, [" x; o: n& O6 g7 ]( Z" G% g, y" O
sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config" `, K0 _; P/ l; {- Z& s9 L
4,开启密码验证
8 K3 H" `- H/ b2 dsudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config
) G! w p r6 B( d( K) j C1 Q5,重启ssh服务
6 Q; K+ p$ H; J2 v, J4 j7 Kservice sshd restart* v4 Y" d. Z7 x' B
6,检查是否有ssh环境* {* ^7 `2 |* K, G8 {7 [2 w1 f
ps -e | grep ssh
# }( @9 f6 l w+ D3 \
$ j& M: K# I/ m9 x6 v. C
7 M: R+ E; V, o$ p! i% |8 c# L/ a9 F. Y9 T7 Q% A0 P4 ~1 y
5 S) U# \# T' Z9 t
9 u# E+ _7 W" \1 ~. \; e* U: S1 U; r/ c" F8 K6 Z
* r+ S5 u' ~) ?! e- ]从零开始:自己编译OpenWrt系统!一个视频就够了!简单易懂,毫无保留,VMware虚拟机安装,Ubuntu系统配置、openwrt源码下载,配置!保姆级教程!(电视盒子X96 Max+编译固件) (syjn.blogspot.com)9 e; e: e+ P P- t* j# Q
8 O2 _! {7 H2 ?+ }5 ~; z4 m |