这一期和大家来分享一下,如何打造属于自己的openwrt系统固件,其实编译真的很简单,只需要按照我的方法来操作,保证你也可以成功编译。# m/ ^ ?0 `; Q
4 o. P/ ?! [# e% H3 e4 a
0 Z% _% \8 n/ ^+ j! s开始前我们先来解决一些网友的疑问?为什么网上那么多系统,我们还要自己编译呢?其中有二点原因:- M" I7 }$ ]6 D* }# N
5 k& E$ t! S. d1 Z1 G% l6 z' a第一点:从安全上考虑,毕竟我们的网络数据,都是要通过openwrt系统,要是有人动手脚,在系统里放了后门,那么我们的隐私就没有保障了。
) Z9 o K/ S0 F( Z5 ]+ j/ Q+ G$ |' F% D
第二点:从稳定性上考虑,因为别人分享的固件,是用来适配他自己的设备,就算你的设备和他的型号一样,不同批次的设备,硬件都很有可能不一样,特别是像外贸电视盒子,这种问题很常见。我们使用opengwrt,就是为了实现一些想要的功能,自己编译,能很好的使插件和系统更好的兼容,同时想要什么功能就集成什么插件,不过度的集成插件,确保系统的稳定。
% m+ {" v: @4 V+ |( \* G" n) |8 r# J4 x% a# ~- S* `6 ?+ ?. ~# H+ [
大家来看看,这是我自己编译的固件,在x96 max+的电视盒上运行,面对高温的天气,到目前已经运行2个多月了,从来没断过网,非常的稳定。接下来手把手教大家怎么编译openwrt系统,时间有点长,大家耐心看完,你也一定能编译出属于自己的系统。
2 Q/ C- p. c9 g, m$ p$ P( Y$ b
. W* ]0 d9 |0 c1 U
+ n% t. E' c' H% x( R% _9 d6 [5 B* Y; D2 ~
编译openwrt系统固件,主要分为三大步骤:
; l, r$ S. l$ G- T# ]+ _. d5 B% y @; a" l! H2 |# }" O
第一步:安装虚拟机
( X _4 {# l. ^5 R2 u第二步:安装ubuntu 22.04系统9 R% ]* c9 Z% v* S
第三步:编译openwrt' Z4 R0 _( U* q6 n
视频安装教程 " u5 F$ L" P+ t- W
; M/ R6 ~# I2 L% I7 z
/ w: L! `& }" ~, S- u: p图文安装教程 9 w1 {. O9 Z% h
1 Q% w; p: ]" d |7 I8 ?) y
一,准备工具:- J$ y% ?* B- r, r J
" c4 X* O( ?$ M7 t& _
1,虚拟机软件VMware" u' @1 z+ |0 R. [' ?! D% U |
2,ubuntu-22.04.2系统
+ t6 u+ k9 |% H. G4 p3,SSH登录工具 finalshell
8 G i) n. i) F- f `- l4,科学上网工具(自备)
0 ^8 U- {) d0 G7 g) i6 X+ z+ ^: h3 g" q, q4 J: V! S* p
配套工具:点击下载
6 J& |4 Q2 t; J- V4 |2 B; g6 ]7 O
- q: ~/ a# E5 v* B3 l/ d二,环境搭建:
& o- m3 k* j9 T6 e7 A. v/ d3 w7 G% B! |
1,安装好虚拟机,打开软件,点击创建新的虚拟机,选择典型下一步,安装程序光盘映像,点击下一步,这过程比较简单就不多做介绍,注意网卡需要设置成桥接模式。" h7 m: T" S0 Y# X$ C$ {3 W1 b
2,安装ubuntu系sudo apt update -y统,点击新建虚拟机,选择默认进行安装!+ |0 t; K1 H/ H8 D$ `' \' w
! p( ?2 m' X# `' W5 i) U4 ^三,编译固件0 `' ^6 [' x: O) s! E7 N/ d
- q9 L6 O) C$ ~: w" Z: G6 P
注意:
" {& J. ?7 r" K( l# T4 X6 u5 _1,不要用 root 用户进行编译
' ?2 l0 J) x! b0 `0 L; p2,国内用户编译前最好准备好梯子, ?8 z# |- K v! X' H5 ?
3,默认登陆IP 192.168.1.1 密码 password
6 ~% ~6 `7 V8 M. L—————————————————————————————————————
. t) B& _( m' `+ p1,安装编译依赖- y6 `1 V4 D' e# ?. o
1 R- e( W, ]) s+ F2 h
sudo apt update -y9 S+ X4 ^8 j+ `6 ]6 C" [
sudo apt full-upgrade -y
0 j/ T( c5 i; y, n& d: usudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
* a) U" | s! }' Y( p/ ibzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
( E& [' r! j0 b5 k- wgit gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
" }& t+ a8 J5 I% k8 I" y9 ^libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \9 y. g( q( u0 E: H3 Q
mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \& _6 `9 S3 S3 |
libpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \vim wget xmlto xxd zlib1g-dev
4 D, ]! I6 q; Q
/ ]2 n0 U8 V) B5 D+ }* q. D( |, p2,下载源代码打开科学上网工具,最好全局!以下源码三选一下载,也可以使用其他团队的源码!
5 Z+ ?% V( v/ D: t0 U
z+ c' I& ^, W+ u5 `git clone https://github.com/openwrt/openwrt 官方版本! ]1 [: g, f! Y$ P% i, p( P& c/ l
git clone https://github.com/coolsnowwolf/lede lede版本
2 g5 V! Y- l# ggit clone -b 22.03 --single-branch https://github.com/Lienol/openwrt lienol版本- p0 l( P% A7 u0 U; m
cd openwrt 切换到文件目录9 l5 N% _' ~. R. o( l, S" c5 `* C
2 E+ t8 y2 Z$ V2 d* q- K
如需指定openwrt版本,可以使用以下命令
/ @! o/ s$ k# N6 ]0 n+ M' L
4 V$ p4 K+ R* _* W4 zgit tag 查看稳定版,回车键拉到最低,按Q结束!
; C& G: K. g* B! t+ O4 [' M* pgit checkout v22.03.3 指定版本,红色部分位版本号
8 n1 l( j( n: C S; y0 [9 j. e \/ B3 r; o6 T' M2 y5 c
3,添加插件或主题
, F6 M" k' F, i* n1 b( k" a
# V: C# j6 p; y1 [% @8 v打开openwrt文件夹,找到feeds.conf.default文件打开,添加到最下面!
( d# ^ [7 w6 Y' M; Y" Z0 z6 A
" H3 d6 M8 C3 w2 o+ \% p6 Esrc-git amlogic https://github.com/ophub/luci-app-amlogic 电视盒子必须添加
: v) |% N7 q. I% `src-git alist https://github.com/sbwml/luci-app-alist Alist插件
& }' p& n; v; n* A5 q$ dsrc-git passwall_packages https://github.com/xiaorouji/openwrt-passwall.git;packages6 [9 G2 ~$ g$ o( O( o
src-git passwall_luci https://github.com/xiaorouji/openwrt-passwall.git;luci
( i/ J4 V" g& D0 {src-git kenzo https://github.com/kenzok8/openwrt-packages
, h, K" Z7 Q3 z) j% q. rsrc-git argonnew https://github.com/jerrykuku/luci-theme-argon.git;main 主题9 X0 _5 W8 @5 }& H! J
- Y u2 Z, y, `* J! l0 _9 f
4,更新源码) U3 Q! [, Q2 i/ E, S; \4 f
/ g! w1 ?% u; s& ?$ e' B( j./scripts/feeds update -a 更新源码
P Q D7 |8 C) w: Z./scripts/feeds install -a 拷贝源码
& _3 o. q" h+ |9 t3 Y8 `; i
2 M5 K/ _% n; @% |- k5,定制openwrt系统
2 s; V$ q( t1 ~7 B
r& b: {+ G8 U: J. K( Dmake menuconfig 打开openwrt配置面板; J& t* N! l& F
———————————————————————————————————
) J3 p$ r, c5 b( P2 m, E, e( M#必须设置项目(CPU架构,镜像文件格式,)
( Q( f$ t: E3 p8 |- g" b' T' ?7 J& a8 D' v: H4 s$ T6 ~$ X
Target System -> QEMU ARM Virtual Machine (注意:这是电视盒子 x96 max+)( G% t4 }, t/ U3 Z
Subtarget -> QEMU ARMv8 Virtual Machine (cortex-a53) 3 d; X9 w$ J0 U( m! Q/ C$ X
Target Profile -> Default
/ ^* O* R G1 }Target Images -> tar.gz* I9 W/ E( Y, r# H+ ^. }- u
& K# a+ w `' z/ Q) A* HCPU架构查询表:点击此处6 G* p$ W% L- d; x, S5 ^/ Q
9 j# _, o3 k3 G
*** 必选软件包(基础依赖包,仅保证打出的包可以写入EMMC,可以在EMMC上在线升级,不包含具体的应用):
4 [! P% |: ~. K, A2 V8 F
& m2 H& r: J4 M E6 |Languages -> Perl2 S) ^8 B( E: ]; K
-> perl-http-date& P+ a# {/ _2 `) t5 C
-> perlbase-file8 y$ l+ X1 S p1 f; Q2 d
-> perlbase-getopt1 R( P- K8 t- U+ u; Y
-> perlbase-time5 _( O% h# J; v! T
-> perlbase-unicode, p* L2 u- I; j, k6 @; {
-> perlbase-utf8
# h- h; x1 _1 S9 Y$ @+ P6 D- z- _1 C! m; d4 R
Utilities -> Compression -> bsdtar 或 p7zip(非官方源)、pigz
- R3 F8 R) h" k. _$ R -> Disc -> blkid、fdisk、lsblk、parted. q7 c$ V& M$ P4 V
-> Filesystem -> attr 、btrfs-progs(Build with zstd support)、chattr、dosfstools、e2fsprogs、f2fs-tools、f2fsck、lsattr、mkf2fs、xfs-fsck、xfs-mkfs
5 J' E7 m; O' C' K5 P -> Shells -> bash: ~" n) w# z" X$ ?; p* q
-> gawk、getopt、losetup、tar、uuidgen C) s' v; k6 q# ?
$ f( `# K3 s1 J D& S' {4 ?*** Wifi基础包,打出的包可支持博通SDIO无线模块,Firmware不用选,因为打包源码中已经包含了来自Armbian的firmware,会自动覆盖openwrt rootfs中已有的firmware
5 n0 M' ?- c! K0 S3 d# _% O% F2 h; _3 H0 J0 ^* Z% V
Kernel modules -> Wireless Drivers -> kmod-brcmfmac(SDIO): t( x! y8 w$ _7 j8 N2 @( W
-> kmod-brcmutil
' b$ V! d/ N+ T( R -> kmod-cfg80211
1 R% y" [2 P* D/ Q$ J- W -> kmod-mac80211
! i3 M3 z2 R2 _& q6 `. U+ d0 \0 y; q) F -> USB Support -> kmod-usb-net-asix
* b; k' K; [5 L& ^8 u9 T -> kmod-usb-net-asix-ax88179
- `' e: \1 a; | -> kmod-usb2
; y3 Y' W6 r2 p& k: \8 C -> kmod-usb3; H% n& ~# T( i& U0 V* I* |
红色为选填,如果你需要!USB3.0转千兆网卡(型号:亚信asix-ax88179)则必选!
& N' s0 `+ j9 F8 }' G4 }! V1 ]
9 ?' R' U9 H" a2 G! qNetwork -> WirelessAPD -> hostapd-common
! H5 ^# M! y, E) U; R- i- l -> wpa-cli+ e" X( U- K( ]1 {8 ?! w
-> wpad-basic
) j0 }& ?! z: K( \9 y( j -> iw
7 f/ z1 I9 Y' \! o" ?3 C/ @7 q. l
; { N3 Y7 n+ ^( L*** 插件和主题,语言设置选项,根据需求设置,为了减少编译失败的概率,除了必要的晶晨插件,其他都不要安装,主题也是。可以编译成功后单独编译插件在安装。
; e5 X) ^. w' D. T$ h3 e& M3 g+ W
. o1 n0 g' w; Z0 k! p* ~3 ?; }, j6 Y. w- p
LUCI -> 2.Modules -> Translations -> Chinese simplified 简体中文 自选!
: A8 e2 g# f' x5 X( y+ E -> 3.Applications -> luci-app-amlogic 晶晨插件,电视盒子必选!
4 |7 [8 ]. ?5 Z -> 4. Themes 尽量不要安装,不然容易后台面板进不去!1 f; E& L+ O: l2 H. H9 }! l: m9 |
: Z% u2 I( K0 d8 p8 d+ e0 Q6 k
######如果需要重新配置##########
+ ?1 ?' \6 C- r. j& n5 A5 |
% r$ V# ^2 Z# N9 b' E% H% x7 p方法:使用命令1 Y# N+ H, p+ F+ v
. A9 k$ u3 Y% `6 X7 T
rm -rf ./tmp && rm -rf .config) l$ q: Q' w9 P) [
make menuconfig
! V: K5 q( Z1 \7 q' \4 _7 H% G) ymake V=s -j$(nproc)- `7 z0 O! f$ X. Y% L
; ?; K* Y7 y& ^% D+ ?
6,下载 dl 库,编译固件 (-j 后面是线程数)3 e# f5 K: O$ H' Q
- _' [7 {1 V1 U V/ o. W. N
make -j8 download V=s 下载dl库,V=s 显示任务详细情况
2 T$ X% w% x+ @( mmake V=s -j4 4代表线程,根据个人实际情况调整( s9 v6 h/ r1 q/ U+ ]1 F
- V% D/ l2 J9 z3 c& `, p5 w$ Z
如果编译失败,可以执行以下命令:" V4 r* M3 [) P' S
5 b; w. f5 y$ L
make clean 删除编译目录/bin和/build_dir目录中的文件* z5 F6 c# C1 J, ~+ T8 F
make dirclean 除了删除编译目录之外还删除编译工具目录,删除/bin和/build_dir目录的中的文件(make clean)以及/staging_dir、/toolchain、/tmp和/logs中的文件,一般在更换CPU架构的情况下才操作。
( f! S' T6 S6 A2 q' B
, o1 E& @( M6 l" r7,下载编译压缩包, h) e; L5 K. f% c+ a# p
5 ?4 T3 U3 g" @1 O8 v- k编译完成后输出路径:home/用户名/openwrt/bin/targets,下载到本地电脑,需要通过SSH远程登录进行下载。ubuntu默认是没开通SSH登录,所以我们需要进行开通。
4 E+ {; _+ E# Z$ r g; X7 l7 m, |5 D+ h) ?- v
开通SSH登录方法:7 U" B w+ @: {: b1 [, a2 t
) |; y9 d B1 {( c
1,必须切换成为root用户% X( ]8 M2 p6 T. N, z
sudo -i
: v% R3 U) W+ G7 y3 q; A( p) F2,先更新软件列表和更新软件/ X. u N: Q9 J; G
sudo apt-get update
8 ]& H) {& E0 p, h3,先更新软件列表和更新软件. K+ M% G1 c8 O q
sudo apt-get upgrade
/ K( ?7 Z7 J* R. g4,安装ssh5 M3 G* _+ w i3 o8 \
apt-get install ssh
$ {$ b% _9 } v5,启动ssh服务
9 [# m3 O3 F5 b( C0 ~" Lsudo /etc/init.d/ssh start
/ c/ V3 }# p2 |* [8 L3 G. n6,检查是否有ssh环境9 x+ t Y( W4 C0 V$ v8 n" }; w
ps -e | grep ssh
9 R3 G5 a7 S O/ I
1 S* ~5 O2 o$ x/ R+ m9 _6 Jubuntu开通root登录SSH权限
! {+ E" N2 w$ I8 f' m5 _- R3 S l9 ~
1, 使用普通用户登录后切换root
' v. n+ K3 L+ qsudo -i O$ e( o: g/ O4 A9 X" E
2,创建root管理员密码3 J3 X* {3 X" u' d/ G$ j
passwd root
6 u0 F/ u9 }8 ]$ O: `' q3,开启root登录
' {; ]! _& { h' q: T$ Nsudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config
7 Q# H" Y9 t8 E: h% o4 g4,开启密码验证* P4 S+ i) x I: N: u
sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config6 c- t# ^: a8 L$ c& |( V4 |" X H
5,重启ssh服务
* [5 [- v" Z: J5 ]5 l; Iservice sshd restart
1 N4 b8 |/ w. u5 E, f! n& i0 m6,检查是否有ssh环境
- X* O& r. N! u% Jps -e | grep ssh
: _1 X7 y! d: `+ O8 t+ E+ h, r& h% u" L" Y5 ]) ~
# @) O- d- }! i% p- A
2 T/ X# W1 x$ \# ?* J+ s2 J# n1 K. H- {3 Z9 S. R w
6 e t; e& X7 s5 e7 ]" d1 c, O2 Y" ]5 m5 G" a+ ~0 n ]
0 y* J' @. b6 G% ?从零开始:自己编译OpenWrt系统!一个视频就够了!简单易懂,毫无保留,VMware虚拟机安装,Ubuntu系统配置、openwrt源码下载,配置!保姆级教程!(电视盒子X96 Max+编译固件) (syjn.blogspot.com)8 ?2 R6 p H R7 X, n: S# i5 a
7 S1 l+ p$ {" Z+ j5 M9 x/ `$ @
|