本教程的编译环境:win7 专业版+VMwareWorkstation6.5虚拟机+Ylmf OS 3.0
编译的过程中要保持电脑联网
搭建编译环境
应用程序–附件–终端
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 gawk
sudo apt-get install asciidoc
sudo apt-get install libz-dev
编译环境搭建完成
mkdir openwrt 创建一个openwrt文件夹
cd openwrt 进入openwrt文件夹
svn co svn://svn.openwrt.org/openwrt/branches/backfire下载官网的源码
./scripts/feeds update -a 更新软件包
./scripts/feeds install -a 安装软件包
make menuconfig 进入定制界面(里面可以选择芯片的型号,集成的组件等等,根据实际情况选择)
defconfig
make V=99 (开始编译)
剩下的就是等待了,第一次编译需要的时间相对比较长,这个跟你的电脑配置和网速有关。
下面以编译TP-LINK 741N的openwrt固件为例,只编译基本的功能:
make menuconfig
Target System—AR71xx/AR7240/AR913x/AR934x CPU型号
Target Profile—TP-LINK 741
LuCI?Collections?? * luci 添加Luci
LuCI?Translations?- * luci-i18n-chinese 添加中文
EXT—-YES
make V=99 开始编译
成功后在bin文件夹里有编译好的固件。
如您选择安装fedora11或者fedora9
Fedora 11 or 9:
# yum install autoconf binutils bison bzip2 flex gawk gcc gcc-c++ gettext make ncurses-devel patch unzip wget zlib-devel
由于fedora 安装包本来就很全面,所以需另外安装的东西较少。所以一般情况下,推荐安装fedora 11。
如果你能阅读英文,那么请参考
http://wiki.openwrt.org/doc/howto/buildroot,
OpenWrt英文论坛2006年文章:Building OpenWrt Kamikaze from source
https://forum.openwrt.org/viewtopic.php?id=9180
这里有更详细权威的说明。
2. 获取OpenWrt源代码和安装包,更新
1. svn checkout svn://svn.openwrt.org/openwrt/trunk
2. cd trunk
3. ./scripts/feeds update -a
4. ./scripts/feeds install -a
3. 配置编译选项
make menuconfig
默认就是brcm-2.4平台,模块前面选项有3种:
*:表示该模块直接编译到核心中
M:该模块以被核心支持,可以后再安装
空白:不支持该模块
具体模块的起什么作用需要多google.
4. 编译选项配置保存后,开始编译
make V=99
V=99表示输出详细的debug信息
make world表示编译所有
如您的PC是多核CPU,那么加j=2 选项理论上能加快编译速度。如make -j 2 V=99可加快编译速度(不推荐使用)
如您只想清除/编译某个模块,您可以做如下类似操作make package/qos/clean, make package/qos/compile, make package/qos/install。
更详细的信息建议您参考
http://downloads.openwrt.org/kamikaze/docs/openwrt .html
应该是当前最新最权威的文档
5. 第一次编译由于要下载大量的软件包,慢慢的等吧,快则半小时,慢则2,3小时.
如果下载过慢,建议您中断编译过程,然后用迅雷去主动下载,放到./dl目录下。一个加快速度的小技巧:
本站小编已经将将一些常用的软件包打包成dl.tar,放在http://ul.to/2y8a2w, 下载后用tar xvf
dl.tar(在windows下用winrar打开即可,然后你用ftp或者samba之类传到Linux
PC上),将解包出来的东东直接放到./dl目录下,相必会大大加快初次安装、编译的速度。同样在http://ul.to/fasgus上可下载
linux-2.36.30.10.tar.bz2,当然您也可以用迅雷之类的工具来下。
6. 编译好的文件在当前目录的bin文件夹下。
如果是brcm-2.4
ls bin/brcm-2.4/
就可以看到很多熟悉的文件了。
『OpenWrt.org.cn』补充:
如果是编译DB120等BCM6358固件,则在需要make menuconfig里选择CPU为brcm63xx
之前家里用的一直USR9108加上自己编译修改的内核及软件配合自己整的VIA小板子动物机,可是编译移植那真是叫一个痛苦,各种补丁各种依赖关系,实在头大,费时费力。而且还有那个悲催的USB1.1,那速度真叫认抓狂…我的移动硬盘插上基本就是个摆设…每每看到openwrt那丰富的软件资源,那真叫一个眼馋,虽然我的USR9108也能刷,可是那个单USB1.1的确令我很是失望,所以也就没有再折腾它的欲望了,于是干脆就整了个DB120,主要就是看上了它的双USB2.0,这样一来它的可玩性就大大提高了,无限可能呀无限可能…
我买回来的这个db120已经刷好了openwrt中文论坛的db120-openwrt.org.cn-10.03.336-DIY-mini-0916,于是我拿出我那个在房间门口落满灰尘的华为MT883d插入路由机后的USB口,然后向导配置,上网成功…可是这样又平白无故浪费我一个USB口,虽然说可以插个USB
Hub来解决可是这样的方法又不够低炭。
在网上找了一下,这个BCM63XX系列芯片的路由能刷以下几个固件:
- 电信原版:这个固件基本是个半残废,只具备一些路由器基本的功能,貌似还有个Ftp,SMB。ADSL也能正常工作,可也就仅限于此了,发挥不了此路由器硬件应有的性能,可玩性基本没有;所以直接无视之。
- OpenWrt Backfire:这个固件openwrt应有的功能都能正常使用,可以直接ssh,各种玩法都比较成熟,可惜的是ADSL不能正常工作,还得挂个猫当尾巴,而且我的情况是浪费个USB口,就算不浪费USB口也浪费个电源插头…
- BCM6358英文原版固件:这个是BCM的官方固件,跟电信版的差不多,可能某些功能稍微强大一点,但是也几乎没多大的可玩性。
- DSL-2760U的改版固件:因为这个固件官方开源了内核以及一些软件的源代码,这个设备的硬件使用的也是BCM63XX,所以很容易移植到DB120上面,并且有网友为其移植了BT与电驴的软件,这个方法与我之前用的USR9108移植发放是一样的,如果要移植其他软件也是很费事的…
对比了这几个固件发现都不能满足我的要求,最无限接近的也就openwrt的了,可惜的是它并不支持ADSL,于是就在思考能不能用DSL-2760U的
内核与闭源驱动并配合openwrt丰富的软件资源,这样的话只需要编译DSL的内核与模块,比起自己移植软件,解决库依赖要省事的多了。
本来已经自己着手做了,可是偶然在openwrt中文论坛转了一圈,发现还真有人早就这么做了,而且已经比较完美的解决了,现成的固件已经放出来了,具体链接在这里,下面我说说使用这个固件的刷机过程:
- 使用TTL线连接路由器,设置好超级终端,超级终端的参数如不知请自行google之。
- 关闭设备电源,按住设备上的RST键,然后打开电源,15秒钟后松开RST。
- 查看CFE的版本,如果启动信息输出滚动过快请多次重启,这步是必须的,因为这个混合固件有CFE的版本要求,请看清后再下载其对应版本。
- 在看到“*** Press any key to stop auto run (1 seconds) ***”这段信息时,迅速按任意键,然后终端上会显示”CFE”这样的提示符
- 然后输入e a,来请空flash,如果之前输入过其它固件的话,这步必须要做。
- 然后重新启动再次进入到CFE,此时使用网线连接到LAN4口(靠近电源那个),将网卡IP设置为192.168.1.*,在浏览器里输入192.168.1.1回车,点击浏览按钮选择固件文件,然后点升级。
- 路由器升级完成后会自动重启,重启完成后把网线插入LAN4以外的任意口。
- 然后ssh到192.168.1.1,默认用户:root 密码:admin
-
成功登入后编辑/etc/config/modem,注释掉option port与option encaps让其使用默认即可,修改option vpi 与
option vci,如不只具体的vpi/vci参数请致电当地运营商 - 修改/etc/config/network,将wan口的ifname设置为inet_X_X,这里的两个X分别用vpi/vci填充,option username与option password设置为自己宽带的用户名与密码
- 一切就绪后开始尝试拨号:/etc/init.d/modem boot
- 成功后将其设为开机自动启动:/etc/init.d/modem enable
- 安装firewall使内网机器也能上网,opkg update; opkg install firewall;reboot
前一篇文章大概介绍了刷入带ADSL驱动的openwrt以及简单的配置,这次就总结下一个好玩的应用,使用android手机+mpd打造一台无线音乐播放器。
所需装备:
- DB120或者RG100A或者其它BCM6358芯片的路由一台
-
USB声卡一件(我手里的两个声卡都能很好的工作,一个是steelseries
5HV2,一个是北蓝鼠 USB声卡 7.1声卡,就这两个的音质来说更加倾向于steelseries 5HV2) - USB2.0的移动硬盘或者U盘一个
- 运行android系统的手机或者平板
首先要保证路由器已经刷入了openwrt,并且已经能正常上网
安装USB、文件系统的内核模块
opkg update
opkg install kmod-usb-core
opkg install kmod-usb-storage
opkg install kmod-usb-ohci
opkg install kmod-usb-ohci
opkg install kmod-fs-ext2
opkg install kmod-fs-ext3
opkg install kmod-fs-vfat
opkg install kmod-fuse
opkg install ntfs-3g
配置自动挂载USB存储设备
安装mount工具
opkg install mount-utils
编辑配置文件
vi /etc/hotplug.d/block/10-mount
#!/bin/sh# Copyright (C) 2009 OpenWrt.org (C) 2010 OpenWrt.org.cn
blkdev=`dirname $DEVPATH`
if [ `basename $blkdev` != “block” ]; thendevice=`basename $DEVPATH`
case “$ACTION” in
add)
mkdir -p /mnt/$device
# vfat ntfs-3g check
if [ `which fdisk` ]; then
isntfs=`fdisk -l | grep $device | grep NTFS`
isvfat=`fdisk -l | grep $device | grep FAT`
isfuse=`lsmod | grep fuse`
isntfs3g=`which ntfs-3g`
else
isntfs=””
isvfat=””
fi# mount with ntfs-3g if possible, else with default mount
if [ “$isntfs” -a “$isfuse” -a “$isntfs3g” ]; then
ntfs-3g -o nls=utf8 /dev/$device /mnt/$device
elif [ “$isvfat” ]; then
mount -t vfat -o iocharset=utf8,rw,sync,umask=0000,dmask=0000,fmask=0000 /dev/$device /mnt/$device
else
mount /dev/$device /mnt/$device
fi
if [ -f /dev/${device}/swapfile ]; then
mkswap /dev/${device}/swapfile
swapon /dev/${device}/swapfile
fi
;;
remove)
if [ -f /dev/${device}/swapfile ]; then
swapoff /dev/${device}/swapfile
fi
umount /dev/$device
;;
esacfi
修改可执行权限
chmod 777 /etc/hotplug.d/block/10-mount
配置USB声卡
安装声卡内核模块
opkg install kmod-input-core
opkg install kmod-soundcore
opkg install kmod-usb-audio
然后查看/dev下是否有dsp、audio、mixer
测试声卡是否工作正常,声卡与音箱连接并且插入含有MP3文件的USB存储设备
这里假设usb设备挂载路径为/mnt/sdb1
opkg install madplay
madplay /mnt/sba1/*.mp3
如正常发声则表示声卡驱动成功
安装配置MPD
opkg install mdnsresponder
opkg install libspeex
opkg installmpd
编辑mpd配置文件
vi /etc/mpd.conf
修改为:
#=== edit options as follows ===
music_directory “/mnt/sdb1″
playlist_directory “/mnt/sdb1/.mpd/playlist”
db_file “/mnt/sdb1/.mpd/mpd.db”
log_file “/mnt/sdb1/.mpd/mpd.log”
error_file “/mnt/sdb1/.mpd/mpd.error”
pid_file “/mnt/sdb1/.mpd/mpd.pid”
state_file “/mnt/sdb1/.mpd/mpdstate”# use this if you want to use OSS audio output
audio_output {
type “oss”
name “my OSS sound card”
device “/dev/dsp” # optional
format “44100:16:2″ #optional
}# OSS Mixer
mixer_type “oss”
mixer_device “/dev/mixer”
mixer_control “PCM”#=== edit end ===
建立mpd所需目录与文件
mkdir -p /mnt/sdb1/.mpd/playlist
touch /mnt/sdb1/.mpd/{mpd.db,mpd.log,mpd.error,mpd.pid,mpdstate}
运行mpd
/usr/bin/mpd ?create-db
安装mpc控制播放
opkg install mpc
mpc listall | mpc add
mpc play
用手机控制播放
手机连接路由器,在android电子市场里搜索 MPDroid 并安装
运行MPDroid,在WLAN based connection里选择连接无线路由的essid
在Host选项里填入路由器的IP地址,其它则默认,然后返回到主界面
此时即可用手机无线控制路由器的播放、暂停以及其它操作