华强北电脑城 龙岗电子世界 龙华电脑城  凯尔电脑

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3091|回复: 0

openwrt编译DIY

[复制链接]
发表于 2016-3-28 00:44:45 | 显示全部楼层 |阅读模式
   这一期和大家来分享一下,如何打造属于自己的openwrt系统固件,其实编译真的很简单,只需要按照我的方法来操作,保证你也可以成功编译。  w4 R8 _  z8 m5 j$ `

5 A3 Q# Y0 O- j4 s2 D+ D2 D5 d! e, }! g: ^1 J. O+ X& n
开始前我们先来解决一些网友的疑问?为什么网上那么多系统,我们还要自己编译呢?其中有二点原因:
: M( A# ?1 t4 r3 D% ~- N$ Y' C
! c1 e7 o* ~5 f* q( p0 p" F第一点:从安全上考虑,毕竟我们的网络数据,都是要通过openwrt系统,要是有人动手脚,在系统里放了后门,那么我们的隐私就没有保障了。
& ^$ g# p7 ^& B2 v# ]8 s1 x! c2 |6 `. R* j- d. r$ ]1 u" o
第二点:从稳定性上考虑,因为别人分享的固件,是用来适配他自己的设备,就算你的设备和他的型号一样,不同批次的设备,硬件都很有可能不一样,特别是像外贸电视盒子,这种问题很常见。我们使用opengwrt,就是为了实现一些想要的功能,自己编译,能很好的使插件和系统更好的兼容,同时想要什么功能就集成什么插件,不过度的集成插件,确保系统的稳定。
# p6 L3 M' c5 F1 p  W3 S) H$ W; X  W: n8 u7 B  s
      大家来看看,这是我自己编译的固件,在x96 max+的电视盒上运行,面对高温的天气,到目前已经运行2个多月了,从来没断过网,非常的稳定。接下来手把手教大家怎么编译openwrt系统,时间有点长,大家耐心看完,你也一定能编译出属于自己的系统。
, f: s  t* a- @) _
8 j- U2 v; X  u8 z
9 o7 r5 h/ R3 H) Y2 [4 i& W  n$ F' m8 o; w% a+ _) Q0 S5 U! A2 w
编译openwrt系统固件,主要分为三大步骤:
5 [: U7 q2 {% x2 @! X8 h; o
6 l' ?. H  r3 A3 f+ q3 S第一步:安装虚拟机

, O5 @' [- E, A9 f第二步:安装ubuntu 22.04系统$ O+ t: t7 y+ m% Q1 k
第三步:编译openwrt* o8 K. A' @1 }9 l/ A0 \! j, Q
视频安装教程

5 ~$ T) c  J5 \( u0 o, u2 j. g

5 G0 D; P& ^. V/ h$ M( X5 t/ ]

" u8 Y9 b; Z) N, h& }  f* q, k" Y, d
图文安装教程
4 T# w$ }1 Y* v

' T8 \, A& r  N+ P6 f6 I一,准备工具:
6 B+ e/ D% o: c. E. q) `
+ u7 h2 @* x+ Q  R, }4 x1,虚拟机软件VMware
; K" b6 E$ g+ p' t, B$ w( c- |2,ubuntu-22.04.2系统4 d" ]6 `) D3 B; Q+ O/ w$ H. |
3,SSH登录工具 finalshell
. e' Y+ h" X% V: t" V+ R4,科学上网工具(自备)
: n( b9 k$ Y9 L! H$ k3 X& b
+ v1 r* c4 p' |# x1 E( O9 a6 B: D' [配套工具:点击下载) m1 W0 G* U/ ?  k

2 C' p! H% |: a- P/ r# ^. N5 [2 u二,环境搭建:$ E4 G* _. N( F+ s+ S# b
0 c; l( |3 j5 f8 C9 O) `
1,安装好虚拟机,打开软件,点击创建新的虚拟机,选择典型下一步,安装程序光盘映像,点击下一步,这过程比较简单就不多做介绍,注意网卡需要设置成桥接模式。
) `& l2 b+ ]/ u4 p2,安装ubuntu系sudo apt update -y统,点击新建虚拟机,选择默认进行安装!
, }( u+ R* \0 P: N( Y0 S4 T$ A0 Y2 U' K3 x4 n% J6 H$ \7 H
三,编译固件
, i! S/ J) n( N' o9 K, N  Y( f
! E1 d8 P& x7 |2 S  B2 f注意:$ ]8 ^7 t7 |7 @+ S3 e
1,不要用 root 用户进行编译
# {5 g" {% n% q1 a4 T" O$ {$ s2,国内用户编译前最好准备好梯子# @1 A0 V1 u& o* [& ?
3,默认登陆IP 192.168.1.1 密码 password. k0 O* j; D3 B7 {
—————————————————————————————————————
  Y' U" R/ ?+ Z5 N+ v1 d( T1,安装编译依赖1 {7 Q' T/ m7 {3 h4 y6 @5 ?

& E9 Q1 R, V# ]sudo apt update -y
  m5 f! n+ Y. i+ g* g( fsudo apt full-upgrade -y
! t5 Q8 M4 K; N$ D: B% L6 x3 n% U  p% ssudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
7 d( u7 T- X! i- d/ P. Ubzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
' K* j' D# E$ o* j6 ?git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \4 g( P3 w3 O& E9 V7 Q7 I
libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \  A6 \$ A; P4 H9 W! P3 n4 ~
mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \# l+ N" f" s9 H# f9 Q1 `
libpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \vim wget xmlto xxd zlib1g-dev
; s' V0 J; o5 R- `- \: [& j- H! R, S3 {9 Z3 G" E& l+ M7 Q
2,下载源代码打开科学上网工具,最好全局!以下源码三选一下载,也可以使用其他团队的源码!# x* e- }: n3 C, O+ O5 Y3 J) w
! E3 a5 E# |2 ]
git clone https://github.com/openwrt/openwrt                官方版本
1 ?  ], X  ?1 Vgit clone https://github.com/coolsnowwolf/lede              lede版本0 P" G, w7 f/ o, }& m1 q6 F
git clone -b 22.03 --single-branch https://github.com/Lienol/openwrt      lienol版本' n1 F  U2 R, X8 k
cd openwrt                        切换到文件目录
) u! T/ c6 |1 I# L
$ k8 C) k( A! W' U0 X如需指定openwrt版本,可以使用以下命令# \4 K, `  x6 J0 W

4 B5 N+ o* f+ t" \git tag                                              查看稳定版,回车键拉到最低,按Q结束!
$ ~- o3 t7 q! ?0 |& G+ {git checkout v22.03.3                      指定版本,红色部分位版本号
; D6 b+ y7 n- a( L6 |
1 }9 W) S/ x6 N0 n7 z3,添加插件或主题
( h# {3 ^7 e3 T) [
: a) f3 v5 i5 {4 \4 l% R7 ^. Q1 \打开openwrt文件夹,找到feeds.conf.default文件打开,添加到最下面!" ]$ |' y3 v9 l3 B

) n2 l& m/ ]; }8 I. c! Fsrc-git amlogic https://github.com/ophub/luci-app-amlogic        电视盒子必须添加% d# C7 B& C* I$ a1 g. m
src-git alist https://github.com/sbwml/luci-app-alist                     Alist插件. g, S9 E5 C/ @" w, Z/ p
src-git passwall_packages https://github.com/xiaorouji/openwrt-passwall.git;packages
) n# p+ V5 v( V% {src-git passwall_luci https://github.com/xiaorouji/openwrt-passwall.git;luci
0 Z2 G+ C0 b9 P( X; z, m  \src-git kenzo https://github.com/kenzok8/openwrt-packages' v( h, H: K' j. w" f
src-git argonnew https://github.com/jerrykuku/luci-theme-argon.git;main      主题
* l- J$ S4 h8 l
7 H7 f  x# y1 {' R5 r+ `4,更新源码+ I7 e: m% q# j5 ~

" P. O7 |/ A3 G: o./scripts/feeds update -a                更新源码$ J- v2 q+ {: d% G
./scripts/feeds install -a                  拷贝源码; |8 `3 R" g: J. U3 H

, e1 l; {" d- A' j! c5,定制openwrt系统
& s' [* J0 I1 E) ]; x# D6 b9 X- N- x! b! @+ V4 f" A
make menuconfig 打开openwrt配置面板
* u- W6 z+ d  z- e7 ^6 d( D0 w———————————————————————————————————7 a0 D3 S# K+ f: \. L2 p. S
#必须设置项目(CPU架构,镜像文件格式,)
9 g3 `4 Q- Y) c: s7 n$ @" x0 _! j; A7 N  X- q: Y( a, E# R
Target System -> QEMU ARM Virtual Machine     (注意:这是电视盒子 x96 max+)
- m" q! X* ~: ~! L5 v  n3 K  p: L1 h0 SSubtarget -> QEMU ARMv8 Virtual Machine (cortex-a53)   
! r, o& B1 B( D* j' J+ |  R" gTarget Profile -> Default
( x% }7 J, V& I) u! P+ T% r# jTarget Images -> tar.gz5 M. m/ A" Q8 [/ I) a

: N, D% [0 J- A% S* y  ECPU架构查询表:点击此处
- @: p- h# j  x
% m' r( _3 n. U5 p*** 必选软件包(基础依赖包,仅保证打出的包可以写入EMMC,可以在EMMC上在线升级,不包含具体的应用):
( q' A- i4 j1 J( J
) b( Y% |$ R" D- DLanguages -> Perl
, {& ?) Y  e' _$ k, v                            -> perl-http-date/ G0 y  t2 L7 @4 ~8 \3 e# H
                            -> perlbase-file4 D, l3 [7 J; J. y) B, d# X
                            -> perlbase-getopt- g6 i; V: z! |0 m
                           -> perlbase-time
4 f7 ]0 i3 M2 S- k  ^* G3 p) E' {& k                           -> perlbase-unicode9 ~* |8 s1 d0 z# {) c, U& h
                           -> perlbase-utf87 O! Z4 Z) L! |" Y9 ]( V6 y
% T6 l% @. N" i9 Y1 @8 {( m6 C
Utilities -> Compression -> bsdtar 或 p7zip(非官方源)、pigz
. n" o0 S" A7 e( e( l             -> Disc -> blkid、fdisk、lsblk、parted) D. p6 T9 a9 |' e5 @4 V( g0 J" @
             -> Filesystem -> attr 、btrfs-progs(Build with zstd support)、chattr、dosfstools、e2fsprogs、f2fs-tools、f2fsck、lsattr、mkf2fs、xfs-fsck、xfs-mkfs
; N* J5 {) Z% z! g* ~: k$ a( |" w             -> Shells -> bash
0 m5 Q/ h- O; u            -> gawk、getopt、losetup、tar、uuidgen
+ L4 [& M  W4 p; F7 c! p' Q# G  D
' q; y" T! z0 C& R7 g0 Q  @  b% Z*** Wifi基础包,打出的包可支持博通SDIO无线模块,Firmware不用选,因为打包源码中已经包含了来自Armbian的firmware,会自动覆盖openwrt rootfs中已有的firmware( R- P" A5 y1 M! V: g
5 e# }. v4 k) x8 x: f9 W
Kernel modules -> Wireless Drivers -> kmod-brcmfmac(SDIO)
5 U7 [0 ]  E  U8 @* C& t1 }+ _                         -> kmod-brcmutil
" A. O4 m# Q$ Q9 C                         -> kmod-cfg80211
/ @% R3 @& R4 f* E  b8 L                         -> kmod-mac802115 I) R# N+ ^' Q
                       -> USB Support -> kmod-usb-net-asix
) z: k$ n" X( u                                                 -> kmod-usb-net-asix-ax88179$ s5 G( G# B0 B  i7 |/ X' q- T
                                                 -> kmod-usb2% G( i+ m3 C) x
                                                 -> kmod-usb3' d- ]: G) O4 A
红色为选填,如果你需要!USB3.0转千兆网卡(型号:亚信asix-ax88179)则必选!
" ^5 I% ?  @* i0 F
( F  X; K: f# o5 O& {% v$ Z% MNetwork -> WirelessAPD -> hostapd-common
+ r5 B7 V3 _& m+ q$ M2 g  m7 S                                        -> wpa-cli6 ^& V: L! X: P
                                        -> wpad-basic( L) P3 v* v+ ^) K: B
              -> iw* U3 G' s1 K$ M1 n$ i
7 t* o& P2 `+ w- h3 s+ r
*** 插件和主题,语言设置选项,根据需求设置,为了减少编译失败的概率,除了必要的晶晨插件,其他都不要安装,主题也是。可以编译成功后单独编译插件在安装。
2 o( O4 ^. K# |$ ^" \5 X% G! M% V0 Q
& c" g6 E! q$ v- N/ q
LUCI -> 2.Modules -> Translations -> Chinese simplified                简体中文 自选!% M+ c$ @1 O/ ^
        -> 3.Applications -> luci-app-amlogic                      晶晨插件,电视盒子必选!
5 z: e  \5 J0 {* b( K        -> 4. Themes                                      尽量不要安装,不然容易后台面板进不去!0 }1 h5 m8 }& T/ A

/ l4 ~) U7 b% u7 A3 i% F: q0 S######如果需要重新配置##########
6 n2 {. Y% ?4 P+ J) X* k% X$ S5 m0 |0 ^/ J
方法:使用命令
' }+ J5 X, ]8 ]9 q* R$ e
3 o- P8 q9 O$ P; mrm -rf ./tmp && rm -rf .config
  D! [9 ~$ m* i; M- dmake menuconfig4 \; {) V, o- @- ]
make V=s -j$(nproc)
' R5 q6 g3 h# N2 x5 l/ u2 Y+ e3 x% S# a
6,下载 dl 库,编译固件 (-j 后面是线程数)! M3 B9 o6 g& W4 c* G: E+ K
6 S; p, u; o2 Y6 L
make -j8 download V=s                     下载dl库,V=s 显示任务详细情况" F. b1 ~, I+ c$ Z& e
make V=s -j4                                      4代表线程,根据个人实际情况调整
, T7 y' D9 y1 m7 K; ~& A0 I/ z1 U& L% g% e/ Z
如果编译失败,可以执行以下命令:# x7 r+ ]- g  ]6 f( B

  V3 K/ H3 e) c1 y" s: P0 rmake clean               删除编译目录/bin和/build_dir目录中的文件
% X  c% Z6 {+ N; {7 ymake dirclean          除了删除编译目录之外还删除编译工具目录,删除/bin和/build_dir目录的中的文件(make clean)以及/staging_dir、/toolchain、/tmp和/logs中的文件,一般在更换CPU架构的情况下才操作。1 c' H4 Q0 I: S. q& N5 T2 u+ c

4 u7 L7 H! e+ v  ]3 O9 `; s7,下载编译压缩包/ N' K7 \' f; o# ?

4 I0 r% `' W, M' C  C' O编译完成后输出路径:home/用户名/openwrt/bin/targets,下载到本地电脑,需要通过SSH远程登录进行下载。ubuntu默认是没开通SSH登录,所以我们需要进行开通。
. L- M7 F2 [' e5 R  z
* Z% {- v6 h# K+ [开通SSH登录方法:  m; j* X! _2 n( a

( o& M  ?1 c9 ]; G5 U1,必须切换成为root用户5 ]7 w4 s6 E3 o: b
sudo -i
% B# O6 k+ Q& P6 [* |$ ?. I2,先更新软件列表和更新软件
% q3 q" d  M( W8 P5 C3 ]( |sudo apt-get update
& N" i* ~3 T8 ]3,先更新软件列表和更新软件8 ]% h8 R* k" W# A
sudo apt-get upgrade; {: F* e. N3 _* s7 M
4,安装ssh; K5 `9 K& R: B! w+ U: v
apt-get install ssh
8 `5 c; Z% V6 x& I5,启动ssh服务- z& i4 A! ?$ B
sudo /etc/init.d/ssh start
) B. A/ i0 Q( w& W% A+ s" j6,检查是否有ssh环境
" b% t  T9 }/ ]ps -e | grep ssh
) V% }' d; L$ i3 Z3 R/ ]) t' D  \) A' F; v" l  P$ G; b
ubuntu开通root登录SSH权限7 f1 L" Q2 G; k( \

) c2 S. P$ m2 Y/ Y( m7 y- p1, 使用普通用户登录后切换root
7 H% o/ @" {4 V6 i9 _$ E1 rsudo -i
. y" R2 k& v- u, h9 j; l2 V$ S2,创建root管理员密码/ w+ S8 q9 m4 ^/ W; l
passwd root, A6 ^$ }  d" r: o9 x9 ?5 {
3,开启root登录" Y7 x* @, z+ C: D+ P% r
sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config' F$ D* F8 T& b1 C3 I: F5 o! g
4,开启密码验证
& ]# [* F5 E8 Osudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config
# k- j+ s. Z8 ?3 ?5 \5,重启ssh服务
5 X$ g/ n0 U+ \9 f6 eservice sshd restart. K3 P* t0 x0 b
6,检查是否有ssh环境
6 b" ]. Z& j- Gps -e | grep ssh( S& L: |; O! _( y" R
% B% D' ~+ P% f; w9 D" b2 Q1 n( n

5 K6 q7 M0 H" Y+ m# H# f3 J6 l* j0 z
  H; \2 h3 u- k5 k+ S- E* t9 y8 f) N. \
- f- `4 a6 Z! T' S  T0 K+ S

( R" W+ u- }9 p' B* f3 `+ n% U! w
从零开始:自己编译OpenWrt系统!一个视频就够了!简单易懂,毫无保留,VMware虚拟机安装,Ubuntu系统配置、openwrt源码下载,配置!保姆级教程!(电视盒子X96 Max+编译固件) (syjn.blogspot.com)2 c# G+ O% a& W9 P

# G/ b. E8 O8 Q
回复

使用道具 举报

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

本版积分规则

QQ|华强北 电脑城 龙岗电子世界 龙华电脑城 pc4g.com ( 粤ICP备16039863号 )

GMT+8, 2025-6-17 21:26 , Processed in 0.079187 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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