以记录为主。内容多为从其他高手处借借鉴面来。多为方面自已以后查询。
首先从网上下载代码。
svn co svn://svn.openwrt.org/openwrt/trunk
下载好代码以后,开始下载一此编译时需要的工具。
sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip zip unrar p7zip p7zip-rar p7zip-full sharutils subversion libncurses5-dev ncurses-term zlib1g-dev gawk git-core libssl-dev下载好工具以后,就开始编译 代码了。
首先更新feeds目录下面的东西。
在/trunk 路径下执行下面命令:
./scripts/feeds update -a
./scripts/feeds install -a
Feeds是OpenWRT环境所需要的软件包套件.比较重要的feeds有:
pacakges’:一些额外的基础路由器特性软件
‘LuCI’:OpenWRT默认的GUI
‘Xwrt’:另一种可选的GUI界面
注意了。编译openwrt的时候,最好用 普通用户权限编译。否则后面会有蛋疼的麻烦。
另外,make dirclean 慎用。
我用过之后,再编译,就会报一些权限上面的蛋疼错误。本人没有细究,chmod 777 编译的。
蛋疼的一逼。
执行完上面命令以后,就可以编译了。
首先make menuconfig 这个跟linux内核的功能一毛一样。就是配置一些功能.
//列一些常用功能 及编译时需要选择的一些选项。
Target System--->Ralink RT288x/RT3xxx
Sbutarget --->MT7620 base board
Target profile --->xiaomi Miwifi Mini
选择LuCI 配置(web网页管理程序):
LuCI ---> 1. Collections ---> luci 启用LuCI
LuCI ---> 2. Modules ---> Translations --->Chinese (zh-cn) 支持中文
LuCI ---> 3. Applications ---> luci-app-commands 网页Shell
LuCI ---> 3. Applications ---> luci-app-firewall 防 火 墙
LuCI ---> 3. Applications ---> luci-app-ntpc 时间同步服务器
LuCI ---> 3. Applications ---> luci-app-qos 上网管理
LuCI ---> 3. Applications ---> luci-app-samba 网络共享
LuCI ---> 3. Applications ---> luci-app-ddns 动态域名
LuCI ---> 4. Themes ---> luci-theme-bootstrap 默认主题 大家可以自行增减插件
Base system ---> block-mount USB挂载
Kernel modules ---> Filesystems ---> kmod-fs-ext4 支持ext4文件系统
Kernel modules ---> Filesystems ---> kmod-fs-nfs 支持NFS文件系统
Kernel modules ---> Filesystems ---> kmod-fs-nfs-common(自动被选中)
Kernel modules ---> Filesystems ---> kmod-fs-ntfs 支持NTFS文件系统
Kernel modules ---> Filesystems ---> kmod-fs-vfat 支持FAT32文件系统
Kernel modules ---> Native Language Support ---> kmod-nls-cp437 支持中文
Kernel modules ---> Native Language Support ---> kmod-nls-iso8859-1 支持中文
Kernel modules ---> Native Language Support ---> kmod-nls-utf8 支持中文
Kernel modules ---> Other modules ---> kmod-mmc 支持SD卡
Kernel modules ---> Other modules ---> kmod-sdhci 支持SD卡
Kernel modules ---> Other modules ---> kmod-sdhci-mt7620 支持SD卡
Kernel modules ---> USB Support ---> kmod-usb-ohci 支持USB 1.0
Kernel modules ---> USB Support ---> kmod-usb-storage 支持USB存储
Kernel modules ---> USB Support ---> kmod-usb-storage-extras 支持USB存储扩展
Kernel modules ---> USB Support ---> kmod-usb-uhci 支持USB 1.1
Kernel modules ---> USB Support ---> kmod-usb2 支持USB 2.0
Network ---> File Transfer ---> aria2 多协议下载器
Network ---> File Transfer ---> vsftpd FTP服务器 (我编译时无法下载此安装包,当时没有细究。直接修改.config注掉编译了)
Network ---> File Transfer ---> wget 下载工具
Network ---> ppp-mod-pppoe PPPOE拨号模式
Network ---> ppp-mod-pptp VPN客户端
Network ---> SSH ---> openssh-client SSH客户端
Network ---> SSH ---> openssh-sftp-server SSH SFTP服务
Utilities ---> bzip2 解压缩工具
Utilities ---> Compression ---> unrar 解压缩工具
Utilities ---> Compression ---> unzip 解压缩工具
Utilities ---> Compression ---> zip 压缩工具
Utilities ---> Filesystem ---> badblocks 支持ext2文件系统
Utilities ---> Filesystem ---> e2fsprogs 支持ext2/ext3/ext4格式化工具
Utilities ---> disc ---> fdisk 分区工具
其中*号为完整融合进系统,M为可手动增加。保存设置后,重新编译下即可
上面已经把正常的编译选项完成了。这时候编译出来的固件wifi是默认关闭的。你可以在页面上 网络/无线 下面将wifi开启。
还有一种方法。要修改一个配置文件。路径如下:
\trunk\package\kernel\mac80211\files\lib\wifi\mac80211.sh
修改此文件,拉至最下面一行.
# REMOVE THIS LINE TO ENABLE WIFI:
将它下面那个disable 1 这行东西干掉。
这样默认wifi就是开启的啦。
此时还有另外一个问题,就是编出来的固件串口的符号率是115200的。而我的boot的符号率是57600的。
如果直接烧进行,kernel起来以后是乱码。看boot 看kernel的时候还要来回切符号率。所以找到配置文件,修改之。
路径如下:
trunk\target\linux\ramips\dts\MIWIFI-MINI.dts
chosen {
bootargs = "console=ttyS0,57600";
};
修改标红字段,就可以更改符号率了。
DTS/DTB这个是device tree .不太了解的同学,可以百度之。每个芯片,都有与之对应的dts文件,我们可以修改dts里面的东西来
配置符号我们硬件要求的软配置。giop 啥的都可以在这里面修改。
到这,基本上一个可用的固件就可以编译出来了。
下面说一下烧写的故事。
设备上电以后,boot起来。
Please choose the operation:
1: Load system code to SDRAM via TFTP.
2: Load system code then write to Flash via TFTP.
3: Boot system code via Flash (default).
4: Entr boot command line interface.
5: System Load uboot and image to FLASH via TFTP.
7: Load Boot Loader code then write to Flash via Serial.
9: Load Boot Loader code then write to Flash via TFTP.
0: Load system code then write to Flash via Serial.
You choosed 2
看到上面信息的时候,选2,然后设置好LOCAL IP/SERVER IP 文件名。把tftp也设置好。回车就可以烧写了。
之后就坐等重启吧。
此处还有一个小问题。(不知道此问题是否只在我的板子上有)
在上面,填写文件名那步,如要填写的文件名字过长的时候,就会换行。也就是说
Input Linux Kernel filename (openwrt.bin) ==:openwrt.bin 这一行东西会占用两行,等下次我换个文件名,准备再烧写的时候,发现只能擦除最下面那一行,而上面标红的东西无法删除。
此时的解决办法是,重启,看到上面1-9选项出来的时候,选 择4 .进入到boot命令行。
此时输入print命令,可以看到如下一条东西。
bootfile=openwrt.bin
通过修改bootfile来将长长的文件名干掉。
setenv bootfile=filename
saveenv
reset 重启。
之后继续上面的操作,继续烧写就OK了。
//feeds详解.
http://m.blog.csdn.net/blog/u012174021/42062647
//openwrt编译及编译选项
http://wenku.baidu.com/link?url=WWNrGw61gnfzvj3SsiXjken4XjiGSLMlBXlvY2iyzVI3fdofprJ7AsxqWQVlXCtVY4vpqkFA9hNqE1JkzdbC-LDUPvKxQhUfYod9PudMskS