这一期和大家来分享一下,如何打造属于自己的openwrt系统固件,其实编译真的很简单,只需要按照我的方法来操作,保证你也可以成功编译。9 Q g9 h( n* a$ O
' M9 r+ C9 p% O" \
1 b: l" h" C1 Y0 X4 |& _" }/ U& q开始前我们先来解决一些网友的疑问?为什么网上那么多系统,我们还要自己编译呢?其中有二点原因:
& }( \. S7 R7 Q/ S8 m4 k/ z( Q
第一点:从安全上考虑,毕竟我们的网络数据,都是要通过openwrt系统,要是有人动手脚,在系统里放了后门,那么我们的隐私就没有保障了。8 n1 D; Y" j7 K+ K# R. }
% D& ^% ?/ y. i7 ^6 q0 I2 ^' U
第二点:从稳定性上考虑,因为别人分享的固件,是用来适配他自己的设备,就算你的设备和他的型号一样,不同批次的设备,硬件都很有可能不一样,特别是像外贸电视盒子,这种问题很常见。我们使用opengwrt,就是为了实现一些想要的功能,自己编译,能很好的使插件和系统更好的兼容,同时想要什么功能就集成什么插件,不过度的集成插件,确保系统的稳定。
`# e* @" o* [ I2 P* {( r0 I5 I( W8 X
大家来看看,这是我自己编译的固件,在x96 max+的电视盒上运行,面对高温的天气,到目前已经运行2个多月了,从来没断过网,非常的稳定。接下来手把手教大家怎么编译openwrt系统,时间有点长,大家耐心看完,你也一定能编译出属于自己的系统。5 [' n7 X1 J; e- _/ W) i
& b9 W, v7 n" Q( ^4 c
9 \* t% Y& D$ Z7 {* J( Y5 B4 w& ]/ p% [* k8 ]* W4 @
编译openwrt系统固件,主要分为三大步骤:
, l: ?6 l0 g+ B% f2 B9 j" y* X/ b
第一步:安装虚拟机 |& ?* q9 Z3 Z
第二步:安装ubuntu 22.04系统2 Y; R/ z5 M: s
第三步:编译openwrt9 k; |0 g# t* t% r) c
视频安装教程 ( h7 F& O9 S7 p6 t4 R
# a' m1 }9 Y( ?# b/ \+ E 8 P f9 \: u9 t3 e. }8 i, b
图文安装教程 & W" C, ^) M: M4 G
9 U6 Y% i7 j$ y+ _一,准备工具:9 K; k3 Z. q0 \+ [0 W1 P' H2 V) k
" ]* G4 t$ L! s/ I F" \5 U+ s
1,虚拟机软件VMware! t+ V2 v/ r* M7 g
2,ubuntu-22.04.2系统. A6 M( C( I8 G; ?* Q
3,SSH登录工具 finalshell
; l3 _/ J4 R( w# O4,科学上网工具(自备)
' `6 P5 ~$ a8 q8 e( B4 I9 c5 `" t( d( X6 M8 g; }- i9 K8 V1 x) q
配套工具:点击下载, s7 z( ~; o7 k8 @4 m0 _
3 i- Q8 D) ~; i8 k7 i. U2 G
二,环境搭建:
! `. P6 ]& S, w/ L2 H% H
. Y) W; [1 g+ L% a& N1,安装好虚拟机,打开软件,点击创建新的虚拟机,选择典型下一步,安装程序光盘映像,点击下一步,这过程比较简单就不多做介绍,注意网卡需要设置成桥接模式。
2 l3 Q! ?1 B" e, J$ D2,安装ubuntu系sudo apt update -y统,点击新建虚拟机,选择默认进行安装!
$ l: |" o3 ?) [6 C
8 c$ h) D& v! K2 x/ z9 ]- v, T9 g三,编译固件
/ W3 E' B# L" ]1 f7 e1 j0 `
) U; l# v7 y9 ^0 u2 N- M+ o' T" h注意:' n' L; n d& F: M B8 A
1,不要用 root 用户进行编译2 _2 m/ Y8 c, V: V- I
2,国内用户编译前最好准备好梯子6 q. T5 S. Y0 l& X& s6 \
3,默认登陆IP 192.168.1.1 密码 password4 m1 Z9 ` z* Q! i; ?, t8 u7 B
—————————————————————————————————————# _ v/ V! O2 K2 I1 T5 Z
1,安装编译依赖; B' }' _9 L \8 N2 j5 G5 u+ E
5 {/ R: h. F9 _6 g5 I0 z
sudo apt update -y2 ?; ~0 ^3 {" q- G j
sudo apt full-upgrade -y6 |0 X* k% e. f
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \7 Z X/ g7 o$ m+ B6 G/ T: M4 c
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
4 f" I! p; f4 X8 N |! o. @git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \/ s! M3 e# @+ C7 O) ?% g
libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \/ Y! Z7 p' t5 X
mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \8 @0 c* q7 k# N
libpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \vim wget xmlto xxd zlib1g-dev) V9 ~' N0 P3 `& Y8 q
7 s8 c- H5 g+ f+ o) P
2,下载源代码打开科学上网工具,最好全局!以下源码三选一下载,也可以使用其他团队的源码!$ \8 I. `$ \$ \) ~. ]; D
& p5 ^5 L( `3 k* ogit clone https://github.com/openwrt/openwrt 官方版本
& m: ?5 C: P! Z; W' M" dgit clone https://github.com/coolsnowwolf/lede lede版本
% W$ y E- ~. C8 T0 B7 agit clone -b 22.03 --single-branch https://github.com/Lienol/openwrt lienol版本( g. g4 z" N+ `; s: y4 M' ?2 `
cd openwrt 切换到文件目录
5 g) N4 h8 a! K( n1 f) l# z6 \$ N& r' A. p/ s$ C/ n
如需指定openwrt版本,可以使用以下命令$ H/ j6 n6 l' g; M4 D$ y' j
5 U. p: O3 o& c7 z! P/ e3 U
git tag 查看稳定版,回车键拉到最低,按Q结束!
9 X7 C }; U" S" l" @: Ngit checkout v22.03.3 指定版本,红色部分位版本号
5 M) g0 ]: L9 [, r* r% h. p$ E" N* F
$ n# p" [1 b- f( V: A3,添加插件或主题5 f% t6 B! O: W# V$ t4 W6 ]. {' o4 C
+ V+ L: r6 N, X9 t' G9 {/ m
打开openwrt文件夹,找到feeds.conf.default文件打开,添加到最下面!
5 Z1 w6 y' d0 A r* R* r& \- H7 c0 D3 g% i, c8 H
src-git amlogic https://github.com/ophub/luci-app-amlogic 电视盒子必须添加$ \' `. T) V5 x) N* r- H
src-git alist https://github.com/sbwml/luci-app-alist Alist插件
9 r1 O+ h' Z7 @2 K& Xsrc-git passwall_packages https://github.com/xiaorouji/openwrt-passwall.git;packages
t+ `1 g; ^: M2 `# |. ksrc-git passwall_luci https://github.com/xiaorouji/openwrt-passwall.git;luci1 [( U( {" ~+ o6 K
src-git kenzo https://github.com/kenzok8/openwrt-packages
( m; K6 q6 G H9 N0 _/ C; _src-git argonnew https://github.com/jerrykuku/luci-theme-argon.git;main 主题
* I; L+ H5 a+ t, I8 ~9 Y: m. Q! E& R) d' D9 ?
4,更新源码
w7 u6 z* H' m6 T8 G1 z; N5 z0 r0 {0 D/ u2 c$ @/ W0 g
./scripts/feeds update -a 更新源码& n w8 J5 C; c! Y% J$ E
./scripts/feeds install -a 拷贝源码
. g- F' a* o: t" }( x& a4 ^/ {
. r+ f3 g' M q3 [" n. n, v' \5,定制openwrt系统- U3 w( L# E* ?7 ~/ }- N
6 E+ L: H4 i( e2 Q# I2 E3 O
make menuconfig 打开openwrt配置面板4 v; ?/ W" F2 W+ E& Q. W( c
———————————————————————————————————
9 i5 i1 v" K3 y4 R8 _#必须设置项目(CPU架构,镜像文件格式,)
! W9 r! x, F( P. Q% c5 }, y: f& c0 I. O; O1 H
Target System -> QEMU ARM Virtual Machine (注意:这是电视盒子 x96 max+)5 a: e4 }1 ]; \$ x
Subtarget -> QEMU ARMv8 Virtual Machine (cortex-a53) 5 W) {# p" I+ e( L: B9 h
Target Profile -> Default
: |) q7 {* R* K P: hTarget Images -> tar.gz9 p3 z" k9 F$ z' R9 N( I ^, I1 X
% x \' B& t4 Y! O' YCPU架构查询表:点击此处
* o9 G, M& |0 T- E! ]4 w
; T5 I1 b" b( H- V( Q0 e% v- c/ A*** 必选软件包(基础依赖包,仅保证打出的包可以写入EMMC,可以在EMMC上在线升级,不包含具体的应用):
( t6 m. q" O% E" g" ^8 ^( u
) N! |9 m' a- P# Z' x; m7 W rLanguages -> Perl
4 U& u# Z; I; C% l4 c7 K -> perl-http-date
% x+ E: q$ H5 n/ Z# Q -> perlbase-file' r* |. H2 U8 q$ B( T& \( e
-> perlbase-getopt" G2 D# C$ W8 {2 j' {
-> perlbase-time
) F0 T' I A8 _: l! Q -> perlbase-unicode7 A/ ^% K; {* d3 B3 E2 ?) l( d
-> perlbase-utf8
& t, y* h" G1 U, l5 J1 N, x V' \5 Y4 h9 |0 [
Utilities -> Compression -> bsdtar 或 p7zip(非官方源)、pigz3 w! Y L/ A8 A% ]. ?; @' c5 w
-> Disc -> blkid、fdisk、lsblk、parted, r7 I* L1 L) D, u2 b8 g' V) r" I6 W
-> Filesystem -> attr 、btrfs-progs(Build with zstd support)、chattr、dosfstools、e2fsprogs、f2fs-tools、f2fsck、lsattr、mkf2fs、xfs-fsck、xfs-mkfs6 k9 @# h t% d( ^% \6 W8 L
-> Shells -> bash% Z+ P. L: N# o& n F/ a4 O. U/ U
-> gawk、getopt、losetup、tar、uuidgen7 o# A' U" Y0 }9 Q
F* H/ q- T) ~9 k
*** Wifi基础包,打出的包可支持博通SDIO无线模块,Firmware不用选,因为打包源码中已经包含了来自Armbian的firmware,会自动覆盖openwrt rootfs中已有的firmware; D2 d/ V/ U( g! P; t
0 J2 q/ P. Y& y3 ~8 Q' f* `" ZKernel modules -> Wireless Drivers -> kmod-brcmfmac(SDIO)
5 c8 K+ t% X& Q- c: q% u; n -> kmod-brcmutil. u! U/ h' M( c( }& u
-> kmod-cfg80211
* z3 a; Q. Q% d! [' u4 n -> kmod-mac80211
' S- S0 A' o# r: r* ^, D -> USB Support -> kmod-usb-net-asix, h$ \8 W7 g4 o, F( R5 j/ i
-> kmod-usb-net-asix-ax88179
7 N! Z8 l7 `7 F, C: k -> kmod-usb26 o, C9 C Q+ _+ _/ U9 [
-> kmod-usb36 \: p. D5 R* J6 l; I! Y0 v
红色为选填,如果你需要!USB3.0转千兆网卡(型号:亚信asix-ax88179)则必选!& h! S( w5 T5 P" W- Q
$ X. F, M1 R2 u b1 i X, P. WNetwork -> WirelessAPD -> hostapd-common
" P3 ?% i' w: g' c; B0 ] -> wpa-cli/ Z" M" o( e4 X# `8 Z! l, Z7 z
-> wpad-basic
" R6 ~- q1 E) u `2 ~ -> iw
; v7 ?. \% F% G/ ]8 i3 `6 L) y2 Q" o! }8 {% ~
*** 插件和主题,语言设置选项,根据需求设置,为了减少编译失败的概率,除了必要的晶晨插件,其他都不要安装,主题也是。可以编译成功后单独编译插件在安装。; b/ V( M$ }, ~
+ \2 s4 t+ c$ H
' W5 N' F& |- c' ILUCI -> 2.Modules -> Translations -> Chinese simplified 简体中文 自选!
4 `; Q$ y; r5 G( b d' k -> 3.Applications -> luci-app-amlogic 晶晨插件,电视盒子必选!" M' v0 K' \3 s, [ J
-> 4. Themes 尽量不要安装,不然容易后台面板进不去!% V, J/ E" v p8 X6 x6 g: T; x+ @4 `
) i7 k" K8 c6 q [5 R! }) m6 M1 r
######如果需要重新配置##########' q& }! O7 U1 T% Y: }2 ]
: {7 E1 u9 q* v
方法:使用命令' P6 t; M" f. h4 {1 J' c$ t; |( t. @
4 K% f2 a2 z7 v/ lrm -rf ./tmp && rm -rf .config
! u! Z/ ^+ P3 R! v7 v imake menuconfig( P1 v- Z* D5 y# w, M
make V=s -j$(nproc)
. f5 _" B$ ?6 V8 r4 N. r( Y$ b+ |% ]) y. x% ^( }( u& \! y
6,下载 dl 库,编译固件 (-j 后面是线程数)- ~( v9 G3 d* m" L# M
, O% g& y. a3 U0 {make -j8 download V=s 下载dl库,V=s 显示任务详细情况+ i* c' ~1 @/ I
make V=s -j4 4代表线程,根据个人实际情况调整5 y9 l1 K8 L) d4 _! r8 o4 a" y
/ C+ q. z, s! [* G如果编译失败,可以执行以下命令:
( e: ~8 m' ~0 a/ ~# O( r7 \# b# C# u
make clean 删除编译目录/bin和/build_dir目录中的文件
* y% ^' ~# f6 Imake dirclean 除了删除编译目录之外还删除编译工具目录,删除/bin和/build_dir目录的中的文件(make clean)以及/staging_dir、/toolchain、/tmp和/logs中的文件,一般在更换CPU架构的情况下才操作。
% [. l4 H; B& I/ S7 Q6 z' j5 F1 d5 s; i& g7 l2 c& N3 k/ @
7,下载编译压缩包
! O, _: `/ ?6 I; N/ t* @6 K( T3 ]* X% ~3 |. L
编译完成后输出路径:home/用户名/openwrt/bin/targets,下载到本地电脑,需要通过SSH远程登录进行下载。ubuntu默认是没开通SSH登录,所以我们需要进行开通。) z( B/ r( Y- y* S5 P
/ z) i0 }* G: m+ C& `
开通SSH登录方法:
9 N7 E% g& \9 ]/ @- [8 F8 y* c R b9 l2 v% d R1 Z3 C
1,必须切换成为root用户# P" B* b% B6 s. }1 q$ {
sudo -i
?: V/ B | e7 F' k; Q- y2,先更新软件列表和更新软件
! K1 y- {5 i, J0 _5 n# \sudo apt-get update, B$ p) V# v! X2 }( K& L: s, A
3,先更新软件列表和更新软件
3 X; n! p; ~. y" `7 _sudo apt-get upgrade
, e6 Z- u) r0 s( z4 {2 t: @8 ^4,安装ssh l/ L5 ?5 {! r# ]: {+ [
apt-get install ssh
* T |3 v6 J8 b$ G& h5,启动ssh服务
4 K2 R" W! W/ T( J; _sudo /etc/init.d/ssh start- i# w8 Z( i2 S$ V( Y5 [- Q
6,检查是否有ssh环境
6 O6 H% G) r8 Ips -e | grep ssh E/ _! M$ Q" b" b( s1 a& T/ c
1 ~7 F4 M( `( S. \% b) }
ubuntu开通root登录SSH权限
5 x: z7 X. s# ^& Y" A, o
% |# A# y" P0 p" T+ \: r1, 使用普通用户登录后切换root
3 s3 H8 Z! M4 J4 Usudo -i
9 T' k6 J( e: Y0 X# l7 V' x2,创建root管理员密码
. L) b8 x. p3 ~/ s2 `4 Z" Cpasswd root. q9 Z* t! {% U
3,开启root登录
/ r& D4 [) ]9 _* ?# ]2 \sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config
& m/ n+ h9 t/ i. \: w4,开启密码验证+ S# T! a8 T$ I
sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config G4 Z5 J! Z6 _( w, I
5,重启ssh服务
: r9 R2 t, ^, ~/ z* ]service sshd restart
0 G7 |& |8 E- m# B2 I3 H6,检查是否有ssh环境- H: ?1 \# h. ?( i/ q* |* q
ps -e | grep ssh3 D! C6 M, `, G6 z+ g% i# A
, s( ^$ P# [+ w8 R
9 P9 {; H7 V. s' c, S. m1 v$ ?/ ^
" ]! C6 y I2 m5 `- A
( ]" G3 A4 R: B1 p$ s, x, C- T
9 `4 s* b* s" J% `5 x# A2 L2 M& f$ @0 ]1 c4 x. q: d6 g! l; F
4 T6 z/ j r2 A
从零开始:自己编译OpenWrt系统!一个视频就够了!简单易懂,毫无保留,VMware虚拟机安装,Ubuntu系统配置、openwrt源码下载,配置!保姆级教程!(电视盒子X96 Max+编译固件) (syjn.blogspot.com)
\" J! {! m# ?0 }8 L3 ^
6 f+ d/ K. I! J7 |; B1 q% a+ f |