|
楼主 |
发表于 2010-11-11 04:01
|
显示全部楼层
Openwrt中文手册
维基教科书,自由的教学读本
跳转到: 导航, 搜索
Split-arrows.svg 此條目被建議分割為若干不同條目。若適當,也應同時設立消歧義頁来引導這些條目。(討論)
OpenWRT中文手册
目录
[隐藏]
* 1 引言
* 2 第一章 路由器设置简介
o 2.1 1.1 快速开始
+ 2.1.1 1.1.1 安装
+ 2.1.2 1.1.2 初始化设置
+ 2.1.3 1.1.3 安全模式
o 2.2 1.2 配置OpenWrt
+ 2.2.1 1.2.1 网络
* 3 第二章 开发指南
o 3.1 2.1 系统结构
+ 3.1.1 2.1.1 构造镜像
# 3.1.1.1 下载OpenWrt
# 3.1.1.2 目录结构
o 3.2 2.3 使用Openwrt
+ 3.2.1 2.3.1 编译/重编译组件
+ 3.2.2 2.3.2 使用OpenWrt内部的quilt
* 4 附件
[编辑] 引言
本文是OpenWRT源码手册的中文译本。可以通过版本控制工具SVN或者GIT来得到OpenWRT的源码,命令如下: svn co svn://svn.openwrt.org/openwrt/branches/8.09 git://nbd.name/openwrt.git 下载完源码后,需要进入docs目录编译生成pdf或html格式的英文文档。命令如下:
# cd docs
# make
当前目录下的openwrt.pdf和openwrt.html即为生成的最终文件。
[编辑] 第一章 路由器设置简介
[编辑] 1.1 快速开始
[编辑] 1.1.1 安装
[编辑] 1.1.2 初始化设置
[编辑] 1.1.3 安全模式
[编辑] 1.2 配置OpenWrt
[编辑] 1.2.1 网络
[编辑] 第二章 开发指南
[编辑] 2.1 系统结构
[编辑] 2.1.1 构造镜像
OpenWrt选择了另一种方式来生成固件:下载,打补丁,编译,一切从零开始,即使交叉编译链也是如此。
[编辑] 下载OpenWrt
本文仅针对OpenWrt的Kamikaze分支编写,可以使用如下subversion命令下载代码:
$ svn checkout svn://svn.openwrt.org/openwrt/trunk kamikaze
另外,还有一个trac显示界面[1],可以用它来浏览通过svn进行的提交和代码。
[编辑] 目录结构
有四个关键的顶层目录:
* tools
* toolchain
* package
* target
tools和toolchain包含了一些通用命令,用来生成固件、编译器、和C库。生成结果会储存在以下三个目录下:build dir/host是一个临时目录,用来储存不依赖于目标平台的工具,build dir/toolchain-<arch>*用来储存依赖于指定平台的编译链,staging dir/toolchain-<arch>*是编译链的最终安装位置。通常你不需要改动编译链目录下的任何东西,unless you intend to add a new version of one of the components above.
* build dir/host
* build dir/toolchain-<arch>*
package——包。在OpenWrt固件中,几乎所有东西都是.ipk,这样就可以很方便的安装和卸载。注意:这些包不是在主分支中维护的,但是可以使用package feeds系统通过subversion来获取他们。
$ ./scripts/feeds update
这些包能够扩展基本系统的功能,只需要将他们链接进入主干。之后,这些包将会显示在配置菜单中。对于kamikaze,你可以使用这样的命令:
$ ./scripts/feeds search nmap
Search results in feed 'packages':
nmap Network exploration and/or security auditing utility
$ ./scripts/feeds install nmap
如果想包含所有的包,可以使用如下命令:
$ make package/symlinks
目标系统指嵌入式设备,针对不同的平台有不同的特性。针对这些特性,"target/linux"目录下按照平台<arch>进行目录划分,里面包括了针对标准内核的补丁,特殊配置等。There's also the "target/image" directory which describes how to package a firmware for a specific platform.
target and package两部分都需要"build dir/<arch>"作为编译的临时目录。另外,编译链,目标平台,包要下载的东西都放在dl目录下。
* build dir/<arch>
* dl
[编辑] 2.3 使用Openwrt
以下的段落将会介绍一些技巧,可以提高日常工作的效率。
[编辑] 2.3.1 编译/重编译组件
buildroot可以很方便的重编译整个系统,也可以只编译某个部分,比如工具链、内核模块、内核和软件包等。
如果你做了一些修改,然后想重编译工具链,可以执行如下命令:
make toolchain/{clean,compile,install}
它将会clean, compile and install工具链,将会显示如下:
make[1] toolchain/clean
make[2] -C toolchain/kernel-headers clean
make[2] -C toolchain/binutils clean
make[2] -C toolchain/gcc clean
make[2] -C toolchain/uClibc clean (glibc or eglibc when chosen)
当然,你也可以分开编译工具链的几个部分(binutils, kernel-headers gcc, C library)。
可以用同样的方法编译软件包。
make package/busybox/{clean,compile,install}
will clean, compile and install buysbox (if selected to be installed on the final rootfs).
Supposing that you made changes to the Linux kernel, but do not want to recompile everything, you can recompile only the kernel modules by issuing:
make target/linux/compile To recompile the static part of the kernel use the following command: make target/linux/install
[编辑] 2.3.2 使用OpenWrt内部的quilt
OpenWrt integrates quilt in order to ease the package, kernel and toolchain patches maintenance when migrating over new versions of the software.
Quilt intends to replace an old workflow, where you would download the new source file, create an original copy of it, an a working copy, then try to apply by hand old patches and resolve conflicts manually. Additionnaly, using quilt allows you to update and fold patches into other patches easily.
Quilt is used by default to apply Linux kernel patches, but not for the other components (toolchain and packages).【原创】ASUS WL-HDD OpenWRT固件编译指南
love77不在线
花了一个晚上研究了下OpenWRT的架构, 给WL-HDD盒子编译了个自定义的固件. OpenWRT使用起来还是很简单, 下面是自己编译家用Web Server的例子:
编译环境 Ubuntu 9.10 Wubi Installation, 预先安装build-essential, subversion等工具
1. 从SVN把代码取回来 svn co svn://svn.openwrt.org/openwrt/branches/8.09
2. make distclean
3. 进入script目录, 运行./feeds update 从openwrt官方网站升级最新的应用程序列表, 然后根据自行需要加入对应的应用程序, 我加载了
./feeds install php5 vsftpd lighttpd nano
具有依存关系的应用程序会自动加入列表.
4. make menuconfig, 注意内核选择 BroadCom 2.4, 下面设备类型选择 WL-HDD, 系统可以自动加载LED等驱动.
为了支持硬盘, Kernel Modules里的Block Devices要加入 kmod-ide-core, kmod-ide-pdc202xx
Filesystems 加入 kmod-fs-ext2, kmod-fs-ext3
Utilities 加入 Editors->nano, Filesystem->e2fsprogs, disc->fdisk, swap-utils
Base system里可以把类似 dnsmasq, iptables等占用空间的组件都移除掉.
5. 执行make V=99 编译, 过程中会自动去网上下载对应程序的源代码, 过程十分漫长, 挂机睡觉看片均可...
如果要自行加入目录或修改开机banner, 到 kamikaze/packages/base-files ; 修改应用程序配置文件, 到 kamikaze/feeds 下对应目录
在主目录下建立升级脚本 flash.sh 内容为
代码 (双击代码复制到粘贴板)
#!/bin/bash
echo -en "get ASUSSPACELINK\x01\x01\xa8\xc0 /dev/null\nquit\n" | tftp 192.168.1.220
echo -en "binary\nput ./bin/openwrt-brcm-2.4-squashfs.trx ASUSSPACELINK\nquit\n" | tftp 192.168.1.220
按住WL-HDD的Reset按钮后上电, PWR指示灯闪烁后进入固件升级状态, 此时用事先在主目录下写好的升级脚本flash.sh进行升级即可.
可怜的WL-HDD只有4MB的Flash, 一定要精心挑选驱动程序和编译进内核的模块, 尽量让文件系统保持在3.5MB以下, 不然... 反正不打算用来当无线设备, 我直接把Broadcom的无线部分驱动全部移除. 留出了足够的空间配置了php5, pdo_sqlite, vsftpd, lighttpd ; 其中 c运行库和gcc运行库一定要内核编译, 否则系统无法启动.
在/etc/init.d/下可建立 (预先可以直接配置到base-files里) 一个自启动的文件, 用于挂载硬盘
代码 (双击代码复制到粘贴板)
#!/bin/sh /etc/rc.common
START=99
STOP=40
start()
{
mount /dev/ide/host0/bus0/target0/lun0/part1 /home
mount /dev/ide/host0/bus0/target0/lun0/part2 /opt
swapon /dev/ide/host0/bus0/target0/lun0/part3
}
stop()
{
umount /dev/ide/host0/bus0/target0/lun0/part1
umount /dev/ide/host0/bus0/target0/lun0/part2
swapoff /dev/ide/host0/bus0/target0/lun0/part3
}
restart()
{
stop
start
}
然后修改 /etc/opkg.conf (可以预先配置到feeds), 内容为
代码 (双击代码复制到粘贴板)
src/gz snapshots http://downloads.openwrt.org/snapshots/trunk/brcm-2.4/packages
dest root /opt
dest ram /opt/tmp
lists_dir ext /opt/var/opkg-lists
option overlay_root /opt
可以让opkg安装的应用程序直接安装到硬盘的应用程序分区.
我在盒子里安的是8G的CF卡, 分区表
Disk /dev/ide/host0/bus0/target0/lun0/disc: 8019 MB, 8019099648 bytes
16 heads, 63 sectors/track, 15538 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/ide/host0/bus0/target0/lun0/part1 1 15000 7559968+ 83 Linux
/dev/ide/host0/bus0/target0/lun0/part2 15001 15300 151200 83 Linux
/dev/ide/host0/bus0/target0/lun0/part3 15301 15538 119952 82 Linux swap / Solaris
全部弄完, 启动lighttpd后, 配置好Fast-Cgi模式的PHP5, 运行速度还不错. 毕竟是160MHz主频, 16MB RAM的超级Mini Server啊, 哈哈哈
*定期在主目录下 svn up 后 make clean , make V=99 是好习惯
自己的小Server跑着 http://lovelove.homeip.net:8080/env.php |
|