这一期和大家来分享一下,如何打造属于自己的openwrt系统固件,其实编译真的很简单,只需要按照我的方法来操作,保证你也可以成功编译。, @( O- {: A7 y5 a
8 t; v+ i P' r5 ~
8 ?: s) K) Y8 ^4 e& N Q, X
开始前我们先来解决一些网友的疑问?为什么网上那么多系统,我们还要自己编译呢?其中有二点原因:( ^6 r _& t8 m, H2 n7 R" ]
/ [* [' t) v/ ~+ t# k$ ]% D2 \第一点:从安全上考虑,毕竟我们的网络数据,都是要通过openwrt系统,要是有人动手脚,在系统里放了后门,那么我们的隐私就没有保障了。
3 D* A" z- R% ?; G0 o
& A& F" v8 Y8 \$ x5 l& B第二点:从稳定性上考虑,因为别人分享的固件,是用来适配他自己的设备,就算你的设备和他的型号一样,不同批次的设备,硬件都很有可能不一样,特别是像外贸电视盒子,这种问题很常见。我们使用opengwrt,就是为了实现一些想要的功能,自己编译,能很好的使插件和系统更好的兼容,同时想要什么功能就集成什么插件,不过度的集成插件,确保系统的稳定。
: T; K5 u( o) Y
" {* \# g5 S! Q, } 大家来看看,这是我自己编译的固件,在x96 max+的电视盒上运行,面对高温的天气,到目前已经运行2个多月了,从来没断过网,非常的稳定。接下来手把手教大家怎么编译openwrt系统,时间有点长,大家耐心看完,你也一定能编译出属于自己的系统。* S- X6 o5 o9 l# h3 K9 X
: P! E9 f+ ]3 Q: ^

; V" q+ f" E) ]' J$ S% T0 e& e" z9 v
编译openwrt系统固件,主要分为三大步骤:
3 \+ L5 s$ g( z5 a- k9 Z. H# k' _ D- i2 R3 Y# P( ]& V9 Q ]; S' M
第一步:安装虚拟机$ h- l( x8 U% r7 I# M& g! R: o6 H
第二步:安装ubuntu 22.04系统
0 \1 @- L0 b/ ]8 M第三步:编译openwrt+ F* X1 F6 C2 T
视频安装教程 ' c' G: w4 [; Q
z- e7 X, d: ^; x4 a3 j. Y1 Y( m
' H) `- Q8 U+ l' T$ M7 q
图文安装教程 3 @0 G( x/ M \3 g( K9 r1 Z4 U
8 q7 ^2 p) w! S% M, l9 Y
一,准备工具:, J- h9 F1 v+ f6 V7 f: ]+ b6 i
$ e" H* Z6 M' R' B5 o
1,虚拟机软件VMware8 W) m% a% d8 ?/ R
2,ubuntu-22.04.2系统2 n S+ d% L5 s
3,SSH登录工具 finalshell- ?+ ^1 J# O9 R6 |6 ^( r* h
4,科学上网工具(自备)
6 a: k* s0 H0 t9 h! w" P ~
% ]4 m- m8 k) v* N% `3 _配套工具:点击下载9 P1 X' L. N5 g' Q+ O- ~4 h5 y! O
" N6 h7 B, [8 m0 s
二,环境搭建:3 ~# G) [7 D% f, @
9 q3 y5 |/ M( G4 O: k/ z1,安装好虚拟机,打开软件,点击创建新的虚拟机,选择典型下一步,安装程序光盘映像,点击下一步,这过程比较简单就不多做介绍,注意网卡需要设置成桥接模式。
# @' ?& Q+ v$ Y. q- }6 {8 b4 K2,安装ubuntu系sudo apt update -y统,点击新建虚拟机,选择默认进行安装!
$ R0 R$ H) B; b
0 f9 M" h" e( @0 x8 X3 ^0 U三,编译固件
7 T4 t R) q% e
- J+ j$ m6 _" i9 k, W, E注意:9 X+ G5 K, Y+ j5 |6 W( [7 i+ V
1,不要用 root 用户进行编译
( Q" K+ o2 ]. U5 Q- `9 ]2,国内用户编译前最好准备好梯子) S( m7 \6 V. S0 r* [5 p
3,默认登陆IP 192.168.1.1 密码 password) J% s% ]7 u! c, a. \
—————————————————————————————————————$ _& @7 C# R O; a
1,安装编译依赖
6 h. v4 g; |4 |8 W: ^
6 E+ I. z5 Q+ |4 Gsudo apt update -y* E0 ?$ `" x( J7 L2 f, o! f
sudo apt full-upgrade -y: N8 T6 O+ [ S- H/ L
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
+ j* Q* `( N% q0 pbzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \, _0 ?1 G& Q4 l4 H8 C, c" f
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
0 G' e7 s5 ]1 f, Glibmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
0 M+ n' k; \0 t; [0 V+ O5 u; k+ ?mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \ F7 e& L. R/ @
libpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \vim wget xmlto xxd zlib1g-dev, ]' B4 `7 ^9 k
9 V' i) v- _7 T: E+ B7 \- a# |# I( |
2,下载源代码打开科学上网工具,最好全局!以下源码三选一下载,也可以使用其他团队的源码!
, ^% ?2 M7 Y/ s
/ a' S1 U" H! agit clone https://github.com/openwrt/openwrt 官方版本
- t ?& b5 s/ W G3 L# J0 N5 m0 u Cgit clone https://github.com/coolsnowwolf/lede lede版本
1 D( o/ }7 t4 Ugit clone -b 22.03 --single-branch https://github.com/Lienol/openwrt lienol版本' {* S5 E- D/ @# ]! r. A
cd openwrt 切换到文件目录( s4 i7 d/ k" G( Q& B3 ^' ]
6 L0 B! \( r1 w( ~
如需指定openwrt版本,可以使用以下命令
" {7 x. z( u* x& Y3 P3 R! }+ J* E
git tag 查看稳定版,回车键拉到最低,按Q结束!
8 s: H& E! D/ v0 pgit checkout v22.03.3 指定版本,红色部分位版本号8 s: n: ^1 i# x" C) V
2 q; a) d! {# \ X
3,添加插件或主题. R2 V. [, [$ x1 v, ?
i3 K6 z1 i) M8 }3 z! U) m) H打开openwrt文件夹,找到feeds.conf.default文件打开,添加到最下面!
9 x: f, M! _' s" X7 m4 ~7 J, `& e8 q% D! k( M$ ~6 e
src-git amlogic https://github.com/ophub/luci-app-amlogic 电视盒子必须添加
5 R! K$ f2 e6 osrc-git alist https://github.com/sbwml/luci-app-alist Alist插件; B. g# ]$ G- F5 F* r3 m, G% d
src-git passwall_packages https://github.com/xiaorouji/openwrt-passwall.git;packages" C6 n' g4 Y5 g8 b
src-git passwall_luci https://github.com/xiaorouji/openwrt-passwall.git;luci% z" u' |* B0 `
src-git kenzo https://github.com/kenzok8/openwrt-packages
6 T2 Z; f! F* D1 i' ]src-git argonnew https://github.com/jerrykuku/luci-theme-argon.git;main 主题
6 r& p3 m( \/ ?, A) L; S: V' ]1 P& b$ h" V
4,更新源码7 h& G3 x% t4 s
4 c: m; U k7 j3 q./scripts/feeds update -a 更新源码
& \: w# Q* P4 J( b./scripts/feeds install -a 拷贝源码# C% L v2 Z7 @ f9 Y9 H/ \
, t9 S1 F) V/ v/ }( B
5,定制openwrt系统% k) b5 O" H |& J6 a s) x
9 k: N6 K7 k/ @( T
make menuconfig 打开openwrt配置面板! [. L/ N: L2 c, A
———————————————————————————————————
: B/ I7 @- ~0 ] v; T#必须设置项目(CPU架构,镜像文件格式,)
- [2 M+ [: V" g1 j- E/ p! o4 s! T8 E
" L& k2 Q% Z; x: |% tTarget System -> QEMU ARM Virtual Machine (注意:这是电视盒子 x96 max+)
" W: w$ X$ N1 y$ j, e6 WSubtarget -> QEMU ARMv8 Virtual Machine (cortex-a53) 5 Q. ^ Y, }7 p( F3 E/ f0 ^7 q
Target Profile -> Default
) ]$ V7 ~% |! M0 H6 }Target Images -> tar.gz
7 r/ t" o& U1 X
, l, O2 h% R E" }& u1 ?( fCPU架构查询表:点击此处
: u& P* z# u V; @! ]0 D
1 v8 N! c2 U0 J& D1 t*** 必选软件包(基础依赖包,仅保证打出的包可以写入EMMC,可以在EMMC上在线升级,不包含具体的应用):1 S9 y5 M: d6 h9 u. g* t
* m; r% e& b6 o- [6 sLanguages -> Perl: m% b% E. }6 }, m1 W, ~7 y
-> perl-http-date$ v8 R' u2 E! N' z0 ~
-> perlbase-file
+ S+ V( l J t$ l -> perlbase-getopt J6 \2 M3 k- q3 l* g1 k
-> perlbase-time& q1 }- j8 D2 F$ s8 f& Y+ T* J' A
-> perlbase-unicode' a1 {& a: c8 K2 n' b6 a$ }8 x
-> perlbase-utf8
% ]6 G+ k' H; ^4 c7 X t" B% }. k8 H( d2 e2 \9 y/ J
Utilities -> Compression -> bsdtar 或 p7zip(非官方源)、pigz% i8 Y8 @5 H W4 w
-> Disc -> blkid、fdisk、lsblk、parted: u1 c; F! e9 d* O. O4 d
-> Filesystem -> attr 、btrfs-progs(Build with zstd support)、chattr、dosfstools、e2fsprogs、f2fs-tools、f2fsck、lsattr、mkf2fs、xfs-fsck、xfs-mkfs
7 M7 ?( T; J% v& F' S -> Shells -> bash
& I z% e. N# Y( L# r -> gawk、getopt、losetup、tar、uuidgen, A0 I/ E8 U5 W) K( D
* c9 i v1 P' M. ?9 s*** Wifi基础包,打出的包可支持博通SDIO无线模块,Firmware不用选,因为打包源码中已经包含了来自Armbian的firmware,会自动覆盖openwrt rootfs中已有的firmware) x% |" T6 u9 }1 e
/ J, x, y9 s1 h* Y. v% ?
Kernel modules -> Wireless Drivers -> kmod-brcmfmac(SDIO)
* \ V& I, s C4 J -> kmod-brcmutil
8 A- x5 x* i' W' a, g. W -> kmod-cfg80211! c6 c* l/ l* e
-> kmod-mac80211
1 j% k# q. J9 x- h -> USB Support -> kmod-usb-net-asix7 E3 R! ?2 f9 U
-> kmod-usb-net-asix-ax88179
6 {; T* r: q5 t8 W$ g' n, H$ J -> kmod-usb2$ Z4 N# \& V# n6 }, @
-> kmod-usb3
. A# S0 k/ M" G; ~: w红色为选填,如果你需要!USB3.0转千兆网卡(型号:亚信asix-ax88179)则必选!! G$ U, I& x+ E. M
* N) B7 H$ |$ x; P8 c( r+ YNetwork -> WirelessAPD -> hostapd-common
- q2 W; @8 H3 f% ]4 m" P8 f! @9 e -> wpa-cli, Y9 Z7 Y0 o2 I/ u
-> wpad-basic
0 G4 p3 z2 H" |- \- |8 _4 | -> iw
) Q: o ?2 i1 i4 a
' }' k( K8 {8 C! w5 R/ `5 ]' D*** 插件和主题,语言设置选项,根据需求设置,为了减少编译失败的概率,除了必要的晶晨插件,其他都不要安装,主题也是。可以编译成功后单独编译插件在安装。
: n+ V, ^7 H# |6 V
. o. w& x1 ]% t& M1 \) [ m3 W2 `9 J5 r: Z% r
LUCI -> 2.Modules -> Translations -> Chinese simplified 简体中文 自选!# I8 D7 y) ^ z E6 m7 E9 \
-> 3.Applications -> luci-app-amlogic 晶晨插件,电视盒子必选!
) K8 j C2 E; c0 g3 L* h -> 4. Themes 尽量不要安装,不然容易后台面板进不去!% N6 e) p6 T* n! Q9 m+ M
% G) s& s7 S1 R. x j. s, T6 p######如果需要重新配置##########6 p' M$ o# ~1 e$ i# @
4 { H* n8 B1 j( e8 A5 L
方法:使用命令$ E% Y O* J" f
" }# A; [6 L# _rm -rf ./tmp && rm -rf .config
6 E# @9 w/ }- b$ jmake menuconfig$ X3 L2 m6 r0 _2 T( U5 a( J9 j; }
make V=s -j$(nproc)
) z, V+ H$ R: r6 {/ z* x5 g$ ~0 B" \
3 M. ], b( B( r) q; z6,下载 dl 库,编译固件 (-j 后面是线程数)
& X( ~; v/ [' K# Y$ `, s) L* u3 z+ g1 z& f1 v2 A
make -j8 download V=s 下载dl库,V=s 显示任务详细情况8 L: R; K0 h6 n
make V=s -j4 4代表线程,根据个人实际情况调整1 ^7 F% H N' I: G" B% _
3 Y5 ~3 x& Z* H$ U1 E0 O如果编译失败,可以执行以下命令:9 k# N$ t6 {! S3 n6 Q( ^' D
! r ?* x( S2 K' J7 k
make clean 删除编译目录/bin和/build_dir目录中的文件
0 y6 q2 ]. e" f3 h, M7 }make dirclean 除了删除编译目录之外还删除编译工具目录,删除/bin和/build_dir目录的中的文件(make clean)以及/staging_dir、/toolchain、/tmp和/logs中的文件,一般在更换CPU架构的情况下才操作。
3 }* I7 I3 j# g. {& j+ b; G( Q. D: Q ?9 e/ z
7,下载编译压缩包; l! o. b4 d1 E) i0 F9 U+ k) e
# _3 h+ O' ?- @6 }, @编译完成后输出路径:home/用户名/openwrt/bin/targets,下载到本地电脑,需要通过SSH远程登录进行下载。ubuntu默认是没开通SSH登录,所以我们需要进行开通。. s- r! b) y# m1 Z# Q8 `8 F
/ b: `+ F4 F/ |! w+ R6 L4 p开通SSH登录方法:' X* c5 e: Y' t3 G1 K7 u7 J* s
1 t/ E- R7 T! [ {0 Q j1 B
1,必须切换成为root用户
, J8 U& W/ }+ O6 P; s; rsudo -i( k8 B$ V7 ~' a0 m& Z$ J5 `6 D
2,先更新软件列表和更新软件% V, D) T4 O: h$ I
sudo apt-get update
0 y8 q$ g, `7 Q; O% W8 s2 B; {3,先更新软件列表和更新软件
0 e$ m2 {! U& |; Usudo apt-get upgrade% C4 _: p9 X5 Q' r/ f% M
4,安装ssh' k7 M+ f' v; ?' p+ @2 Y
apt-get install ssh
& s! o* [) C9 K. w- [! r5,启动ssh服务; v6 J2 z" c4 t" G7 A! q
sudo /etc/init.d/ssh start
+ {# [4 G6 K4 S) l# c6,检查是否有ssh环境
& x. x5 m! n7 u6 f$ Ips -e | grep ssh
* ], [0 e+ R9 X% @. C2 ]1 N
! I9 \5 a4 o5 _: R @4 o6 i& C8 Wubuntu开通root登录SSH权限' D0 @* w- W, [ E5 ?
( P4 m, N) s7 B3 Y
1, 使用普通用户登录后切换root. F, w9 G% N6 b/ u/ f: O
sudo -i
+ |2 ?' b4 L- w0 p1 j: L4 r3 j& n2,创建root管理员密码
; c5 Q5 s: A! h8 {* [passwd root, \& c3 X/ K' E9 O' a4 b: |% y
3,开启root登录
( s5 ?1 Z2 p$ p2 h2 T5 psudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config
$ C5 Y+ U1 z0 z6 h4,开启密码验证. o) y3 d5 T* \5 Z: n8 W
sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config/ s8 J5 {. M# e0 l" m% O) I
5,重启ssh服务% m$ T1 K+ q( ?" V, B
service sshd restart& e7 T' p x1 e9 \
6,检查是否有ssh环境
, {, E. i0 u- B/ ]2 gps -e | grep ssh8 g0 e! e: p4 [6 s2 w
! Q& d9 @7 s) }5 S8 m) D/ P2 N/ ]+ V8 ^
' M6 l t7 z0 Q# h
+ b& m2 C/ a0 {) p$ q7 _' c
: b3 M) c5 t) X1 a5 A- m9 g
8 d6 L" X+ Q8 Q$ u2 n& ]& e1 i0 y5 H( d; u& q9 {* d* C. A# p
从零开始:自己编译OpenWrt系统!一个视频就够了!简单易懂,毫无保留,VMware虚拟机安装,Ubuntu系统配置、openwrt源码下载,配置!保姆级教程!(电视盒子X96 Max+编译固件) (syjn.blogspot.com)
3 f& \0 b+ A7 G# J) {
7 r7 y$ Y7 J E |