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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1961|回复: 0

openwrt编译DIY

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

9 S9 a  F  w, W
1 W2 \4 G3 p9 l6 K# u开始前我们先来解决一些网友的疑问?为什么网上那么多系统,我们还要自己编译呢?其中有二点原因:9 S) K; [8 g( @. R/ t; n" t
2 T" m! M/ ?6 u/ x
第一点:从安全上考虑,毕竟我们的网络数据,都是要通过openwrt系统,要是有人动手脚,在系统里放了后门,那么我们的隐私就没有保障了。
; y/ C6 h+ j/ E! h0 E" q0 T/ s7 r8 N' s: T; W0 B
第二点:从稳定性上考虑,因为别人分享的固件,是用来适配他自己的设备,就算你的设备和他的型号一样,不同批次的设备,硬件都很有可能不一样,特别是像外贸电视盒子,这种问题很常见。我们使用opengwrt,就是为了实现一些想要的功能,自己编译,能很好的使插件和系统更好的兼容,同时想要什么功能就集成什么插件,不过度的集成插件,确保系统的稳定。4 Y7 y1 ~. S( e7 Q* D  U
) y3 q2 L* z5 r% Z+ c
      大家来看看,这是我自己编译的固件,在x96 max+的电视盒上运行,面对高温的天气,到目前已经运行2个多月了,从来没断过网,非常的稳定。接下来手把手教大家怎么编译openwrt系统,时间有点长,大家耐心看完,你也一定能编译出属于自己的系统。/ ?7 F8 L( X4 }+ n, J& M: c& L0 t; J

/ k4 s. B- _9 s& w) J  _2 v, t( l3 T6 ~' K" `
7 b+ V- G+ r2 V2 x. z
编译openwrt系统固件,主要分为三大步骤:
$ F! O8 C$ T1 i8 W) L5 c9 q6 c4 F: n" Y6 M
第一步:安装虚拟机

7 N: F, t* Z( l8 }  u第二步:安装ubuntu 22.04系统
# T+ I/ V" s' e+ S/ B  r7 P第三步:编译openwrt5 W( T$ A' k5 {/ B! Z" l
视频安装教程
7 ~' f8 i# E, z+ r' f3 i

5 v1 {, x  V; L

) r6 Z* u( f+ z- W8 N1 a* w
图文安装教程
$ O3 _, C0 J1 p. Z

% m# B! r: r! @4 ^1 Q一,准备工具:
; s! H# k2 l$ A. }' v; K2 u9 U$ H% X( i& p7 t
1,虚拟机软件VMware
1 y9 I) @1 P! L2,ubuntu-22.04.2系统
- R, T" Z! x1 }- J3,SSH登录工具 finalshell, U; u3 h( _, u5 t+ E8 p( m
4,科学上网工具(自备)) K  H8 n7 a6 \* n+ u/ g1 Q

2 e% k) K  ]( \7 q" s, r9 r5 ]配套工具:点击下载
3 a5 Q, d1 C7 M6 m  s
0 I2 d( U+ u) w二,环境搭建:
9 P! Q% t2 M; o0 X, H, |6 L5 k1 I. a* ]/ u0 ?9 }
1,安装好虚拟机,打开软件,点击创建新的虚拟机,选择典型下一步,安装程序光盘映像,点击下一步,这过程比较简单就不多做介绍,注意网卡需要设置成桥接模式。# U" X4 c" v$ `
2,安装ubuntu系sudo apt update -y统,点击新建虚拟机,选择默认进行安装!" {2 h0 O  A; E

: }! Y% ~# F1 c- I4 \三,编译固件" n& ^' E7 _& F- W, z" x: M
( E+ M) {8 \/ @. s2 F
注意:
2 h4 u! t1 q8 Z, D/ b% G* n/ o" f1,不要用 root 用户进行编译- d7 e3 u- m/ G" [  Q( z
2,国内用户编译前最好准备好梯子4 F8 u( L6 E+ C2 w3 M$ G
3,默认登陆IP 192.168.1.1 密码 password  B% |  G, v" a
—————————————————————————————————————5 B0 m( l* ]8 o4 z+ Q
1,安装编译依赖
$ ?0 m$ g- k) x9 B/ H9 @
+ i2 w; I" W( \4 B) z' m( vsudo apt update -y
; h/ f  T( E; Y* k% hsudo apt full-upgrade -y
5 C3 A9 H: R( V* ^sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \  n# i) A' }5 H6 Z6 H
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
3 o" W: D$ h. ?+ t3 I  zgit gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \8 F7 Z+ D4 u( O) Q
libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
- O. p3 Q1 v" W2 ^! x/ }mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \
$ L+ o: u4 C& }  j8 |libpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \vim wget xmlto xxd zlib1g-dev+ i6 s2 L, a5 ]4 w& m
$ z4 V, y9 t( n! ?
2,下载源代码打开科学上网工具,最好全局!以下源码三选一下载,也可以使用其他团队的源码!5 \* W& C7 i9 U# H2 C' T( S

7 J  }# A3 U' X+ v6 Jgit clone https://github.com/openwrt/openwrt                官方版本
, l# N2 w4 i4 P6 D7 r( N) Tgit clone https://github.com/coolsnowwolf/lede              lede版本
0 z2 s) C# Q0 S; j3 r; A6 ^8 _git clone -b 22.03 --single-branch https://github.com/Lienol/openwrt      lienol版本) M. a/ ^4 @1 {; b5 G& Q0 f
cd openwrt                        切换到文件目录
$ l; D  X" q7 v+ S1 z+ ~8 [# A4 h' O/ m2 T2 }4 d% H+ T  ]& [3 u
如需指定openwrt版本,可以使用以下命令4 ^1 d# x; c0 U, b3 [1 L

$ m, p+ ]" G) x1 E) o; ?  ~# h+ @git tag                                              查看稳定版,回车键拉到最低,按Q结束!. ?: S: _, l! W, P% U3 a& I" y
git checkout v22.03.3                      指定版本,红色部分位版本号
' U- ?) B' d9 G* x2 a
, o, {! v; ?+ P. k( X3,添加插件或主题
% p, Q/ u: }/ q: e3 f8 z
+ J# M' u3 N) b. v打开openwrt文件夹,找到feeds.conf.default文件打开,添加到最下面!6 K5 t' o- `# c( F) ^1 n
7 Y6 X/ A# h& g6 R
src-git amlogic https://github.com/ophub/luci-app-amlogic        电视盒子必须添加
4 q9 W& C3 [1 i0 ^& Gsrc-git alist https://github.com/sbwml/luci-app-alist                     Alist插件9 p# e" A% t$ P' n
src-git passwall_packages https://github.com/xiaorouji/openwrt-passwall.git;packages
5 B4 E9 b! |' J( Z/ {+ @/ K, c( E# ~: Qsrc-git passwall_luci https://github.com/xiaorouji/openwrt-passwall.git;luci" |' w0 h3 B" X: S7 d  Q+ `
src-git kenzo https://github.com/kenzok8/openwrt-packages& K. F4 x2 ?. P' z
src-git argonnew https://github.com/jerrykuku/luci-theme-argon.git;main      主题
) F" ~- f  I2 N4 I( R2 ]+ o+ J7 R6 D1 b
  l7 b5 w% G# t% N- t4,更新源码3 O/ X: y& V$ N& M: c  ^
$ C0 k& ?/ Y: I# _3 _8 x3 f
./scripts/feeds update -a                更新源码
4 ]/ {7 U5 y9 E! m" ~./scripts/feeds install -a                  拷贝源码
$ @6 }2 I5 b" h4 L% H3 O+ V! P6 v( ^6 y
5,定制openwrt系统
/ N; P$ Z" k1 Q+ b! j! K+ \
2 P: D" }- \3 {% P; j) w& |make menuconfig 打开openwrt配置面板3 \* w( Z# `$ b4 N0 D
———————————————————————————————————
  E# d5 q1 O/ D6 b8 M# N+ }1 c0 ~$ ~& z#必须设置项目(CPU架构,镜像文件格式,)* c' h+ R: l$ t5 G- m/ O
" C+ {) U8 g2 S( F1 V5 c
Target System -> QEMU ARM Virtual Machine     (注意:这是电视盒子 x96 max+)
+ W9 i" H" X1 E+ `" mSubtarget -> QEMU ARMv8 Virtual Machine (cortex-a53)   3 y: f7 G$ f6 U9 ?1 \
Target Profile -> Default
' L( D* n5 ?! B8 i  w  m; n# RTarget Images -> tar.gz
" Z9 K! t, [, Q
9 e/ ?; R+ P5 f9 B' W0 N2 SCPU架构查询表:点击此处
$ N& H& I$ C4 x0 r0 ?' @# l" @
8 T8 b9 v: a4 z: y% k*** 必选软件包(基础依赖包,仅保证打出的包可以写入EMMC,可以在EMMC上在线升级,不包含具体的应用):
' r/ ]% M  h7 k6 R) m# [9 ]$ L6 c( ~1 K/ Z( d
Languages -> Perl
; d, Z/ K$ g, W/ \; G9 N; Q% l" g                            -> perl-http-date
' S! A0 {3 T& Y! J6 B: w; f. N3 Q$ O  A. P                            -> perlbase-file
2 G( \) y* T& ^$ J& F5 q& `$ J                            -> perlbase-getopt* i4 w# M" I4 b
                           -> perlbase-time' ]; F8 t8 F0 ^% r! h2 y
                           -> perlbase-unicode
) v' o, J9 k8 L" a                           -> perlbase-utf8
, @( L9 H! z" p! g% _! ~
& x. M- g9 q6 zUtilities -> Compression -> bsdtar 或 p7zip(非官方源)、pigz
- {/ ~0 D5 g5 A4 u             -> Disc -> blkid、fdisk、lsblk、parted
- Z$ u5 `$ O6 A1 \) C/ f6 [             -> Filesystem -> attr 、btrfs-progs(Build with zstd support)、chattr、dosfstools、e2fsprogs、f2fs-tools、f2fsck、lsattr、mkf2fs、xfs-fsck、xfs-mkfs
- T9 e* i4 e2 L  r             -> Shells -> bash
/ G( m% ^1 E3 T: e+ l            -> gawk、getopt、losetup、tar、uuidgen8 {0 |/ _% M2 d6 N7 w; z
2 k8 T2 I: z0 q  I# W# l
*** Wifi基础包,打出的包可支持博通SDIO无线模块,Firmware不用选,因为打包源码中已经包含了来自Armbian的firmware,会自动覆盖openwrt rootfs中已有的firmware
! J% @+ _6 ]. E5 G
7 c2 }! D3 X) IKernel modules -> Wireless Drivers -> kmod-brcmfmac(SDIO)" @2 R* d* ?3 {: ^; l$ `$ q3 w
                         -> kmod-brcmutil
/ U! }1 y- a* s4 E7 m, B                         -> kmod-cfg80211
$ Q7 U* y" D2 y                         -> kmod-mac802114 @" T2 ?0 r! B6 b+ }. e1 R' H2 f5 q
                       -> USB Support -> kmod-usb-net-asix
  ~4 b6 P" B" w6 i& P                                                 -> kmod-usb-net-asix-ax881796 l. q, P; {. S+ ^0 ]
                                                 -> kmod-usb2
2 @6 B) |* x: m- C; O" |/ `                                                 -> kmod-usb36 A. C9 Y8 ]) x' }% T% P
红色为选填,如果你需要!USB3.0转千兆网卡(型号:亚信asix-ax88179)则必选!
/ [# H8 G4 s. c) ]5 C& L  J4 K& H+ U- S: y- ]6 e6 z
Network -> WirelessAPD -> hostapd-common
# _0 l' m/ q1 J' z* _+ _6 E                                        -> wpa-cli/ w" J, K% ]$ g) ^$ n, ]- b) j
                                        -> wpad-basic3 B% C/ T5 ~0 {  c% U4 `
              -> iw
5 _: V! ]9 C; \# I; X( p  U0 h9 `( \. V& B+ G2 w7 K
*** 插件和主题,语言设置选项,根据需求设置,为了减少编译失败的概率,除了必要的晶晨插件,其他都不要安装,主题也是。可以编译成功后单独编译插件在安装。4 t6 N2 ^- B( g# ^+ ~

8 u4 P$ H9 H2 p4 k2 _7 p  R. W" |' r9 ^3 Y$ s
LUCI -> 2.Modules -> Translations -> Chinese simplified                简体中文 自选!1 S3 h& }9 p- P7 e' F4 g
        -> 3.Applications -> luci-app-amlogic                      晶晨插件,电视盒子必选!
- O7 X- T; j% [0 {, L3 F        -> 4. Themes                                      尽量不要安装,不然容易后台面板进不去!  r9 `9 A' n* ^6 p) V
0 m( n: \  [1 P8 d" V1 x0 o
######如果需要重新配置##########
9 ]3 s/ p5 `; [
! D( [% }2 v" a* X9 v8 P9 e$ i; G1 v方法:使用命令
! {2 X7 J/ p  ?2 J
5 j- B3 W. x6 G( k9 prm -rf ./tmp && rm -rf .config
+ i8 r3 s( W- ~% S* v, Umake menuconfig
' b- M& J, Y. f$ R* I5 kmake V=s -j$(nproc)
/ k) }) Y* `5 i) y, Q3 H% B2 F
" c/ Q, o3 x6 ~& {0 c) H6,下载 dl 库,编译固件 (-j 后面是线程数)
4 O) M& e! Z+ H2 [4 g, X
7 ~$ F( b0 `; f# N, _make -j8 download V=s                     下载dl库,V=s 显示任务详细情况
6 t9 f# X% c; Q+ @make V=s -j4                                      4代表线程,根据个人实际情况调整( [5 g. b; T! \0 v
9 m6 U  Y1 B% J
如果编译失败,可以执行以下命令:
; E. g7 \# p+ }; H" V5 Q, V" k% j, @) _, K+ l' U4 B
make clean               删除编译目录/bin和/build_dir目录中的文件
/ e1 W$ L' W! d+ lmake dirclean          除了删除编译目录之外还删除编译工具目录,删除/bin和/build_dir目录的中的文件(make clean)以及/staging_dir、/toolchain、/tmp和/logs中的文件,一般在更换CPU架构的情况下才操作。
: J+ ]% A# l; t4 N$ v  [% T) s
& g3 k8 X/ ~: b: ^4 L  l7,下载编译压缩包
+ d5 }, S0 I' P; E3 h5 d4 m* ?
; B4 g3 D# M6 d" K编译完成后输出路径:home/用户名/openwrt/bin/targets,下载到本地电脑,需要通过SSH远程登录进行下载。ubuntu默认是没开通SSH登录,所以我们需要进行开通。5 s+ {4 L- T& m# S# i

- P4 R2 C9 t$ Z" F/ u开通SSH登录方法:1 u) K/ d) N0 c. w

0 a5 u! F* G" @7 d+ V$ c6 h1,必须切换成为root用户8 F) M8 M2 R* ]$ @1 O, K4 \; H
sudo -i+ s$ O. R4 H/ _6 `
2,先更新软件列表和更新软件4 G- @0 a9 k5 L1 q9 E
sudo apt-get update5 C! w' |$ F* I2 A/ Q
3,先更新软件列表和更新软件
" Q- m7 @9 v1 F0 Qsudo apt-get upgrade
+ I; g( W0 ]# K5 u* G- @4,安装ssh/ T/ _" u! u* x/ i7 M
apt-get install ssh$ B; _2 Y( U- z3 A6 O
5,启动ssh服务
" t7 Q+ c) D4 J6 o/ Osudo /etc/init.d/ssh start5 d5 q" O' ~% W7 Z6 _" Y
6,检查是否有ssh环境
! h+ S" }6 d7 ^/ ?, `' eps -e | grep ssh
( b; @1 w* ~4 x) u3 c" q1 P9 |
5 q( w! |. ~$ L# g) W& \; _ubuntu开通root登录SSH权限
* ~  U3 ]- T) p5 {% a9 D8 {6 r4 V/ q; A) Z# ?
1, 使用普通用户登录后切换root
* Z5 F" H1 g0 Lsudo -i: `" ]( g) v. I4 C1 s, f4 `
2,创建root管理员密码, E. |% m7 T: N$ C5 W* r
passwd root
+ v7 u- k1 |6 r6 B4 F9 h3,开启root登录
8 o; v8 R5 F+ {& rsudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config% G6 Y3 a: @+ g/ q+ f
4,开启密码验证+ K  ~4 e. E* ~+ q' ^; d$ o
sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config
, S& |0 [0 j' ]' z) X5,重启ssh服务
( Y3 N: w4 q0 V) N$ g. i* e5 aservice sshd restart
" @  x, l. s5 t3 O7 X/ D9 l  E6,检查是否有ssh环境
( g  h- L% [8 B' [- }  V+ ]4 D3 Wps -e | grep ssh) C  q9 Z6 A, \
1 ?( [5 x* {2 z+ D7 a/ d% j
+ T2 h: t: @4 U" j# b7 p/ B
( N4 z) a- u4 J$ G

8 X; Z# \/ f# S5 W, w
$ N" e1 A0 P6 l  R  {+ ^; P. H! K2 `: A6 G! {

, J/ B: @) P" G& @2 k从零开始:自己编译OpenWrt系统!一个视频就够了!简单易懂,毫无保留,VMware虚拟机安装,Ubuntu系统配置、openwrt源码下载,配置!保姆级教程!(电视盒子X96 Max+编译固件) (syjn.blogspot.com)
$ }6 A1 v6 {2 v7 f

9 E! ]/ y7 w# a2 N
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-19 19:27 , Processed in 0.174396 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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