开发
From DD-WRT Wiki
Revision as of 05:30, 15 May 2010 (edit) Leangjia (Talk | contribs) (→Changing DD-WRT改变DD-WRT) ← Previous diff |
Revision as of 04:43, 21 May 2010 (edit) (undo) Leangjia (Talk | contribs) Next diff → |
||
Line 1: | Line 1: | ||
{{Languages|Development}} | {{Languages|Development}} | ||
- | + | 大多数时候,你并不真的需要从源码来重新编译DD-WRT,以满足您所期望的功能。现在,固件修改工具包让这一进程已变得相当容易。 [http://www.bitsum.com/firmware_mod_kit.htm 固件修改工具包.] 该套件能够使用户无需从源码重新编译固件而修改固件镜像文件的功能变化。它通过其组成部分基于文件系统的支持,提取到固件的squashfs-LZMA的,(其他文件系统可以用)。然后用户可以以提取的文件系统进行修改,然后重新生成固件镜像。 | |
- | + | 其特点(特征)包括: | |
- | * | + | * 添加初始化脚本 |
- | * | + | * 安装新功能包 |
- | * | + | * 扩展web用户界面 |
- | * | + | * 移除不需要的功能包 |
* mix-and-match packages from various DD-WRT variants | * mix-and-match packages from various DD-WRT variants | ||
- | + | 警告:在2006年8月4日前在eBay上销售的预刷了DD-WRT固件的路由器已受品牌保护。 | |
=要求= | =要求= | ||
- | + | 我竭尽全力降低本套件的使用门槛,以确保任何人均可方便使用本套件。However, to reduce distribution costs and better represent the multi-platform capabilities of this kit, the binary tools in the kit do automatically build themselves the first time you run one of the scripts. 每台机器准备好C或C++库,每台机器的编译固件的环境基础通过本套件来修改DD-WRT固件需要满足下列基础要求(相信每位都容易满足这样的要求的了): | |
- | # | + | # 一个兼容的平台。下面是具体的支持(或不支持): |
- | ## | + | ## LINUX平台 |
- | ## OS X | + | ## OS X 平台 |
- | ## | + | ## CYGWIN(注:linux操作系统的一种)平台 **alpha阶段测试(!! 内置固件可能无法启动!!)** |
- | # GNU C ( | + | # GNU C (gcc库) |
- | # GNU C++ (g++) | + | # GNU C++ (g++库) |
- | # | + | # 标准C运行时库的开发 |
- | # | + | # 标准C++运行时库的开发 |
# GNU make | # GNU make | ||
- | # | + | # tar和gzip(可选,由ipkg_install.sh使用) |
- | + | ||
- | + | ||
对于OS X,请安装Mac OS X 开发工具,支持GNU C和 C++编译器并使其能正常使用。 | 对于OS X,请安装Mac OS X 开发工具,支持GNU C和 C++编译器并使其能正常使用。 | ||
=兼容性= | =兼容性= | ||
- | + | 它使用任何一个根文件系统应该能正常的squashfs - LZMA的cybertan结构(linux架构的一种)的固件镜像文件格式。固件,使用squashfs或其他常规的(即cramfs)文件系统,如果将工作的步骤提取文件系统和文件系统的重建小的改动。由于是,它与下面的兼容: | |
{| border=1 cellspacing=0 cellpadding=5 | {| border=1 cellspacing=0 cellpadding=5 | ||
Line 52: | Line 50: | ||
|} | |} | ||
- | + | 如果有足够的需求,我可以将默认支持cramfs,常规的squashfs,和旧版本的squashfs和squashfs-LZMA的版本。 请注意,对于那些固件有易于使用的编译系统和/或镜像生成器实用程序,即OpenWrt,这个工具包是较少使用。 | |
- | = | + | =用法说明= |
- | + | 我已经写了两个脚本,大大简化了程序。基本上,这是一个提取固件的过程中的步骤和一个重建固件的过程中的步骤。 | |
- | == | + | == 解压固件 (extract_firmware.sh)== |
- | + | 只需运行下面的extract_firmware.sh。您必须运行此目录内存在的工具。 | |
<pre> | <pre> | ||
Line 65: | Line 63: | ||
</pre> | </pre> | ||
- | ; firmware.bin | + | ; firmware.bin :你想提取的固件的镜像文件, 如, DD-WRT.v23_MICRO_GENERIC.BIN. |
- | ; working_directory : | + | ; working_directory :你要使用的工作目录。这将被胜于保存中间文件和提取系统文件。请注意,在工作目录中的文件可能被删除! |
- | + | ||
- | + | ||
- | + | 不要紧,您提供的固件镜像文件,如,为一WRT54G或华硕WL-500G。这些镜像文件通常都是相同的,只是在头格式有所不同。在重建过程中,将会创建各种型号的镜像。 | |
+ | 一种提取日志创建为'' extract.log ''。<br> | ||
dsf | dsf | ||
Line 78: | Line 75: | ||
</pre> | </pre> | ||
- | == | + | ==修改固件 (manual and/or ipkg_install.sh)== |
- | + | 修改固件很简单。该文件系统是存储在您的工作目录提供给extract_firmware.sh。以下是该目录下的子文件夹: | |
* rootfs/ | * rootfs/ | ||
*** This is where the file system is. Make modifications here. | *** This is where the file system is. Make modifications here. | ||
* image_parts/ | * image_parts/ | ||
- | *** | + | *** 这是中间文件的存储位置。如果您需要更换内核(不是建议更换),您可以通过更改这里的menu.lst。 |
- | + | 一只是改变,增加,或删除的文件在rootfs /向该固件的文件系统的变化。之后你完成更改后,重建固件。 | |
- | + | 安装软件包(.IPK) | |
- | + | 软件包是有关一套软件文件预先建立的集合。OpenWrt和DD - WRT都使用软件包的形式,而且大多数是相互兼容的。这些软件包都存储在一个tar/gzip格式,其中包括一些控制文件的档案中。你可以手动提取和复制的这些文件或使用这个工具包的ipkg_install.sh脚本。此处列出部分软件包,这里不可能列出所有,详见http://ftp.selfnet.de/pub/openwrt/backports/rc5/ 。 | |
- | + | 例如使用: | |
<pre> | <pre> | ||
Line 95: | Line 92: | ||
</pre> | </pre> | ||
- | ; some_package-1.2.5.ipkg : | + | ; some_package-1.2.5.ipkg : 指软件包的文件名。 |
- | ; working_directory : | + | ; working_directory :为您提供相同的工作目录到extract_firmware.sh脚本。 |
- | == | + | ==重新编译固件 (build_firmware.sh) == |
- | + | 重建固件和提取固件同样容易。 使用build_firmware.sh脚本来自动化进程。您必须运行此目录内的存在有的工具。例如使用: | |
- | + | ||
<pre> | <pre> | ||
Line 106: | Line 102: | ||
</pre> | </pre> | ||
- | ; output_directory : | + | ; output_directory :该路径应储存所创建的固件的镜像文件。如果镜像文件已经存在,则将覆盖。各种型号的排放量(这些镜像文件都是相同的,但有不同的格式头使他们的目标模式是由接受固件镜像文件)。 |
- | ; working_directory : | + | ; working_directory : 提供给extract_firmware.sh的工作目录。 |
- | + | 编译日志创建为build.log。 | |
- | == | + | ==在Fedora 9下编译DD-WRT V24== |
- | 在Fedora 9下编译DD-WRT V24== | + | ===获取源代码=== |
- | === | + | |
- | + | ||
我是一名中国在校学生。因为我想从源代码中学习,因此我想得到一份源代码。 | 我是一名中国在校学生。因为我想从源代码中学习,因此我想得到一份源代码。 | ||
- | === | + | ===定制=== |
- | === | + | ===编译=== |
- | === | + | ===检查=== |
- | == | + | ==[~matrix]在Debian下编译DD-WRT V24== |
- | === | + | === 初始化工作区=== |
- | === | + | === 导入源码=== |
- | === | + | ===定制=== |
- | === | + | === 编译源码=== |
- | === | + | === 测试 === |
- | == | + | ==从源文件开始编译DD-WRT== |
- | + | 根据DD-WRT的源码来编译重建DD-WRT是件相当有难度的事情,在这里肯定不是第一次尝试这个工作。你会看到很多奇怪的错误,许多混乱的脚本安装。这,论坛中也没人能作出通过运行程序这种安装充分。在论坛的新闻区远远高于这些新来港,但也很混乱,混淆了。 | |
- | + | Brainslayer没有时间做的一切。直到有一天,是DD - WRT的将建立一个没有任何额外的步骤,我已经写了一些脚本,将成立一个对DD - WRT的建设环境。较新的版本可能打破这些脚本的兼容性的DD - WRT的。如果发生这种情况,我不更新它们,''请''花时间来更新它们'''如果'''你肯定你的修改是适当的。 | |
+ | ===需求=== | ||
+ | 你需要一台Linux机器来编译DD-WRT。它应该工作于安装好了基础开发工具包的机器上。 | ||
- | + | 最低资格(TODO:在有人请完成此列表 - 对/在openwrt先决条件最需要): | |
- | + | ||
- | + | ||
- | + | ||
* Automake v1.9.4 | * Automake v1.9.4 | ||
Line 156: | Line 149: | ||
* build-essentials | * build-essentials | ||
- | + | 若首次,其中大部分要安装/更新: | |
sudo apt-get install gcc g++ binutils patch bzip2 flex bison make gettext unzip zlib1g-dev libc6 | sudo apt-get install gcc g++ binutils patch bzip2 flex bison make gettext unzip zlib1g-dev libc6 | ||
- | === | + | ===组织架构=== |
'''WiP''' | '''WiP''' | ||
- | DD- | + | DD-WRT的的源代码是有组织的,象这样: |
<pre> | <pre> | ||
Line 172: | Line 165: | ||
</pre> | </pre> | ||
- | + | 以下是另一种使用svn释出的源代码树。 | |
<pre> | <pre> | ||
[root@ibm ~]$ find DD-WRT -maxdepth 1 -type d | [root@ibm ~]$ find DD-WRT -maxdepth 1 -type d | ||
Line 187: | Line 180: | ||
</pre> | </pre> | ||
- | === | + | ===获取源码=== |
- | + | 第一步是要获取所需的DD - WRT的版本。您可以通过下载或从DD - WRT的下载部分,或使用Subversion签出这一点。 | |
===Subversion=== | ===Subversion=== | ||
- | + | 首先,您需要得到subversion,可在http://subversion.tigris.org/ | |
- | + | 对于一些Linux发行版,你应该能够使用软件包管理工具得到 subversion 。 | |
- | + | 安装后,您可以通过从DD-WRT的最新源运行以下命令: | |
<pre>svn co http://svn.dd-wrt.com/DD-WRT .</pre> | <pre>svn co http://svn.dd-wrt.com/DD-WRT .</pre> | ||
Line 204: | Line 197: | ||
<pre>svn co svn://svn.dd-wrt.com/DD-WRT .</pre> | <pre>svn co svn://svn.dd-wrt.com/DD-WRT .</pre> | ||
- | + | 这将下载源码到当前的目录,您可以通过更改“目录”。在结束的目录,你想进来走出了“源”。将下载到的一切“DD-WRT的”子目录。 | |
- | ''' | + | '''重要''' |
- | + | 请注意,由于该库包含每个硬件平台的Linux内核版本的源的数繁多,所以需要要很长的时间来下载(大于20G?)。 | |
- | + | 提取除了内核的源代码的所有源代码,请查看[[ddwrt_selective_co.sh]]。 | |
- | + | 请在svn下载释出源码后做一个简单的检查运作。 | |
<pre> | <pre> | ||
[root@ibm DD-WRT]$ svn list | [root@ibm DD-WRT]$ svn list | ||
Line 229: | Line 222: | ||
</pre> | </pre> | ||
- | === | + | ===下载区=== |
- | + | 另一种方式来获得源是从[http://www.dd-wrt.com/dd-wrtv3/dd-wrt/downloads.html下载区]下载它。 | |
- | + | 随后你需要通过使用类似下面的很简单的命令来提取它: | |
<pre>tar -jxvf nameoffile.tar.bz</pre> | <pre>tar -jxvf nameoffile.tar.bz</pre> | ||
--[[User:Jbrazio|jbrazio]] 13:07, 17 December 2008 (CET) The download section seems not to contain the source code for v24 and up. | --[[User:Jbrazio|jbrazio]] 13:07, 17 December 2008 (CET) The download section seems not to contain the source code for v24 and up. | ||
- | === | + | ===说明=== |
- | + | 你需要mipsl的版本为3.4.6和4.1.0的uClibc。他们可在[[http://www.dd-wrt.com/dd-wrtv2/downloads/others/sourcecode/toolchains/toolchains.x86.debian.sp1.tar.bz2]]为x86用户。 也有部分在下载PPC版本的[[http://www.dd-wrt.com/dd-wrtv2/downloads/others/sourcecode/toolchains/toolchains.darwin.ppc.sp1.tar.bz2]]在MIPS - uClibc的开发工具链3.4.6用于建设的内核和4.1.0 mipsel - uClibc的开发工具链,是建设用户模式程序包使用。无论你是否想解压,下面的脚本都将设立适当的符号链接。 | |
- | + | 为了编译DD-WRT,你只需: | |
- | 0. | + | 0. 运行ready_ddwrt.sh 和 ready_ddwrt_root.sh (下面的脚本). |
- | 1. | + | 1. 添加4.1.0工具库到您的bin文件夹路径环境变量。即 |
''PATH=$PATH:/home/db90h/toolchains/4.1.0-uclibc/bin'' | ''PATH=$PATH:/home/db90h/toolchains/4.1.0-uclibc/bin'' | ||
- | 2. | + | 2. 到 DD-WRT/opt 目录运行 ./install.sh. 运行 ./install_* 建立一个特定 |
- | + | 你要求重建共享代码的第一个变量。 | |
+ | 这两个脚本应保存到ready_ddwrt.sh和ready_ddwrt_root.sh。你可以下载他们[[http://www.bitsum.com/files/ready_ddwrt.tar.gz这里]]但是ready_ddwrt.sh缺少最后两节,建立write4和webcomp,所以你最好把刚才的脚本从这个网页复制一下。 | ||
- | + | <b>注意:</b> $DDROOT/src/linux/brcm may not exist on your file structure (it didn't on mine) so to fix the scripts below make a new sub-directory $DDROOT/src/linux/brcm and then move your $DDROOT/src/linux/linux.v2* folders to $DDROOT/src/linux/brcm or simply change the script below. | |
- | <b> | + | <b>注意:</b> If you are having issues with the first ready_ddwrt.sh script building mksquashfs-lzma and it's giving you some error about "ld: skipping incompatible ./lzma/C/7zip/Compress/LZMA_Lib/liblzma.a when searching for -llzma", then this is likely the result of the CPU tuning done in the CFLAGS in the makefiles. I had to edit src/squashfs-tools/Makefile and src/squashfs-tools/lzma/C/7zip/Compress/LZMA_Lib/makefile removing the following optimizations: |
- | + | ||
- | + | ||
* -D_FILE_OFFSET_BITS=64 | * -D_FILE_OFFSET_BITS=64 | ||
* -D_LARGEFILE_SOURCE | * -D_LARGEFILE_SOURCE | ||
Line 417: | Line 409: | ||
</pre> | </pre> | ||
- | + | ===更改DD-WRT=== | |
- | + | ||
- | + | ||
'''''工作进展''''' | '''''工作进展''''' | ||
- | DD-WRT is easily reconfigured. In the /src/router folder you'll find .config* files for each type of distribution. Use 'make menuconfig' to edit the appropriate configuration files. The /src/router/busybox folder contains .config* files for its configuration. Just edit them in a similar way. | ||
- | + | DD - WRT的很容易重新配置。在/ src目录/文件夹中你会发现路由器。配置每分布类型*文件。使用'make menuconfig'后编辑相应的配置文件。在/ src目录/路由器/ busybox的文件夹包含。配置为它的配置*文件。只要以同样的方式编辑它们。 | |
+ | |||
配置少许更改: | 配置少许更改: | ||
- | + | ||
"警告:在更改前及更改后,你需要从内部选项中恢复默认配置文件。这些选项似乎不在配置模板中。 | "警告:在更改前及更改后,你需要从内部选项中恢复默认配置文件。这些选项似乎不在配置模板中。 | ||
<pre> | <pre> | ||
Line 434: | Line 425: | ||
</pre> | </pre> | ||
- | + | 更改少许Busybox配置: | |
- | + | ||
<pre> | <pre> | ||
cd DD-WRT/src/router/busybox | cd DD-WRT/src/router/busybox | ||
Line 443: | Line 433: | ||
</pre> | </pre> | ||
- | + | ||
内核少许更改 | 内核少许更改 | ||
<pre> | <pre> | ||
Line 452: | Line 442: | ||
</pre> | </pre> | ||
- | [[Category:Categories/zh | + | [[Category:Categories/zh cn中国大陆]] |
- | + |
Revision as of 04:43, 21 May 2010
English • Deutsch • Español • Français • Italiano • 日本語 • Polski • Português • Русский • Svenska • 中文(中国大陆) • 中文(台灣) • |
大多数时候,你并不真的需要从源码来重新编译DD-WRT,以满足您所期望的功能。现在,固件修改工具包让这一进程已变得相当容易。 固件修改工具包. 该套件能够使用户无需从源码重新编译固件而修改固件镜像文件的功能变化。它通过其组成部分基于文件系统的支持,提取到固件的squashfs-LZMA的,(其他文件系统可以用)。然后用户可以以提取的文件系统进行修改,然后重新生成固件镜像。
其特点(特征)包括:
- 添加初始化脚本
- 安装新功能包
- 扩展web用户界面
- 移除不需要的功能包
- mix-and-match packages from various DD-WRT variants
警告:在2006年8月4日前在eBay上销售的预刷了DD-WRT固件的路由器已受品牌保护。
Contents |
要求
我竭尽全力降低本套件的使用门槛,以确保任何人均可方便使用本套件。However, to reduce distribution costs and better represent the multi-platform capabilities of this kit, the binary tools in the kit do automatically build themselves the first time you run one of the scripts. 每台机器准备好C或C++库,每台机器的编译固件的环境基础通过本套件来修改DD-WRT固件需要满足下列基础要求(相信每位都容易满足这样的要求的了):
- 一个兼容的平台。下面是具体的支持(或不支持):
- LINUX平台
- OS X 平台
- CYGWIN(注:linux操作系统的一种)平台 **alpha阶段测试(!! 内置固件可能无法启动!!)**
- GNU C (gcc库)
- GNU C++ (g++库)
- 标准C运行时库的开发
- 标准C++运行时库的开发
- GNU make
- tar和gzip(可选,由ipkg_install.sh使用)
对于OS X,请安装Mac OS X 开发工具,支持GNU C和 C++编译器并使其能正常使用。
兼容性
它使用任何一个根文件系统应该能正常的squashfs - LZMA的cybertan结构(linux架构的一种)的固件镜像文件格式。固件,使用squashfs或其他常规的(即cramfs)文件系统,如果将工作的步骤提取文件系统和文件系统的重建小的改动。由于是,它与下面的兼容:
Firmware | Notes |
DD-WRT | |
OpenWrt | probably not at the moment - should require older mksquashfs if using White Russian |
FreeWrt | untested |
Sveasoft Alchemy/Talismen | untested |
HyperWrt | untested |
如果有足够的需求,我可以将默认支持cramfs,常规的squashfs,和旧版本的squashfs和squashfs-LZMA的版本。 请注意,对于那些固件有易于使用的编译系统和/或镜像生成器实用程序,即OpenWrt,这个工具包是较少使用。
用法说明
我已经写了两个脚本,大大简化了程序。基本上,这是一个提取固件的过程中的步骤和一个重建固件的过程中的步骤。
解压固件 (extract_firmware.sh)
只需运行下面的extract_firmware.sh。您必须运行此目录内存在的工具。
$ ./extract_firmware.sh firmware.bin working_directory/
- firmware.bin :你想提取的固件的镜像文件, 如, DD-WRT.v23_MICRO_GENERIC.BIN.
- working_directory
- 你要使用的工作目录。这将被胜于保存中间文件和提取系统文件。请注意,在工作目录中的文件可能被删除!
不要紧,您提供的固件镜像文件,如,为一WRT54G或华硕WL-500G。这些镜像文件通常都是相同的,只是在头格式有所不同。在重建过程中,将会创建各种型号的镜像。
一种提取日志创建为 extract.log 。
dsf
Example:
$ ./extract_firmware.sh dd-wrt.v24-11218_NEWD_mega ./mega/
修改固件 (manual and/or ipkg_install.sh)
修改固件很简单。该文件系统是存储在您的工作目录提供给extract_firmware.sh。以下是该目录下的子文件夹:
- rootfs/
- This is where the file system is. Make modifications here.
- image_parts/
- 这是中间文件的存储位置。如果您需要更换内核(不是建议更换),您可以通过更改这里的menu.lst。
一只是改变,增加,或删除的文件在rootfs /向该固件的文件系统的变化。之后你完成更改后,重建固件。 安装软件包(.IPK) 软件包是有关一套软件文件预先建立的集合。OpenWrt和DD - WRT都使用软件包的形式,而且大多数是相互兼容的。这些软件包都存储在一个tar/gzip格式,其中包括一些控制文件的档案中。你可以手动提取和复制的这些文件或使用这个工具包的ipkg_install.sh脚本。此处列出部分软件包,这里不可能列出所有,详见http://ftp.selfnet.de/pub/openwrt/backports/rc5/ 。 例如使用:
$ ./ipkg_install.sh some_package-1.2.5.ipk working_directory/
- some_package-1.2.5.ipkg
- 指软件包的文件名。
- working_directory
- 为您提供相同的工作目录到extract_firmware.sh脚本。
重新编译固件 (build_firmware.sh)
重建固件和提取固件同样容易。 使用build_firmware.sh脚本来自动化进程。您必须运行此目录内的存在有的工具。例如使用:
$ ./build_firmware.sh output_directory/ working_directory/
- output_directory
- 该路径应储存所创建的固件的镜像文件。如果镜像文件已经存在,则将覆盖。各种型号的排放量(这些镜像文件都是相同的,但有不同的格式头使他们的目标模式是由接受固件镜像文件)。
- working_directory
- 提供给extract_firmware.sh的工作目录。
编译日志创建为build.log。
在Fedora 9下编译DD-WRT V24
获取源代码
我是一名中国在校学生。因为我想从源代码中学习,因此我想得到一份源代码。
定制
编译
检查
[~matrix]在Debian下编译DD-WRT V24
初始化工作区
导入源码
定制
编译源码
测试
从源文件开始编译DD-WRT
根据DD-WRT的源码来编译重建DD-WRT是件相当有难度的事情,在这里肯定不是第一次尝试这个工作。你会看到很多奇怪的错误,许多混乱的脚本安装。这,论坛中也没人能作出通过运行程序这种安装充分。在论坛的新闻区远远高于这些新来港,但也很混乱,混淆了。
Brainslayer没有时间做的一切。直到有一天,是DD - WRT的将建立一个没有任何额外的步骤,我已经写了一些脚本,将成立一个对DD - WRT的建设环境。较新的版本可能打破这些脚本的兼容性的DD - WRT的。如果发生这种情况,我不更新它们,请花时间来更新它们如果你肯定你的修改是适当的。
需求
你需要一台Linux机器来编译DD-WRT。它应该工作于安装好了基础开发工具包的机器上。
最低资格(TODO:在有人请完成此列表 - 对/在openwrt先决条件最需要):
- Automake v1.9.4
- GNU Make v?
- GCC/G++ v4
- ncurses
- binutils
- tar
- bzip2
- gzip
- g++
- patch
- flex
- bison
- make
- gettext
- unzip
- libz-dev
- libc headers
- build-essentials
若首次,其中大部分要安装/更新:
sudo apt-get install gcc g++ binutils patch bzip2 flex bison make gettext unzip zlib1g-dev libc6
组织架构
WiP DD-WRT的的源代码是有组织的,象这样:
src/ source router/ packages linux/ kernel opt/ make/control
以下是另一种使用svn释出的源代码树。
[root@ibm ~]$ find DD-WRT -maxdepth 1 -type d DD-WRT DD-WRT/redboot DD-WRT/src DD-WRT/opt DD-WRT/tools DD-WRT/image DD-WRT/.svn DD-WRT/.subversion [root@ibm ~]$
获取源码
第一步是要获取所需的DD - WRT的版本。您可以通过下载或从DD - WRT的下载部分,或使用Subversion签出这一点。
Subversion
首先,您需要得到subversion,可在http://subversion.tigris.org/ 对于一些Linux发行版,你应该能够使用软件包管理工具得到 subversion 。
安装后,您可以通过从DD-WRT的最新源运行以下命令:
svn co http://svn.dd-wrt.com/DD-WRT .
--jbrazio 13:05, 17 December 2008 (CET) HTTP method is not working currently.
or
svn co svn://svn.dd-wrt.com/DD-WRT .
这将下载源码到当前的目录,您可以通过更改“目录”。在结束的目录,你想进来走出了“源”。将下载到的一切“DD-WRT的”子目录。
重要
请注意,由于该库包含每个硬件平台的Linux内核版本的源的数繁多,所以需要要很长的时间来下载(大于20G?)。
提取除了内核的源代码的所有源代码,请查看ddwrt_selective_co.sh。
请在svn下载释出源码后做一个简单的检查运作。
[root@ibm DD-WRT]$ svn list .cvsignore .project Makefile image/ opt/ redboot/ src/ tools/ [root@ibm DD-WRT]$
下载区
另一种方式来获得源是从[1]下载它。 随后你需要通过使用类似下面的很简单的命令来提取它:
tar -jxvf nameoffile.tar.bz
--jbrazio 13:07, 17 December 2008 (CET) The download section seems not to contain the source code for v24 and up.
说明
你需要mipsl的版本为3.4.6和4.1.0的uClibc。他们可在[[2]]为x86用户。 也有部分在下载PPC版本的[[3]]在MIPS - uClibc的开发工具链3.4.6用于建设的内核和4.1.0 mipsel - uClibc的开发工具链,是建设用户模式程序包使用。无论你是否想解压,下面的脚本都将设立适当的符号链接。
为了编译DD-WRT,你只需:
0. 运行ready_ddwrt.sh 和 ready_ddwrt_root.sh (下面的脚本). 1. 添加4.1.0工具库到您的bin文件夹路径环境变量。即 PATH=$PATH:/home/db90h/toolchains/4.1.0-uclibc/bin 2. 到 DD-WRT/opt 目录运行 ./install.sh. 运行 ./install_* 建立一个特定 你要求重建共享代码的第一个变量。
这两个脚本应保存到ready_ddwrt.sh和ready_ddwrt_root.sh。你可以下载他们[[4]]但是ready_ddwrt.sh缺少最后两节,建立write4和webcomp,所以你最好把刚才的脚本从这个网页复制一下。
注意: $DDROOT/src/linux/brcm may not exist on your file structure (it didn't on mine) so to fix the scripts below make a new sub-directory $DDROOT/src/linux/brcm and then move your $DDROOT/src/linux/linux.v2* folders to $DDROOT/src/linux/brcm or simply change the script below.
注意: If you are having issues with the first ready_ddwrt.sh script building mksquashfs-lzma and it's giving you some error about "ld: skipping incompatible ./lzma/C/7zip/Compress/LZMA_Lib/liblzma.a when searching for -llzma", then this is likely the result of the CPU tuning done in the CFLAGS in the makefiles. I had to edit src/squashfs-tools/Makefile and src/squashfs-tools/lzma/C/7zip/Compress/LZMA_Lib/makefile removing the following optimizations:
- -D_FILE_OFFSET_BITS=64
- -D_LARGEFILE_SOURCE
- -mtune=opteron
- -march=opteron
- -mfpmath=sse
- -m3dnow
- -msse2
- -m64
- -mmmx
- -msse3
I kept the "-funroll-loops" and "-O3" optimizations since those should be non-CPU-specific. By all mean leave any optimizations that apply to your CPU. For a 64-bit CPU, leave -D_FILE_OFFSET_BITS=64, -D_LARGEFILE_SOURCE, and -m64. If you're curious as to what your cpu has, look at the flags listed in /proc/cpuinfo.
#!/bin/sh # # title: ready_ddwrt.sh # version: 1.14 # author: Jeremy Collake <jeremy@bitsum.com> # # This silly script will prepare a build environment # for DD-WRT. You must also run ready_ddwrt_root.sh. # # RL 11/01/2006: Added line to compile tools/webcomp.c and write4.c # MINPARAMS=1 if [ $# -lt "$MINPARAMS" ] then echo usage: echo ready_ddwrt.sh [ddwrt_base_path] echo echo i.e.: echo ready_ddwrt.sh /home/db90h/DD-WRT echo exit 1 fi ME=`whoami` DDROOT=$1 echo I am $ME echo DD-WRT is at $DDROOT echo ................................................................ echo creating some symlinks echo ................................................................ rm $DDROOT/src/linux/brcm/linux.v23/include/asm ln -s $DDROOT/src/linux/brcm/linux.v23/include/asm-mips $DDROOT/src/linux/brcm/linux.v23/include/asm # for CFE building ln -s $DDROOT/src/linux/brcm/linux.v23 $DDROOT/src/linux/linux echo done echo ................................................................ echo adjusting some attributes echo ................................................................ chmod +x $DDROOT/src/router/iptables/extensions/.dccp-test chmod +x $DDROOT/src/router/iptables/extensions/.layer7-test echo done #echo ................................................................ #echo fixing alconf's #echo ................................................................ #cd src/router/pptpd #aclocal #cd ../../.. echo ................................................................ echo "re-building some tools" echo ................................................................ cd $DDROOT # make bb_mkdep cd src/router/busybox/scripts rm bb_mkdep make bb_mkdep cd ../../../.. # make jsformat cd src/router/tools rm jsformat make jsformat cd ../../.. # make mksquashfs-lzma cd src/squashfs-tools/ rm mksquashfs-lzma make cp mksquashfs-lzma ../linux/brcm/linux.v23/scripts/squashfs cd ../.. # make strip cd tools rm ./strip gcc strip.c -o ./strip cd .. # make write3 cd tools rm ./write3 gcc write3.c -o ./write3 cd .. # make write4 cd tools rm ./write4 gcc write4.c -o ./write4 cd .. # make webcomp cd tools rm ./webcomp gcc -o webcomp -DUEMF -DWEBS -DLINUX webcomp.c cd .. echo done
This second script needs to be run as root ...
#!/bin/sh # # title: ready_ddwrt_root.sh # version: 1.1 # author: Jeremy Collake <jeremy@bitsum.com> aka db90h # # This silly script will prepare a build environment # for DD-WRT. You must also run ready_ddwrt.sh. # MINPARAMS=2 if [ $# -lt "$MINPARAMS" ] then echo echo This script needs root access. echo echo usage: echo ready_ddwrt_root.sh [ddwrt_base_path] [3.4.6_toolchain_base_path] echo echo i.e.: echo ready_ddwrt_root.sh /home/db90h/DD-WRT /home/db90h/3.4.6-ucliblc-0.9.28 echo exit 1 fi ME=`whoami` DDROOT=$1 TCHAIN=$2 echo I am $ME echo DD-WRT is at $DDROOT echo mipsl-uclibc-x toolchain is at $TCHAIN echo ................................................................ echo creating some symlinks echo ................................................................ # duh, this will already be here mkdir -p /opt rm /opt/3.3.6 ln -s $TCHAIN /opt/3.3.6 rm /GruppenLW ln -s $DDROOT/image /GruppenLW echo All done!
更改DD-WRT
工作进展
DD - WRT的很容易重新配置。在/ src目录/文件夹中你会发现路由器。配置每分布类型*文件。使用'make menuconfig'后编辑相应的配置文件。在/ src目录/路由器/ busybox的文件夹包含。配置为它的配置*文件。只要以同样的方式编辑它们。
配置少许更改:
"警告:在更改前及更改后,你需要从内部选项中恢复默认配置文件。这些选项似乎不在配置模板中。
cd DD-WRT/src/router cp .config .config_micro make menuconfig cp .config_micro .config
更改少许Busybox配置:
cd DD-WRT/src/router/busybox cp .config .config_micro make menuconfig cp .config_micro .config
内核少许更改
cd DD-WRT/src/router/busybox cp .config .config_micro make menuconfig cp .config_micro .config