×

openwrt编译笔记,有些技巧是自己试验出来的,很多人死也不肯说

hqy hqy 发表于2019-05-28 17:44:42 浏览6359 评论0

抢沙发发表评论

https://www.right.com.cn/forum/thread-469400-1-1.html 


----------------这里附上我自己编译的X86固件https://www.right.com.cn/forum/thread-458183-1-1.html-----------------
系统更新      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 
root 1$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就会改变到“网络”菜单里了。

----
我要出去工作了,没时间玩了,最后给你们一个东西,这个东西来源于lean(抱歉,我拿来用了),可以编译时加载默认设置和加一些额外的翻译词组。我精简了一些官方源码用不到的项,只留下上面说到那些基本设置,然后加上了一些我自己需要的设置项。解压后放到package下面,然后在make menuconfig/luci里打开default settings这个选项就可以了,上面提到的大部分设置都可以在这package的files/zzz-default-settings里面修改的,不用再一个个model去修改,自己研究吧。
 default-settings.rar (26.76 KB, 下载次数: 67)  增加了一些项的default-settings.tar.xz.zip (21.91 KB, 下载次数: 61) 
 

打赏

本文链接:https://www.kinber.cn/post/767.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客