这一期和大家来分享一下,如何打造属于自己的openwrt系统固件,其实编译真的很简单,只需要按照我的方法来操作,保证你也可以成功编译。
2 \9 ~& o' X, N0 ?- B7 Y" d% z* x. x @ K6 r1 W6 C& k! j
8 }4 m/ b; a2 K4 d
开始前我们先来解决一些网友的疑问?为什么网上那么多系统,我们还要自己编译呢?其中有二点原因:7 C+ n8 d6 }/ D" _
( X& F+ ?' W; E' l9 u
第一点:从安全上考虑,毕竟我们的网络数据,都是要通过openwrt系统,要是有人动手脚,在系统里放了后门,那么我们的隐私就没有保障了。' N5 U- S+ O, s( j8 P8 o1 _' ^" K
! [7 q2 g) N: W第二点:从稳定性上考虑,因为别人分享的固件,是用来适配他自己的设备,就算你的设备和他的型号一样,不同批次的设备,硬件都很有可能不一样,特别是像外贸电视盒子,这种问题很常见。我们使用opengwrt,就是为了实现一些想要的功能,自己编译,能很好的使插件和系统更好的兼容,同时想要什么功能就集成什么插件,不过度的集成插件,确保系统的稳定。
. C: j+ T+ j5 o1 [
5 a% A* a: k: ^* s. y `$ N 大家来看看,这是我自己编译的固件,在x96 max+的电视盒上运行,面对高温的天气,到目前已经运行2个多月了,从来没断过网,非常的稳定。接下来手把手教大家怎么编译openwrt系统,时间有点长,大家耐心看完,你也一定能编译出属于自己的系统。
; T( P6 T8 Z) B1 N
( e+ |% M9 ], l1 K' m/ T; ]5 j' Q ! {) B$ n2 \. e: |8 ~
/ J/ t3 q/ \8 L: \编译openwrt系统固件,主要分为三大步骤:: c' m$ o. F8 g& g) x" O4 c0 G7 R
, m7 ~& j9 {% `0 E4 ^7 w& V$ R, V0 h
第一步:安装虚拟机
3 e$ n! b9 b+ Y( e% d第二步:安装ubuntu 22.04系统: }* q$ I4 K I+ S1 X5 a2 D
第三步:编译openwrt
- v8 E" m0 f$ S. r9 s# }9 G$ d$ P视频安装教程 " a( e. e7 C4 w( O
, |- O. M: u7 o% o
0 G/ Q1 m1 o s% j0 ^0 }1 M, {
图文安装教程 3 h# p/ P M# O9 }% r- o
4 B( ^, ?+ P v+ l- A3 }
一,准备工具:
$ U" z$ ^0 f+ X) \- @0 ~7 Q. E5 p* ~
+ z! z1 _( R# C3 A1,虚拟机软件VMware
; |0 v7 J: Z5 F9 [8 x2,ubuntu-22.04.2系统* B+ l# Y- K' ?' c
3,SSH登录工具 finalshell3 \7 O( f. q5 o! g
4,科学上网工具(自备)
* a. ?, a1 ~# i0 ?( @% g: w3 ?) G2 |( @- j% ]2 D A) p
配套工具:点击下载
0 c/ N8 m5 A0 ^% U; A3 j' {% j% |2 Z5 {) ?4 G- L$ C8 O( }
二,环境搭建:
3 H5 a0 |$ k5 U+ C
B, o \0 o1 b0 P$ G; s0 N8 N/ ]0 e1,安装好虚拟机,打开软件,点击创建新的虚拟机,选择典型下一步,安装程序光盘映像,点击下一步,这过程比较简单就不多做介绍,注意网卡需要设置成桥接模式。, z+ B/ }7 ~$ D) n4 c; S
2,安装ubuntu系sudo apt update -y统,点击新建虚拟机,选择默认进行安装!; B$ v! o' `0 Q W+ m
$ u& M& D: Z% v; i三,编译固件
. |9 S% J) |# Z9 n
K1 M4 d. D, j3 }! _* G0 T注意:
( h" Y" s) c- Z1 [$ k* P1,不要用 root 用户进行编译2 C3 f( C+ X# W9 q% {( {( B1 k
2,国内用户编译前最好准备好梯子% _" z* e0 n5 D' ?1 C& @% r: q
3,默认登陆IP 192.168.1.1 密码 password
% }. A" B2 {0 c/ g3 }. u—————————————————————————————————————) \4 }, V6 S) w5 ]
1,安装编译依赖4 k! P# l1 [/ }" t2 \% l( W
) Z- T/ n4 M6 o0 ]
sudo apt update -y
0 k6 t% J1 y; | V8 ysudo apt full-upgrade -y+ z. [. e% |9 g T; R# T, s
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \" e0 H# B4 | Y+ t) y% z- }3 s
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \: ^/ m* C% t F8 m: v
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
( b2 x+ n% j# O: i+ Nlibmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \$ J/ w7 j& Y1 P' S' D
mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \
7 Q4 r0 r7 M& vlibpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \vim wget xmlto xxd zlib1g-dev
) t$ l2 `/ S5 ~8 p [5 o, [+ e5 w; v+ d; K1 F0 \
2,下载源代码打开科学上网工具,最好全局!以下源码三选一下载,也可以使用其他团队的源码!. ?* q9 j' m: |/ w
7 N- F& ? O+ I9 T3 y0 q% \5 d
git clone https://github.com/openwrt/openwrt 官方版本& j7 m# I/ h+ p1 A
git clone https://github.com/coolsnowwolf/lede lede版本
; ^# J4 T, K" ]7 mgit clone -b 22.03 --single-branch https://github.com/Lienol/openwrt lienol版本
8 u' d. l1 ]2 b! rcd openwrt 切换到文件目录3 q& S2 h4 y1 a7 z
' S2 M1 o- g/ y+ F如需指定openwrt版本,可以使用以下命令
. L: h2 F2 ^4 n& Q5 g3 U1 O- V, v2 x* M1 i; l8 b+ q8 [
git tag 查看稳定版,回车键拉到最低,按Q结束!
; a( i, C( K" dgit checkout v22.03.3 指定版本,红色部分位版本号 X! T. Z j9 F
: x# a! M1 w) |7 G$ E3,添加插件或主题
; A' V4 U) O7 C' U. o, {, d* q! K6 O% B( N
打开openwrt文件夹,找到feeds.conf.default文件打开,添加到最下面!
8 H+ ]! G; i! q. b: V6 l# B& U/ ?/ E+ z# g
src-git amlogic https://github.com/ophub/luci-app-amlogic 电视盒子必须添加1 M( o0 v) \" E2 N" d& r) O, K+ u
src-git alist https://github.com/sbwml/luci-app-alist Alist插件
, x) t. i" N: {1 @: m6 `% Nsrc-git passwall_packages https://github.com/xiaorouji/openwrt-passwall.git;packages
2 k& c# w) r/ I5 g4 V4 Fsrc-git passwall_luci https://github.com/xiaorouji/openwrt-passwall.git;luci0 Y0 ?. u# o! R
src-git kenzo https://github.com/kenzok8/openwrt-packages: X8 e) a. L i' o8 z, J: H) D: y$ V
src-git argonnew https://github.com/jerrykuku/luci-theme-argon.git;main 主题
. e; y% l7 v) Q' G. a' b; g0 d/ W2 r: s0 g2 T# B% p" T
4,更新源码
5 l4 l- k `6 i! n9 R6 y) y
( |1 n/ M- x7 |4 z6 _. m. I7 S2 g./scripts/feeds update -a 更新源码
, |5 G' m* L; \- p./scripts/feeds install -a 拷贝源码
. L/ g& Y2 m; R3 J4 L# U- \+ o3 _5 G' M; Z# d, k
5,定制openwrt系统& i, l% l; {6 f
$ t z h( O0 b7 g* j
make menuconfig 打开openwrt配置面板
9 i$ B3 y! j/ I% h0 I e———————————————————————————————————
! u* b- @8 c7 n! |1 n#必须设置项目(CPU架构,镜像文件格式,)
3 H! G* X* i" k5 r; d
1 W; l) b! c2 I& g2 H& n) ^0 G' HTarget System -> QEMU ARM Virtual Machine (注意:这是电视盒子 x96 max+); Y8 N* k& u& o# A) O+ q2 z
Subtarget -> QEMU ARMv8 Virtual Machine (cortex-a53)
9 K, R" n' |2 L5 {% ^Target Profile -> Default
6 W; O$ a. B8 t) ?' eTarget Images -> tar.gz' U' n, R) v+ ? Z+ g2 j4 Z9 ?
$ C4 C% m& [5 eCPU架构查询表:点击此处
* E5 G# W* B( U3 v" Y1 }: O3 H
$ B$ @. {: r5 j: I9 @*** 必选软件包(基础依赖包,仅保证打出的包可以写入EMMC,可以在EMMC上在线升级,不包含具体的应用):
6 X/ P2 K6 r) u8 x3 H& t
$ L3 K6 p5 z' r0 M1 A zLanguages -> Perl
# ^ G, Q L' p -> perl-http-date! L, w& S0 f8 o. [6 e5 W
-> perlbase-file% H# s; F1 v7 g* r; x
-> perlbase-getopt
9 x1 i: T0 x$ p/ b4 u -> perlbase-time
6 w& b3 }, [7 X+ x ] -> perlbase-unicode! C8 `( v3 T" c, b+ w& i
-> perlbase-utf8% a/ j; t, y$ R
' h' N' y* T+ r: u# u
Utilities -> Compression -> bsdtar 或 p7zip(非官方源)、pigz
3 x v- Q/ n B7 t7 ^1 W8 }9 C -> Disc -> blkid、fdisk、lsblk、parted; E; q6 ^ J( G, e( ~9 p# [0 x
-> Filesystem -> attr 、btrfs-progs(Build with zstd support)、chattr、dosfstools、e2fsprogs、f2fs-tools、f2fsck、lsattr、mkf2fs、xfs-fsck、xfs-mkfs
% P X. v; L/ M) q8 r, ]) c) x -> Shells -> bash
% [5 I' j" p5 e' H E9 a7 S -> gawk、getopt、losetup、tar、uuidgen2 ?( w' P0 V! F! s$ W% K
& \) Z9 [7 P4 W0 v2 i" E*** Wifi基础包,打出的包可支持博通SDIO无线模块,Firmware不用选,因为打包源码中已经包含了来自Armbian的firmware,会自动覆盖openwrt rootfs中已有的firmware# ^( N! Y* C0 _, q0 U9 g0 O/ N
9 y/ V: }% r, i9 q9 ?) o" m& {8 zKernel modules -> Wireless Drivers -> kmod-brcmfmac(SDIO)
$ o; h! ]4 w7 T- x/ p- E7 e& K$ {8 b -> kmod-brcmutil* f* j0 W9 Q4 [/ E5 d% W2 {, i* f/ G
-> kmod-cfg80211
' A# s5 q' J0 E% {% T5 k' @ -> kmod-mac80211* L2 m4 j& G0 r/ B
-> USB Support -> kmod-usb-net-asix
( u K" |( N8 w. f8 @6 w -> kmod-usb-net-asix-ax88179$ k% `$ Z- |8 S* y3 I& Y6 }! w
-> kmod-usb2
3 y$ y F9 @! |9 z* C+ U -> kmod-usb32 W2 w8 L: O# D
红色为选填,如果你需要!USB3.0转千兆网卡(型号:亚信asix-ax88179)则必选!8 D8 ~0 K0 C" g3 Y. G
6 U& R1 @+ I5 u2 l( j% q. ENetwork -> WirelessAPD -> hostapd-common
\/ \; ]# `/ \* s' x5 Y) v4 \( P -> wpa-cli- b+ i3 u; u: [" k6 |" M2 n
-> wpad-basic
$ _" v' {* Y: F4 @- j8 h- I -> iw
4 {& `) Q1 b# m( G& e3 }5 j. d7 o) [+ {
*** 插件和主题,语言设置选项,根据需求设置,为了减少编译失败的概率,除了必要的晶晨插件,其他都不要安装,主题也是。可以编译成功后单独编译插件在安装。4 x% }, q/ l. y: l. t* Y: Y
) ^$ d1 K1 z1 D8 R8 n: V
7 k0 z1 M$ ~( R! \2 D* Y
LUCI -> 2.Modules -> Translations -> Chinese simplified 简体中文 自选!) \ _, A. [' c5 P3 n
-> 3.Applications -> luci-app-amlogic 晶晨插件,电视盒子必选!
* `) I9 a+ ]4 a; D2 m0 E1 a -> 4. Themes 尽量不要安装,不然容易后台面板进不去!
' ^. r) K, J3 y! `2 Q7 i' v$ l# Z6 n2 R/ F: H$ S7 y
######如果需要重新配置##########3 p! [; \2 |6 E: v
y$ m1 r; [& w, ^" Z' y; G# F方法:使用命令
: a6 G) G, Q% O& _& E' H4 V$ _
4 c y8 i- I# ?6 Crm -rf ./tmp && rm -rf .config7 M3 N* X- S8 ?! g" _
make menuconfig
8 r! ~4 S* k, W" O2 W G: _make V=s -j$(nproc)4 C v. [- V) t8 k% q
' B* ~; B. e1 |; \2 Y0 C
6,下载 dl 库,编译固件 (-j 后面是线程数)
! f* B! ^- L! p0 y6 M6 s% p6 d+ E3 {
make -j8 download V=s 下载dl库,V=s 显示任务详细情况
) L* W2 l) U Fmake V=s -j4 4代表线程,根据个人实际情况调整) |$ i- `* \* D" B2 F0 x
* D0 e/ P- X2 ^如果编译失败,可以执行以下命令:- ~3 ]) o* F; Z# m/ e) X, M* o8 z
( l8 l- d6 N7 ~6 T4 c4 {2 D( q5 Y
make clean 删除编译目录/bin和/build_dir目录中的文件
/ N5 C+ a+ I; d7 R5 r5 g# Z+ Mmake dirclean 除了删除编译目录之外还删除编译工具目录,删除/bin和/build_dir目录的中的文件(make clean)以及/staging_dir、/toolchain、/tmp和/logs中的文件,一般在更换CPU架构的情况下才操作。' }9 ~) Q6 A% [& P. v0 K
: t+ |# j: J7 I/ t: `: O, t4 d7,下载编译压缩包3 }6 z) {7 g, m- x! q3 g8 o# E
$ v1 i" {1 z- |& j5 p( o
编译完成后输出路径:home/用户名/openwrt/bin/targets,下载到本地电脑,需要通过SSH远程登录进行下载。ubuntu默认是没开通SSH登录,所以我们需要进行开通。
0 j) R1 t$ w5 \6 }- s$ V% g6 h# K/ Z& j* V) ?/ x5 N3 L& @/ Z
开通SSH登录方法:
7 i' c* B6 R; A l* h8 N2 ]. y2 H) Y
1,必须切换成为root用户
: s+ c: m* e7 Y8 V7 l; U. c2 [sudo -i
, W$ H8 _. ?. N: ]) p5 \0 m2,先更新软件列表和更新软件5 g0 j1 x1 v# x
sudo apt-get update
6 |) n+ f! ?$ j' t5 Q; q, A$ l3,先更新软件列表和更新软件5 ^* f8 z5 z( F5 o8 t7 U
sudo apt-get upgrade
* X$ K- s* R, U! i% K/ z+ Z; q4,安装ssh% _6 i1 w* N o) E
apt-get install ssh
& m. c. _% v+ T4 E% ~" E! z7 G5,启动ssh服务
0 B$ H* o8 g/ m, M- Qsudo /etc/init.d/ssh start
! ?) \/ K: `! F6,检查是否有ssh环境
2 W8 K/ ?' G6 _( cps -e | grep ssh
( x" s( S. Z7 G; k! \" J
! b. b) W) n- U5 W4 P) \ubuntu开通root登录SSH权限
; Q/ m( O* I9 \' {0 X
, ^! }2 \2 c) M3 N0 R, j! n1, 使用普通用户登录后切换root, I M+ x" O6 }7 `
sudo -i
+ O$ o% B" d9 A, v1 ]2,创建root管理员密码1 h8 Z* o+ E j% D
passwd root
) W# C1 @9 Z# x* S) V* D3,开启root登录- _9 e# Z, t' ]: q- t
sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config9 a- S' d$ ?4 M( H# O6 R. `+ } [2 R
4,开启密码验证
+ G. v/ b0 l" [) `$ f8 Zsudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config+ B. O( J" `9 W' o1 w) S
5,重启ssh服务. A2 N% {4 q4 w( d# C: p6 \
service sshd restart4 l9 W# ~ q$ }, O
6,检查是否有ssh环境9 p3 _3 z/ `0 a" Q
ps -e | grep ssh9 d& |4 K. ^" Q: G
# Q# D+ U3 B3 ~; R
! {% I/ {6 o* y3 o* l* u
: U1 S& x: R h4 j6 j8 N8 Q5 A1 [) ?1 `8 u5 T5 A
/ o% L& `$ D9 ~ b
0 i2 B5 o5 i) W+ q3 {, _% i+ |7 C
. D c" P4 J; i v1 F从零开始:自己编译OpenWrt系统!一个视频就够了!简单易懂,毫无保留,VMware虚拟机安装,Ubuntu系统配置、openwrt源码下载,配置!保姆级教程!(电视盒子X96 Max+编译固件) (syjn.blogspot.com), G- G: u$ I7 B7 e1 o" o
, z4 N! Y% l# T" N7 n0 v* ] |