初级Openwrt编译详细教程.docx
- 文档编号:16435800
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:13
- 大小:80.29KB
初级Openwrt编译详细教程.docx
《初级Openwrt编译详细教程.docx》由会员分享,可在线阅读,更多相关《初级Openwrt编译详细教程.docx(13页珍藏版)》请在冰点文库上搜索。
初级Openwrt编译详细教程
Openwrt编译入门
一、安装openwrt需要的编译环境
1.批量命令安装
sudoapt-getinstallgccg++binutilspatchbzip2flexbisonmakeautoconfgettexttexinfounzipsharutilssubversionlibncurses5-devncurses-termzlib1g-dev
2.单条命令输入
sudoapt-getinstallg++
sudoapt-getinstalllibncurses5-dev
sudoapt-getinstallzlib1g-dev
sudoapt-getinstallbison
sudoapt-getinstallflex
sudoapt-getinstallunzip
sudoapt-getinstallautoconf
sudoapt-getinstallgawk
sudoapt-getinstallmake
sudoapt-getinstallgettext
sudoapt-getinstallgcc
sudoapt-getinstallbinutils
sudoapt-getinstallpatch
sudoapt-getinstallbzip2
sudoapt-getinstalllibz-dev
sudoapt-getinstallasciidoc
sudoapt-getinstallsubversion
sudoapt-getinstallgit
sudoapt-getinstallsphinxsearch
sudoapt-getinstalllibtool
sudoapt-getinstallsphinx-common
系统其他软件更新
sudoapt-getupdate
sudoapt-getinstalllibssl-dev
注:
不安装上边这个使用makemenuconfig可能出现下边的错误:
Checking'working-make'...ok.
Checking'case-sensitive-fs'...ok.
Checking'getopt'...ok.
Checking'fileutils'...ok.
Checking'working-gcc'...ok.
Checking'working-g++'...ok.
Checking'ncurses'...ok.
Checking'zlib'...ok.
Checking'gawk'...ok.
Checking'unzip'...ok.
Checking'bzip2'...ok.
Checking'perl'...ok.
Checking'/usr/bin/python2.7'...ok.
Checking'wget'...ok.
Checking'git'...ok.
Checking'gnutar'...ok.
Checking'svn'...ok.
Checking'libssl'...failed.
Checking'openssl'...ok.
Checking'gnu-find'...ok.
Checking'getopt-extended'...ok.
Checking'file'...ok.
Checking'non-root'...ok.
Builddependency:
Pleaseinstalltheopenssllibrary(withdevelopmentheaders)
Prerequisitecheckfailed.UseFORCE=1tooverride.
make:
***[tmp/.prereq-build]Error1
二、下载源码
建议使用subversion(SVN),因为Openwrt主要以svn来维护Openwrt系统的版本。
另外,请注意Openwrt中不同的分支版本,一种是最新版但不是最稳定,也就是trunk版,一种是相对稳定的backfire版。
从trunk分支的补丁也在backfire版本中了,即包含修复补丁
1.Svn获取源码
#开发版
#svncosvn:
//svn.openwrt.org/openwrt/trunk
#10.03
#svncosvn:
//svn.openwrt.org/openwrt/branches/backfire
#12.09
#svncosvn:
//svn.openwrt.org/openwrt/branches/attitude_adjustment
#14.07
svncosvn:
//svn.openwrt.org/openwrt/branches/barrier_breaker
#指定svn版本
svncosvn:
//svn.openwrt.org/openwrt/branches/barrier_breaker-r42625
2.Git获取源码:
#开发版
gitclonegit:
//git.openwrt.org/openwrt.git
#14.07
gitclonegit:
//git.openwrt.org/14.07/openwrt.git
3.下载源码
mkdiropenwrt#创建openwrt文件夹
cdopenwrt#进入openwrt文件夹
svncosvn:
//svn.openwrt.org/openwrt/branches/backfire(稳定版)
cpfeeds.conf.defaultfeeds.conf#将feeds.conf.default修改为feeds.conf:
或者是
svncosvn:
//svn.openwrt.org/openwrt/trunk(测试版)
当前的开发版本分支(trunk)已包含最新的实验补丁。
此分支或许还突破了Openwrt原来所不支持的硬件设备的限制哦,惊喜的同时也有风险存在。
因此,编译trunk版,慎之
版本任选一个
4.更新源码
更新源码要进入获取到的版本根目录内,如trunk、backfire文件夹内。
cdopenwrt/trunk或者是cdopenwrt/backfire
如果已是当前文件夹略过。
svn
./scripts/feedsupdate-a
./scripts/feedsinstall-a
因Openwrt的源代码随时都会变动,故此命令将确保您所获取得到的源码的最新性。
5.下载LUCI包
进入到源码主目录-》script,在script目录中打开命令行输入./feedsupdate
继续在命令行中输入./feedsinstall-a-pluci安装LUCI
如果只是加装LuciwebUI,在barrier_breaker根目录打开命令行:
./scripts/feedsupdatepackagesluci
./scripts/feedsinstall-a-pluci
经过这个步骤,在makemenuconfig里就有LuCI相关选项。
三、编译
1.生成默认配置
makedefconfig
若可进行编译则生成默认配置:
编译根目录下会有个.config的文件(按Ctrl+h能看到)。
若defconfig回显提示缺少软件包或编译库等依赖,则按提示安装所缺软件包或库等即可。
2.配置编译选项
里面可以选择芯片的型号,集成的组件等等,根据实际情况选择。
makemenuconfig
输入上条命令后,出现下
TargetSystem(AtherosAR7xxx/AR9xxx)--->CPU芯片型号选择
Subtarget(GenericdeviceswithNANDflash)--->flash选择
TargetProfile(NETGEARWNDR3700v4/WNDR4300)--->路由器型号选择
在里边选择芯片型号,路由器型号和要编译到固件里的各种软件。
3.编译
输入makej=x(x代表CPU核心数+1)V=s
例如:
makej=7V=s
或者获取官方config文件
wgethttps:
//downloads.openwrt.org/barrier_breaker/14.07/ar71xx/nand/config.ar71xx_nand
mvconfig.ar71xx_nand.config
makemenuconfig
exit
make
四、个性化定制
1.改8M支持
以841V8为例,修改2个文件:
第一个:
路径为/turnk/tools/firmware-utils/src/mktplinkfw.c
在mktplinkfw.c中找到841V8的相关属性,
这里原来是没有#defineHWID_TL_WR841ND_V80x08410008这一行的,我自己加进去的,不过编译后没出什么错误。
继续向下搜索841,只有841V7,没有V8,继续加
这也是自己加的,没出现什么错误。
第二个:
路径为/trunk/target/linux/ar71xx/image/makefile
在makefile中搜索841,找到841V8
将4Mlzma改为8Mlzma,保存退出。
修改完成以上两个文件后,即可make进行编译。
2.开启无线
Openwrt默认是不开启无线的
atheros的网卡需要改package/mac80211/files/lib/wifi/mac80211.sh和package/madwifi/files/lib/wifi/madwifi.sh,拉到最下有个蛋疼的
把1改为0或者注释掉
#REMOVETHISLINETOENABLEWIFI:
#optiondisabled1
然后点击Save—>OK 保存
Exit退出
3.无线其他修改
optionhtmodeHT40+
使用40MHz频宽,但只支持1-7信道。
HT40-,支持5-13信道。
HT20支持1-13信道,20MHz频宽
optionchannel1
使用信道1,1-13之间。
若有限定频宽,信道参考如上。
optioncountryCN
设定wifi标准为中国CN、JP、HK均可开启13信道,默认的US只有1-12信道
optionnoscan1
强制使用40MHz的频宽
optiontxpower17
发射功率为17dBm,大约50mW。
不可设定过大,否则有烧毁PA的危险。
4.修改默认时区
打开\barrier_breaker\package\base-files\files\etc\config文件夹,找到system文件
修改如下:
configsystem
optionhostnameOpenwrt设定主机名
optiontimezoneAsia/Shanghai时区设置为亚洲/上海
optiontimezoneCST-8正8区
五、清除编译时产生的文件
建议清理编译产生的文件,以免下次编译时造成冲突,文件如果存在的话,编译将不会被替换
1.清除bin目录
makeclean
bin目录是编译后固件所在文件夹,确保备份了编译后的固件。
2.清除交叉编译工具以及工具链目录
makedirclean
3.清除所有相关东西
makedistclean
该命令会清除下载的软件包,配置文件,feed内容等,但不建议使用。
六、附加
1.make命令简单说明
makeV=99
V=99表示输出详细的debug信息
makeworld
表示编译所有
makej=2V=99
如是多核CPU,加j=2选项理论上能加快编译速度
make-j2V=99可加快编译速度(不推荐使用)
只清除某个模块
makepackage/qos/clean
只编译某个模块
makepackage/qos/clean
makepackage/qos/compile
makepackage/qos/install
makeV=99|teecompile_v1.0.0.log
2.软件包定制
LuCI->Collections-><*>luciWEB界面必选
LuCI->Applications-><*>luci-app-ddnsDDNS
LuCI->Applications-><*>luci-app-transmission
LuCI->Applications-><*>luci-app-sambaSAMBA网络共享服务
LuCI->Applications-><*>luci-app-p2pblock
LuCI->Themes主题
LuCI->Translations-><*>luci-i18n-chineseluci的中文语言包
Basesystem-><*>block-mountUSB挂载
Basesystem-><*>qos-scripts
Basesystem-><*>wireless-tools
Kernelmodules->BlockDevices->kmod-block2mtd
Kernelmodules->Filesystems-><*>kmod-fs-ext4添加硬盘格式支持
Kernelmodules->Filesystems-><*>kmod-fs-vfat
Kernelmodules->NativeLanguageSupport-><*>kmod-nls-utf8添加UTF8编码
Kernelmodules->NetworkDevices-><*>kmod-macvlan
Kernelmodules->Othermodules-><*>kmod-eeprom-93cx6
Kernelmodules->USBSupport-><*>kmod-usb-core
Kernelmodules->USBSupport-><*>kmod-usb-ohci#安装usbohci控制器驱动
Kernelmodules->USBSupport-><*>kmod-usb-storage#安装usb存储设备驱动
Kernelmodules->USBSupport-><*>kmod-usb-storage-extras.添加USB扩展支持
Kernelmodules->USBSupport-><*>kmod-usb-uhci
Kernelmodules->USBSupport-><*>kmod-usb2#安装usb2.0
Kernelmodules->USBSupport-><*>kmod-usb3
Network->BitTrorrent-><*>transmission-daemon
Network->BitTrorrent-><*>transmission-remote
Network->BitTrorrent-><*>transmission-web
Network->P2P-><*>amule
Utilities->Filesystem-><*>badblocks自动挂载工具
Utilities->Filesystem-><*>ntfs-3g
Utilities->Filesystem-><*>ntfs-3g-utils
Utilities->disc-><*>cfdisk
Utilities->disc-><*>fdisk
Utilities-><*>restorefactory复位键支持
Utilities-><*>wifitoggle一键开关无线
kmod-usb-video
注:
上边为网络搜索,不是所有的都要添加,根据自己需要,有可选错而编译不出固件。
3.编译目录说明
Bin目录
编译后的产物目录,里边有编译出的固件。
目录里固件的区别
.bin和.trx的区别,一种说法是,第一次刷路由器的时候,需要用.bin文件,如果需要再升级,则不能再使用.bin文件,而需要用.trx文件。
原因是,.bin是将路由器的相关配置信息和.trx封装在一起而生成的封包,也就是说是包含路由器版本信息的.trx。
在第一次刷固件的时候,我们需要提供这样的信息,而在后续升级时,则不再需要,用.trx文件即可。
Packages文件夹:
包含了我们在配置文件里设定的所有编译好的软件包。
默认情况下,会有默认选择的软件包。
OpenWrt-SDK.**.tar.bz2:
这个也就是我们定制编译好的OpenWRTSDK环境。
我们将用这个来进行OpenWrt软件包的开发。
例如,我所编译好的SDK环境包为:
/bin/brcm47xx/OpenWrt-SDK-brcm47xx-for-Linux-x86_64-gcc-4.3.3+cs_uClibc-0.9.30.1.tar.bz2
可以从名称上看出,targetsystem是brcm47xx,hostsystem是Linux-x86_64,使用的编译工具以及库是4.3.3+cs_uClibc-0.9.30.1。
md5sums文件:
这个文件记录了所有我们编译好的文件的MD5值,来保证文件的完整性。
因为文件的不完整,很容易将路由器变成“砖头”。
需要主要的是,编译完成后,一定要将编译好的bin目录进行备份(如果里面东西对你很重要的话),因为在下次编译之前,执行makeclean会将bin目录下的所有文件给清除掉!
!
4.更改原有packages
在编译根目录下会有一个dl的目录,这个目录其实是“download”的简写,在编译前期,需要从网络下载的数据包都会放在这个目录下,这些软件包的一个特点就是,会自动安装在所编译的固件中,也就是我们makemenuconfig的时候,为固件配置的一些软件包。
如果我们需要更改这些源码包,只需要将更改好的源码包打包成相同的名字放在这个目录下,然后开始编译即可。
编译时,会将软件包解压到build_dir目录下。
当然,你也可以自己在dl里面创建自己的软件包,然后更改相关的配置文件,让openwrt可以识别这个文件包。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 初级 Openwrt 编译 详细 教程