openwrt 使用

来源:互联网 发布:网络打印机 ip地址设置 编辑:程序博客网 时间:2024/06/05 16:55
 前言:很多玩家都想自行编译OP固件,但是很多教程都语焉不详,本人综合了其他教程做了点总结,这里非常感谢以往发教程的玩家。编译固件不需要什么很深奥的知识,但是要求起码能看懂英文,会使用SSH、WINSCP软件,了解OP的那些功能是由哪个软件包提供。
 一。安装ubuntu,具体安装流程可以百度谷歌,这里不详细描述。 桌面版、服务器版都可以,因为都是命令行操作,推荐使用服务器版本(这里需要注意的是一定要32位的系统,64位的系统也可以编译,但是有些莫名其妙的问题,具体原因未知)。 服务器版本安装时有个功能选项,选择安装SSH服务就可以了,其他功能完全可以不安装,因为用不到。
 二。ubuntu下OP编译环境需要安装很多组件,很多教程都是一道命令一起安装,其实这样会有一些组件没有装上的,所以还是老实的一个一个装吧。所有命令全部为SSH登陆后操作。
 升级组件包
 sudo apt-get update
 安装编译需要的组件
 sudo apt-get install gcc
 sudo apt-get install g++
 sudo apt-get install binutils
 sudo apt-get install patch
 sudo apt-get install bzip2
 sudo apt-get install flex
 sudo apt-get install bison
 sudo apt-get install make
 sudo apt-get install autoconf
 sudo apt-get install gettext
 sudo apt-get install texinfo
 sudo apt-get install unzip
 sudo apt-get install sharutils
 sudo apt-get install subversion
 sudo apt-get install libncurses5-dev
 sudo apt-get install ncurses-term
 sudo apt-get install zlib1g-dev
 sudo apt-get install subversion
 sudo apt-get install git
 sudo apt-get install gawk
 sudo apt-get install asciidoc
 sudo apt-get install libz-dev
 每一行回车后都会马上检测安装或升级那个组件,官方WIKI用的是单一条命令,本人分开了,因为这样更容易查看每一个组件的安装是否成功。下载东西之前会有提示本次要下载多少M的东西,问是否的,按y然后回车让它下载就行了。当中最后面的asciidoc组件是需要下载400多MB东西的,慢慢等了。
 三。开始编译前做些必要的步骤 新建一个openwrt目录
 mkdir openwrt
 注:WIKI中是OpenWrt,O和W是大写,请WINDOWS用户注意区分大小写! 进入openwrt目录
 cd openwrt
 下载官网源码到本地
 svn checkout svn://svn.openwrt.org/openwrt/trunk
 添加trunk目录权限
 sudo chmod -R 777 trunk
 四。编译流程。 编译完成的固件会保存在/openwrt/trunk/bin目录下面,可用WINSCP登陆上去提取。
 进入trunk目录
 cd openwrt/trunk
 更新最新源码
 ./scripts/feeds update -a
 安装最新源码
 ./scripts/feeds install -a
 更新版本号
 svn up
 进入编译组件包菜单
 make menuconfig
 恢复默认编译环境
 make defconfig
 开始编译
 make V=99
 编译完成后清除之前的编译作业(使用这个命令前,记得把编译好的固件备份出来,不然会被删除掉,切记)
 make clean
 其中make menuconfig会有一个编译管理器,在里面可以选择型号、OP功能组件,需要用到方向键、回车键、空格键。方向键是移动光标,回车键是确认,空格键是选择(在选项框按下空格键,*号是编译进固件,M是编译但是不编译进固件)。
 1.选择CPU型号
 Target System—–Atheros AR71xx/AR7240/AR913x/AR934x
 2.选择路由型号
 Target Profile—-TP-LINK TL-MR3420 v1
 3.添加luci
 LuCI—>Collections—– <*> luci
 4.添加luci的中文语言包
 LuCI—>Translations—- <*> luci-i18n-chinese
 5.添加DDNS
 LuCI—>Applications —> <*>luci-app-ddns.
 6.添加USB挂载
 Base system —> <*>block-mount
 7.添加硬盘格式支持
 Kernel modules —> Filesystems —> <*> kmod-fs-ext4
 8.添加UTF8编码
 Kernel modules —> Native Language Support —> <*> kmod-nls-utf8
 9.添加USB扩展支持
 Kernel modules —> USB Support —> <*> kmod-usb-storage-extras.
 110.添加自动挂载工具
 Utilities —> Filesystem —> <*> badblocks
 11.添加复位键支持
 Utilities —> <*> restorefactory
 12.添加一键开关无线
 Utilities —> <*> wifitoggle
 最简单的,只需要选正面两项,其余默认即可: 1、 Target System—–选择编译类型
 2、 Target Profile—-选择编译路由型号
 添加功能时尽量依靠依赖包,比如添加ddns时,只需要在luci选项里面选择luci-app-ddns,编译管理器会自动加上ddns-scripts及其他依赖库文件。
MR3420的4M固件编译方法
 下面举个简单例子:
 编译一个mr3420的固件
 1.Target System—–选择Atheros AR71xx/AR7240/AR913x/AR934x
 2.Target Profile—-选择TP-LINK TL-MR3420 v1
 3.LuCI—-选择Collections—– <*> luci
 4.LuCI—-选择Translations—-<*> luci-i18n-chinese
 5.Exit—-Yes
 6.开始编译make V=99,最后会得到一个4M的带中文luci的mr3420固件。
MR3420的8M固件编译方法
 五。进阶设置。
 用WINSCP登陆
 1.在路径 /trunk/tools/firmware-utils/src/mktplinkfw.c 这个文件里边有个“fw max len”,默认3c0000是4M的,请改成7c0000 (这一步把固件最大限制改成8M),如果是16mflash,请改成fc0000(最大限制改成16m)。
 2、修改target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-wr841n.c(找相应文件)
4M:
 41 .name = "u-boot",
 42 .offset = 0,
 43 .size = 0x020000,
 44 .mask_flags = MTD_WRITEABLE,
 45 }, {
 46 .name = "kernel",
 47 .offset = 0x020000,
 48 .size = 0x140000,
 49 }, {
 50 .name = "rootfs",
 51 .offset = 0x160000,
 52 .size = 0x290000,
 53 }, {
 54 .name = "art",
 55 .offset = 0x3f0000,
 56 .size = 0x010000,
 57 .mask_flags = MTD_WRITEABLE,
 58 }, {
 59 .name = "firmware",
 60 .offset = 0x020000,
 61 .size = 0x3d0000,
 62 }
 63 };
8M::
 41 .name = "u-boot",
 42 .offset = 0,
 43 .size = 0x020000,
 44 .mask_flags = MTD_WRITEABLE,
 45 }, {
 46 .name = "kernel",
 47 .offset = 0x020000,
 48 .size = 0x140000,
 49 }, {
 50 .name = "rootfs",
 51 .offset = 0x160000,
 52 .size = 0x690000,
 53 }, {
 54 .name = "art",
 55 .offset = 0x7f0000,
 56 .size = 0x010000,
 57 .mask_flags = MTD_WRITEABLE,
 58 }, {
 59 .name = "firmware",
 60 .offset = 0x020000,
 61 .size = 0x7d0000,
 62 }
 63 };
16M::
 41 .name = "u-boot",
 42 .offset = 0,
 43 .size = 0x020000,
 44 .mask_flags = MTD_WRITEABLE,
 45 }, {
 46 .name = "kernel",
 47 .offset = 0x020000,
 48 .size = 0x140000,
 49 }, {
 50 .name = "rootfs",
 51 .offset = 0x160000,
 52 .size = 0xe90000,
 53 }, {
 54 .name = "art",
 55 .offset = 0xff0000,
 56 .size = 0x010000,
 57 .mask_flags = MTD_WRITEABLE,
 58 }, {
 59 .name = "firmware",
 60 .offset = 0x020000,
 61 .size = 0xfd0000,
 62 }
 63 };
8M::
 0x000000000000-0x000000020000 : "u-boot"
 0x000000020000-0x000000160000 : "kernel"
 0x000000160000-0x0000007f0000 : "rootfs"
 0x000000620000-0x0000007f0000 : "rootfs_data"
 0x0000007f0000-0x000000800000 : "art"
 0x000000020000-0x0000007f0000 : "firmware"
4M::
 0x000000000000-0x000000020000 : "u-boot"
 0x000000020000-0x000000160000 : "kernel"
 0x000000160000-0x0000003f0000 : "rootfs"
 0x000000304000-0x0000003f0000 : "rootfs_data"
 0x0000003f0000-0x000000400000 : "art"
 0x000000020000-0x0000003f0000 : "firmware"
16M::
 0x000000000000-0x000000020000 : "u-boot"
 0x000000020000-0x000000160000 : "kernel"
 0x000000160000-0x000000ff0000 : "rootfs"
 0x000000380000-0x000000ff0000 : "rootfs_data"
 0x000000ff0000-0x000001000000 : "art"
 0x000000020000-0x000000ff0000 : "firmware"
 如想节省编译时间可自行下载以下dl压缩包,编译时就不需要花时间在线下载了: 20110512新增:dl压缩包(国内网速真是快呀) http://u.115.com/file/dnahsytg# dl.rar
 把原来的DL删掉,复制过去。然后恢复默认编译环境 make defconfig 需要连续几个恢复: 进入编译组件包菜单 make menuconfig 也要恢复默认 进入编译组件包菜单 make menuconfig Reset to defaults
 然后继续 make clean make defconfig
 全部恢复后再 ./scripts/feeds update -a 安装最新源码 ./scripts/feeds install -a 更新版本号 svn up 进入编译组件包菜单 make menuconfig
 开始编译 make V=99
0 0
原创粉丝点击