首页>经验心得>openwrt路由器固件编译命令详解,openwrt编译命令详细介绍 路由器openwrt固件编译详细教程介绍
2019
02-25

openwrt路由器固件编译命令详解,openwrt编译命令详细介绍 路由器openwrt固件编译详细教程介绍

路由器刷机交流Q群

openwrt路由器固件编译命令详解,openwrt编译命令详细介绍 路由器openwrt固件编译详细教程介绍

系统更新      sudo apt-get update

安装依赖关系  sudo apt-get install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils libelf-dev

下载源码      git clone https://www.github.com/openwrt/openwrt

进入目录:    cd openwrt

更新源:      ./scripts/feeds update -a

安装源:      ./scripts/feeds install -a

打开配置:    make menuconfig

打开内核配置:make kernel_menuconfig(一定要在file systems的Native language support设置好,不然网络共享文件名乱码)

开工          make -j1 V=s  (-jn的n为电脑cpu的进程数)


非第一次编译

cd openwrt

git pull

./scripts/feeds update -a && ./scripts/feeds install -a

rm -rf ./tmp && rm -rf .config

make menuconfig

make kernel_menuconfig

make -j2 V=s


没关闭终端的情况下简化为

rm -rf ./tmp

make menuconfig

make -j2 V=s


------------------------------------------------------------------------------

git clone https://github.com/coolsnowwolf/lede          ----------lean的

git clone https://github.com/981213/openwrt             ----------981213的

git clone https://github.com/ericpaulbishop/gargoyle    ----------石像鬼的

git clone https://github.com/rosywrt/rosywrt            ----------Rosy的

git clone https://git.openwrt.org/openwrt/openwrt.git   ----------官方的

git clone https://www.github.com/openwrt/openwrt        ----------官方的


想要18.06或其他老版本的,直接网页打开上面官方地址选18.06.2,下载压缩包来解压就可以了(以后不能用git pull命令,因为不是主支,需要git pull就要进行下面繁琐操作):

以V18.06.2为例:

git clone https://www.github.com/openwrt/openwrt

git branch -a              ----查看分支(如果直达18.06.2,这条和下面tag命令不需要)

git tag                    ----查看版本

git checkout v18.06.2      ----签出V18.06.2

git pull origin v18.06.2   ----更新V18.06.2

./scripts/feeds update -a && ./scripts/feeds install -a

想要生成支持UEFI的映像文件,则还需要加上下面命令(来源于https://openwrt.org/docs/guide-developer/uefi-bootable-image):

git remote add jow-staging https://git.openwrt.org/openwrt/staging/jow.git

git fetch jow-staging

git checkout -b uefi-capable --track origin/master # so that you can rebase easily

git merge jow-staging


make kernel_menuconfig

加入x86的多核心以及大内存支持

Processor type and features  --->

    Symmetric multi-processing support

    Processor family (Core 2/newer Xeon)  --->#自行选择处理器平台

    Supported processor vendors  --->#自行选择处理器平台

    (2) Maximum number of CPUs #自行编辑

    SMT (Hyperthreading) scheduler support#超线程支持

    Multi-core scheduler support 

    High Memory Support (64GB)  --->


更改软件源:

customfeeds.conf自定义源配置文件(在files大法改即可,文件在etc/opkg下)

科大的

src/gz openwrt_core http://openwrt.proxy.ustclug.org ... ets/x86/64/packages

src/gz openwrt_base http://openwrt.proxy.ustclug.org/snapshots/packages/x86_64/base

src/gz openwrt_luci http://openwrt.proxy.ustclug.org/snapshots/packages/x86_64/luci

src/gz openwrt_packages http://openwrt.proxy.ustclug.org ... ges/x86_64/packages

src/gz openwrt_routing http://openwrt.proxy.ustclug.org ... ages/x86_64/routing


distfeeds.conf 官方源配置文件(在files大法改即可)

官方的

src/gz openwrt_core http://downloads.openwrt.org/snapshots/targets/x86/64/packages

src/gz openwrt_base http://downloads.openwrt.org/snapshots/packages/x86_64/base

src/gz openwrt_luci http://downloads.openwrt.org/snapshots/packages/x86_64/luci

src/gz openwrt_packages http://downloads.openwrt.org/snapshots/packages/x86_64/packages

src/gz openwrt_routing http://downloads.openwrt.org/snapshots/packages/x86_64/routing

src/gz openwrt_telephony http://downloads.openwrt.org/snapshots/packages/x86_64/telephony


源问题下载不了模块中途编译终止没问题,按上箭头键重新输入上一个命令重来。

所有东西都乱了,无药可救了怎么办?移出/openwrt/的dl文件夹,然后把整个openwrt删除,再git clone一次,把dl移入,重新来过,可以节省很多下载模块时间。或者执行下面命令。

make clean     仅仅是清除之前编译的可执行文件及配置文件,比如bin路径下面的文件,config配置文件不会清除。

make distclean 清除所有生成的文件,连feeds也会干掉,只留下git clone完成时候的初始状态。


技巧

1:连移动卡的手机热点下载模块要比电信宽带快得多哦!!!!!!


2:files大法,不用去修改源码就可以自定义配置固化到固件中,比如要经常刷固件、做ramdisk版,不用每次都升级备份文件。

刷第一次安装配置好APP等。用scp进入根目录,把整个etc目录搬下来。

在openwrt目录建立file目录。把etc放进去,然后进etc翻看,有用的留下,没用的删除,ok!编译好之后大部分配置都在。

如果你只是在自己主板上用,什么都可以留下。如果你要发给人家或者换机型,则里面所有有MAC地址、UUID识别码或者其它固定硬件识

别码的文件都得删掉(比如wireless就有MAC地址),不然会产生灵异事件。


3:单独编译某个模块比如v2ray,要先在make menuconfig里面luci app相应的v2ray-pro打上M

make package/lean/luci-app-v2ray-pro/compile


4:碰到一个玩意硬是wget不了怎么办?把出错提示的地址复制下来,用浏览器,迅雷,什么都行,下载好扔进dl目录(如果不是dl目录的有提示,并且此方法无效)

比如这个变态的kcptun-linux-amd64-20181002.tar.gz,问了度娘之后在下面地址找到。

https://github.com/xtaci/kcptun/releases 


-------------------------------------------------------------------------------

源更新不了,opkg被神经病锁定不能安装app,删除/var/lock/opkg.lock


自己替换“总览”页面

/feeds/luci/modules/luci-mod-status/luasrc/view/admin_status/index.htm


压缩虚拟盘

cd C:\Program Files (x86)\VMware\VMware Workstation

vmware-vdiskmanager.exe -k "G:\Ubuntu\Ubuntu 64 位.vmdk"


-------------------------------------------------------------------------------

1)修改登录密码(可以用files大法,文件在/etc下的shadow,在“管理权”设置好密码,直接SCP备份shadow文件,以下各项同样方法配制)

修改shadow文件,位于package/base-files/files/etc 

root1$BuM.Ox4e$X/RX2ftRaBzzVzoL6TkI0/:17943:0:99999:7:::    ----------------root后面的两个root::17943之间一串乱码就是加密后的密码(需要在“管理权”设置好SCP上去打开复制下来,不能直接填入明文),此处示例为admin。

2)修改路由连接数(可以用files大法,文件在ect下的sysctl.conf)

修改sysctl.conf文件,位于package/base-files/files/etc

net.netfilter.nf_conntrack_max=262144


3)默认中文feeds/luci/libs/web/root/etc/config


1

option(可以用files大法,其实不用管,只要时区改了并且添加了中文luci,会自动使用中文)

lang auto

改为


1

option lang zh_cn


并添加          

config internal languages


        option en 'English'


        option zh_cn 'chinese'


4)修改默认主题(用files大法无效)

修改feeds/luci/libs/web/root/etc/config

option mediaurlbase /luci-static/openwrt.org

可根据需要将openwrt.org修改为Bootstap、openwrtcn、freifunk-bno、freifunk-generic


5)修改主机名、设定时区(可以用files大法,文件在/etc/config下的system)

修改package/base-files/files/etc/config/system

option hostname Openwrt      ----------主机名

option timezone Asia/Shanghai----------时区设置为亚洲/上海

option timezone CST-8        ----------正8区


6)默认lan ip地址配置(本机使用可以用files大法,在ect下面找同名文件)

package/base-files/files/bin/config_generate搜索192.168定位到下面字段配置。

set network.$1.ipaddr='192.168.1.1'

set network.$1.netmask='255.255.255.0'


7)更改openwrt后台web登陆用户名方法

1.修改/etc/passwd

将root:x:0:0:root:/root:/bin/ash修改为username:x:0:0:root:/root:/bin/ash。


2.修改/etc/shadow

将root:xxxxxx:0:0:99999:7:::修改为username:xxxxxx:0:0:99999:7:::。


3.修改/usr/lib/lua/luci/controller/admin/index.lua

将page.sysauth = {“root”}修改为page.sysauth = {“username”}。


4.修改/usr/lib/lua/luci/controller/admin/servicectl.lua

将entry({“servicectl”}, alias(“servicectl”, “status”)).sysauth = {“root”}修改为entry({“servicectl”}, alias(“servicectl”, “status”)).sysauth = {“username”}。


默认wifi系列(本机使用可以用files大法,文件是etc/config下wireless)

修改的文件为 /trunk/package/kernel/mac80211/files/lib/wifi

set wireless.radio${devidx}=wifi-device

set wireless.radio${devidx}.type=mac80211

set wireless.radio${devidx}.channel=1   -------指定频道

set wireless.radio${devidx}.hwmode=11g  -------指定11g模式

set wireless.radio${devidx}.country=CN  -------指定国家

set wireless.radio${devidx}.htmode=HT40 -------40MHz带宽(单改无效,还需要改上面iw phy "$dev" info | grep -q 'Capabilities:' && htmode=HT40)

set wireless.radio${devidx}.legacy_rates=1

set wireless.radio${devidx}.noscan=1    -------强制40MHz带宽(默认无,需要添加)

${dev_id}

${ht_capab}

set wireless.radio${devidx}.disabled=0  --------改为0默认开无线


set wireless.default_radio${devidx}=wifi-iface

set wireless.default_radio${devidx}.device=radio${devidx}

set wireless.default_radio${devidx}.network=lan

set wireless.default_radio${devidx}.mode=ap

set wireless.default_radio${devidx}.ssid=IOU              ---------指定SSID

set wireless.default_radio${devidx}.encryption=psk2+ccmp  ---------指定加密模式

set wireless.default_radio${devidx}.key=13143344          ---------指定密码(默认无,需要添加)


8)整理web管理上面APP出现的菜单位置

比如把一个出现在“服务”菜单里的app改到“网络”里,以NFT-QOS为例:

进入package下面的luci-app-nft-qos/controller,看到nft-qos.lua文件,打开看到:

entry({"admin", "services", "nft-qos"}, cbi("nft-qos/nft-qos"),

上面的"services"就是“服务”,修改为"network",这个app就会改变到“网络”菜单里了。

免费支持本站

支付宝打赏支付宝打赏微信打赏微信打赏

本文》有 0 条评论

留下一个回复 (您的评论需要经过审核才能显示)