找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3411|回复: 0

openwrt编译DIY

[复制链接]
发表于 2016-3-28 00:44:45 | 显示全部楼层 |阅读模式
   这一期和大家来分享一下,如何打造属于自己的openwrt系统固件,其实编译真的很简单,只需要按照我的方法来操作,保证你也可以成功编译。% Y; K  p9 \5 c, K% m
, [7 Y% ^2 Y9 b: j  c

! V1 A& G4 B  H* q* _! E& I, x% f开始前我们先来解决一些网友的疑问?为什么网上那么多系统,我们还要自己编译呢?其中有二点原因:
) r% Z& ?2 h8 m' F/ u
5 L& l$ |) J9 D/ R( C% O% \第一点:从安全上考虑,毕竟我们的网络数据,都是要通过openwrt系统,要是有人动手脚,在系统里放了后门,那么我们的隐私就没有保障了。
- |1 a; w  ^) w8 Z# c/ c$ h/ e8 F/ A" w- G9 g! h! E
第二点:从稳定性上考虑,因为别人分享的固件,是用来适配他自己的设备,就算你的设备和他的型号一样,不同批次的设备,硬件都很有可能不一样,特别是像外贸电视盒子,这种问题很常见。我们使用opengwrt,就是为了实现一些想要的功能,自己编译,能很好的使插件和系统更好的兼容,同时想要什么功能就集成什么插件,不过度的集成插件,确保系统的稳定。
( ^& F# B% p1 {% W
* X# M  [) m+ Y; B  D$ a      大家来看看,这是我自己编译的固件,在x96 max+的电视盒上运行,面对高温的天气,到目前已经运行2个多月了,从来没断过网,非常的稳定。接下来手把手教大家怎么编译openwrt系统,时间有点长,大家耐心看完,你也一定能编译出属于自己的系统。% E- R4 r8 x" X" z1 X2 O* a$ Y

/ d' F, w9 O. `- M) Q, D2 r, `1 M5 H: k7 Y' R2 l' n
9 e! V3 }& ]# H1 D+ G' T6 m- f: r/ d3 T
编译openwrt系统固件,主要分为三大步骤:
" Q/ h" R( n: ]4 M; F8 z
+ _* {! [9 I  M- j3 @0 \第一步:安装虚拟机

1 W/ v/ N( U7 z5 P1 l! w$ k第二步:安装ubuntu 22.04系统* c( [( {& E9 y% q6 U
第三步:编译openwrt
" [" ?5 T2 b) i" M# n
视频安装教程

. i1 e: [' \1 C$ `( J* c. W3 _% g
! P0 i) x* O0 G
) G; n( k4 C# j, c
图文安装教程

2 K! l( S5 D6 q; W# \- l$ K7 K
$ ]* o$ @( V2 Q; f0 n一,准备工具:: [) o1 A9 Z0 V! |6 I: [3 I

( T! d6 W7 x  w* r) H1,虚拟机软件VMware! o- t8 F  z4 |; A
2,ubuntu-22.04.2系统* v2 S( V5 V9 J: f8 v+ w
3,SSH登录工具 finalshell$ ^% u1 o! g; G
4,科学上网工具(自备)* g6 [5 K; Q" D: j1 F8 E
8 j; v% @% _1 @/ ~" C
配套工具:点击下载9 ]' Q; v5 T, T  ]
0 Y1 ]6 V/ H8 m- @- [( o7 Y! }
二,环境搭建:
" V( Y" k9 r* ^3 T3 k6 C1 e+ w* n# ]$ `/ k# V
1,安装好虚拟机,打开软件,点击创建新的虚拟机,选择典型下一步,安装程序光盘映像,点击下一步,这过程比较简单就不多做介绍,注意网卡需要设置成桥接模式。
5 z1 J: [4 h- g) T  o2,安装ubuntu系sudo apt update -y统,点击新建虚拟机,选择默认进行安装!. f. I+ y- @! U1 S

* U+ \4 a0 E, i! q* W8 {* H三,编译固件8 b' x. K( M- B# c0 b& K

9 V+ x5 \; o1 y, \) \注意:5 c  G  W$ m$ l- `5 Q' A3 e; [7 L
1,不要用 root 用户进行编译. }9 S9 |9 ~" p' K7 i& I$ c% j. S9 a: _
2,国内用户编译前最好准备好梯子/ t' p! L2 b, I7 w- D  u$ ~
3,默认登陆IP 192.168.1.1 密码 password  W) y% u% d2 V% E, R' B
—————————————————————————————————————. d! `/ |# r" O9 u9 Z
1,安装编译依赖
% Z7 J; A; T& f' i; D
/ ]$ o" M9 d( f2 H) l5 W5 {+ qsudo apt update -y
& }6 ]! x9 y: M2 Ksudo apt full-upgrade -y# _" t5 Q+ d; P: T' f' _8 R
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \$ ^' A. R# h) Q& y
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \3 D+ ]/ B* N* C3 f6 l
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \+ v  X) o( N0 I7 J
libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
) U+ F& q' ^* M. S4 |  |9 Smkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \; Z8 c$ x( y1 O- n. D
libpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \vim wget xmlto xxd zlib1g-dev
+ \$ g9 B* G! h
5 f& N0 g' _+ P- `2,下载源代码打开科学上网工具,最好全局!以下源码三选一下载,也可以使用其他团队的源码!
' d9 A( f3 }; p, o: u* I% i! Z7 J
git clone https://github.com/openwrt/openwrt                官方版本
2 E- L4 p! e5 e. D  \* g( Tgit clone https://github.com/coolsnowwolf/lede              lede版本
0 W) K% _4 k: ^$ h' |git clone -b 22.03 --single-branch https://github.com/Lienol/openwrt      lienol版本
5 N! l  w0 S; vcd openwrt                        切换到文件目录
$ g2 M, `% w* w! e! X1 c: c+ C" A% S7 h" \8 m+ N- {6 J% [
如需指定openwrt版本,可以使用以下命令4 N5 e; c6 H4 a) i$ X. E
' f1 P, C* y: D* w
git tag                                              查看稳定版,回车键拉到最低,按Q结束!
* _" @8 F5 o, L' K- F. s$ V7 n0 {/ }git checkout v22.03.3                      指定版本,红色部分位版本号
, |! k5 w$ ?; P9 e& N4 h+ _
* r- Y5 [* k% v4 F3,添加插件或主题; S. P) ^' z3 n, T0 b5 Y1 f6 h0 Q  S0 _

! }3 b. z# Z$ B' T打开openwrt文件夹,找到feeds.conf.default文件打开,添加到最下面!1 n) ]& U3 k; V: {) p1 c$ ~, p

) t7 ~0 D, t! _7 Q. U) B  bsrc-git amlogic https://github.com/ophub/luci-app-amlogic        电视盒子必须添加
$ V. ]4 G2 ^/ M8 P0 msrc-git alist https://github.com/sbwml/luci-app-alist                     Alist插件
% [9 V1 S& r+ Z. F% o* \8 `$ ksrc-git passwall_packages https://github.com/xiaorouji/openwrt-passwall.git;packages& \2 S6 f( X2 j  |; c+ K# ]
src-git passwall_luci https://github.com/xiaorouji/openwrt-passwall.git;luci
1 @& e7 _5 S+ U" Vsrc-git kenzo https://github.com/kenzok8/openwrt-packages) S( E6 {) g9 D7 b4 t
src-git argonnew https://github.com/jerrykuku/luci-theme-argon.git;main      主题* `. x8 O# e5 `9 W" ]
% r( g  p; v0 h3 x: M. B% P: J
4,更新源码
5 f  ?8 i7 \8 V/ `% E9 a! L& k* R( ^! v& b
./scripts/feeds update -a                更新源码
1 G1 F6 O2 r' ~7 S- w9 K./scripts/feeds install -a                  拷贝源码
2 ?  `; y1 B+ |6 t) h6 l& g  h' A( N$ M/ c, f
5,定制openwrt系统
" d: J1 x# m7 V7 p0 w6 b2 _: G! _
; @, P  b/ u9 ~- dmake menuconfig 打开openwrt配置面板
  K! I- C: H( X. j0 D5 J———————————————————————————————————
! N: k6 t) a& x% S$ S" A#必须设置项目(CPU架构,镜像文件格式,)9 h8 j' B' I1 z3 p- N
  ~; v- w! l- C1 S% S' g' Z. `
Target System -> QEMU ARM Virtual Machine     (注意:这是电视盒子 x96 max+). |' O: I# ]. N8 z, W$ t
Subtarget -> QEMU ARMv8 Virtual Machine (cortex-a53)   - O: }/ Z* B8 ?) {# X
Target Profile -> Default6 k1 ^6 H$ m2 }* S. x( x2 `# T5 u
Target Images -> tar.gz
* H" y- I5 s. S: _+ p' Q& \' s: R2 o' K- O: \
CPU架构查询表:点击此处( O' Q# I" t0 M. s8 Q

! Y8 j" H6 Y" h*** 必选软件包(基础依赖包,仅保证打出的包可以写入EMMC,可以在EMMC上在线升级,不包含具体的应用):8 Z/ ~+ r* `3 k# d( b% f( r% T

5 |; R7 F/ u- R; f3 mLanguages -> Perl0 N0 R9 }7 D4 q# R
                            -> perl-http-date# C0 `; u7 O, \& \5 [# R( W7 @. @
                            -> perlbase-file5 C1 t+ v9 N  K( D
                            -> perlbase-getopt
! o6 o2 F# s: W4 K% A                           -> perlbase-time
1 v1 i5 n* i$ o& V% n9 T* {                           -> perlbase-unicode% E+ N8 p2 @6 o
                           -> perlbase-utf80 P1 e+ c4 M* {

) c+ }0 P- {7 TUtilities -> Compression -> bsdtar 或 p7zip(非官方源)、pigz
4 I- o) r! X5 W; I9 @             -> Disc -> blkid、fdisk、lsblk、parted. v  V% b. [3 C# M! Y
             -> Filesystem -> attr 、btrfs-progs(Build with zstd support)、chattr、dosfstools、e2fsprogs、f2fs-tools、f2fsck、lsattr、mkf2fs、xfs-fsck、xfs-mkfs, f2 G+ J8 C$ U
             -> Shells -> bash
  Y" Q2 G. V! ~6 x) x0 L/ g            -> gawk、getopt、losetup、tar、uuidgen
" B/ Q, R, z  \5 L0 g* Q8 @8 j& R( h- |/ e2 E. O: i  @( E4 ]) V/ x2 j+ }% h
*** Wifi基础包,打出的包可支持博通SDIO无线模块,Firmware不用选,因为打包源码中已经包含了来自Armbian的firmware,会自动覆盖openwrt rootfs中已有的firmware
2 S! m; o3 N, e  i1 i: @
. \: M8 W$ I1 M; ]3 cKernel modules -> Wireless Drivers -> kmod-brcmfmac(SDIO)
; c! m; N7 u8 _6 T                         -> kmod-brcmutil/ r9 h! \2 |; |
                         -> kmod-cfg80211
0 K2 l2 k+ \+ h& q7 t1 r                         -> kmod-mac80211) Y0 j$ G( [' c- k* p. @1 d: Q; ?" ?: a
                       -> USB Support -> kmod-usb-net-asix% Q; D; l" M( P
                                                 -> kmod-usb-net-asix-ax88179
6 S* @4 z: X( U! a! y                                                 -> kmod-usb2' i- e/ P9 N# W2 y  G  M
                                                 -> kmod-usb32 D* k9 m- @5 h1 e+ n
红色为选填,如果你需要!USB3.0转千兆网卡(型号:亚信asix-ax88179)则必选!0 w; q3 S5 _' [9 v- @- m# r* J! M
8 t' s7 q" s  |8 m
Network -> WirelessAPD -> hostapd-common( u9 ^/ w, q  D
                                        -> wpa-cli
9 f  c1 G- D" X2 ^7 }6 B7 \! L- q                                        -> wpad-basic$ @* ^9 M( b) o' [- y
              -> iw  q- @6 i: }0 `: q) _# r  G

* E. W/ P+ }$ O7 G3 F7 n*** 插件和主题,语言设置选项,根据需求设置,为了减少编译失败的概率,除了必要的晶晨插件,其他都不要安装,主题也是。可以编译成功后单独编译插件在安装。
) a: n1 u& u' @) ~9 U% j( [
: F3 Z: N6 M* ~  S) O
& N3 J% o$ }! w9 D. m+ k8 X; S9 N- lLUCI -> 2.Modules -> Translations -> Chinese simplified                简体中文 自选!7 t/ q4 j6 J3 l4 f/ s9 \5 o
        -> 3.Applications -> luci-app-amlogic                      晶晨插件,电视盒子必选!
0 z1 o5 V. \' c5 V5 M7 P* f        -> 4. Themes                                      尽量不要安装,不然容易后台面板进不去!
+ y( @, V+ ?9 Q+ E5 W" l  p$ [$ K1 e/ |3 F) d
######如果需要重新配置##########/ h0 `6 A* C4 M9 j! l. J

! b+ d9 M7 \$ E7 r方法:使用命令9 v9 g; i4 N6 H& {/ a; h

* J8 `- n; l" i$ n9 {  G" @* orm -rf ./tmp && rm -rf .config
% g' e9 N8 t  f. e8 B( h; ^" ?make menuconfig( V' P7 h2 N8 |. x
make V=s -j$(nproc)
1 ]! n9 O6 \, \" ?4 f( Y$ E) C7 f% C' q) x" N
6,下载 dl 库,编译固件 (-j 后面是线程数)8 {" s$ G# U' i

# C$ m& e, O7 y/ [& wmake -j8 download V=s                     下载dl库,V=s 显示任务详细情况
% A$ }" ]* t9 C. \make V=s -j4                                      4代表线程,根据个人实际情况调整- B3 s& A, M$ f$ P, I+ z
/ ^6 X7 [, `# l9 U
如果编译失败,可以执行以下命令:: g  W  A! s0 }4 [6 m) i

" y. \1 }$ r7 X4 |make clean               删除编译目录/bin和/build_dir目录中的文件% ~! b! ^1 |+ N7 o6 t
make dirclean          除了删除编译目录之外还删除编译工具目录,删除/bin和/build_dir目录的中的文件(make clean)以及/staging_dir、/toolchain、/tmp和/logs中的文件,一般在更换CPU架构的情况下才操作。
* K6 e8 r4 T( t- H$ c
3 S+ K5 A' F3 b% L3 W) W3 s7,下载编译压缩包+ H7 k# O( N3 {% C
9 j9 |% K, t# e; @; M) ~
编译完成后输出路径:home/用户名/openwrt/bin/targets,下载到本地电脑,需要通过SSH远程登录进行下载。ubuntu默认是没开通SSH登录,所以我们需要进行开通。
5 S: E* {# _$ m8 A* o0 u
7 P" K, a- O9 U0 n" m+ g1 g0 d0 g开通SSH登录方法:1 }% x% h% a$ w6 G1 Z% s5 \3 O4 s* Y

* ^$ i( z( g' U7 r1,必须切换成为root用户
' ~4 G# u4 `- Z7 rsudo -i0 @. X$ E. [/ y# J: D# A# G0 H3 G
2,先更新软件列表和更新软件3 o$ E* I& O. n7 I+ i# H8 `
sudo apt-get update& d* l5 U0 \. X. S" I# _' ]. P
3,先更新软件列表和更新软件
, G  Z( \  N  e2 T4 Ksudo apt-get upgrade( D( ?- N% g# ~" }& Q
4,安装ssh: T) Q8 s4 S2 W- g- i; [
apt-get install ssh0 j* y; T- Y* f' r& b! O9 m
5,启动ssh服务
, D. l1 w+ B! _2 R" ~* s4 ysudo /etc/init.d/ssh start" h- `: C4 v2 F, k' d3 f, W
6,检查是否有ssh环境
2 Z& q/ d% M/ jps -e | grep ssh
! H  a* h! g7 w5 Z- u" K7 }- K4 l0 \: x/ i, V, a. G7 `# S
ubuntu开通root登录SSH权限
9 B. g( m7 Y1 H- E: I( w+ n& }  X, B  L
1, 使用普通用户登录后切换root
) @$ u& B  V: C) psudo -i! o: w& x4 }  ?7 B+ ?* ^( a& J: h
2,创建root管理员密码' k: y! X2 y- R, y
passwd root
; _, f/ V7 e1 ~4 @- T" b: `3,开启root登录' v- a3 _+ }9 u# o+ x
sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config
  z7 D$ d" ?5 d! E5 Q8 q4 M. p4,开启密码验证
% Q3 h' W1 G4 Xsudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config* R8 r2 z+ |+ G
5,重启ssh服务5 s/ G& \" _' w" g4 E9 o: \
service sshd restart
8 q6 X6 C' V. X& j; T4 v" |$ V5 }6,检查是否有ssh环境
" i2 K2 v) {* W- {ps -e | grep ssh
' }# I7 ?8 q0 R/ d, V# I* E5 _6 _7 p* P  q8 d0 |/ D6 F& K

$ N9 {" i# @$ h
7 {5 K: T) c+ A! m" K: r3 G. `- `/ _, I. h$ y2 A/ ^

) T7 d1 h! d  Y
9 M; x8 U# s6 T- l- I. p; R
+ k  L! w" h3 h9 ?8 `. w! P从零开始:自己编译OpenWrt系统!一个视频就够了!简单易懂,毫无保留,VMware虚拟机安装,Ubuntu系统配置、openwrt源码下载,配置!保姆级教程!(电视盒子X96 Max+编译固件) (syjn.blogspot.com)
" x% F5 W& Y9 x# Y) D. r! \& H) b+ M2 e
' f' W" g1 ^0 n( p/ {4 O, y
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|赛格电脑 华强北 电脑城 南山赛格 龙岗电子世界 龙华电脑城 沙井电脑城 松岗电脑城 pc4g.com ( 粤ICP备16039863号 )

GMT+8, 2026-3-7 11:03 , Processed in 0.092161 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表