Mac OS X中编译WRTNode固件

#1.Disk Image Creation
Mac OS X系统默认的磁盘文件系统是非大小写敏感的,而Openwrt编译环境需要大小写敏感支持,故我们创建一个磁盘映像文件来新建大小写敏感的文件系统.

下面开始用MacOSX系统中自带的命令hdiutil来创建一个新磁盘镜像并挂载到系统中.

Hackintosh:~ Diveinedu$ cd $HOME
Hackintosh:~ Diveinedu$ hdiutil create -size 20g -fs "Case-sensitive HFS+" -volname OpenWrt OpenWrt.dmg
Hackintosh:~ Diveinedu$ hdiutil attach OpenWrt.dmg

上面命令会在我们的主目录下创建一个大小为20G的镜像文件,并格式化为Case-sensitive HFS+的文件系统,卷标名为OpenWrt,然后挂载到系统中.挂载后我们看样子Finder界面的左侧边栏看到他.
我们需要在终端命令行下进入我们刚刚创建好的文件系统对应的目录下去:

Hackintosh:~ Diveinedu$ cd /Volumes/OpenWrt

#2.Packages Installation
下一步我们需要安装搭建OpenWrt编译环境所需的一些软件包,主要是两个部分:

  • XCode IDE: Apple的一个集成开发环境SDK,包含一些核心的库文件和编译器
  • Homebrew: OS X 不可或缺的套件管理器,MacOSX平台的软件包管理系统(类似于Debian/Ubuntu系统里的apt-get),用来下载和安装一些开源项目软件,比如在Unix/Linux/BSD世界里广泛存在而Apple的MacOSX没有自带的软件.http://brew.sh/index_zh-cn.html

XCode的安装:

  • 打开 Mac App Store 应用商店
  • 在右上角的搜索框搜索 "Xcode"
  • 选择 Xcode,然后点击安装
  • 输入你的Apple ID账号和密码,就会开始下载安装.
  • 最后还需要一步,运行下面命令确保命令行开发工具已经安装:
Hackintosh:OpenWrt Diveinedu$ xcode-select --install

如果有弹出窗口,就选择安装他,他会自带去Apple的更新服务器上下载安装的.

Homebrew的安装:

  • 获取 Homebrew, 打开Homebrew的官网中文页面: http://brew.sh/index_zh-cn.html
  • 打开终端窗口, 粘贴以下脚本,脚本会解释它的作用,然后在您的确认下执行安装。
Hackintosh:OpenWrt Diveinedu$ ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

基础依赖软件包安装:

  • brew 命令安装:
Hackintosh:OpenWrt Diveinedu$ brew install asciidoc docbook gdbm libxml2 pbzip2 autoconf e2fsprogs gettext libxslt pkg-config bash-completion fastjar gnu-getopt libyaml readline binutils findutils gnu-tar lzlib sqlite bison flex gputils openssl wget coreutils gawk intltool ossp-uuid xz

#3.Checkout the OpenWrt Source
我们可以从OpenWrt的官方网站上的源码仓库里检出代码,用SVN或者Git版本管理工具都可以,我这里推荐使用Git,选择自己需要的源码版本然后用下面的命令检出代码:

  • trunk (main development tree)

Main repository

git clone git://git.openwrt.org/openwrt.git

  • 14.07 branch (Barrier Breaker)

Main repository

git clone git://git.openwrt.org/14.07/openwrt.git

我选择检出14.07分支版本,在之前准备好的文件系统的挂载目录下依次执行如下命令:

Hackintosh:OpenWrt Diveinedu$ git clone git://git.openwrt.org/14.07/openwrt.git
Hackintosh:OpenWrt Diveinedu$ cd openwrt
Hackintosh:openwrt Diveinedu$ ./scripts/feeds update
Hackintosh:openwrt Diveinedu$ ./scripts/feeds install -a

上述命令成功执行完成后,我们就已经准备好了OpenWrt的源码并部署了所有的软件包以供我们后面的编译配置步骤去选择了.

#4. Configure and Build OpenWrt For MT7620

A. 到这里,我们就可以开始为我们的路由器板子进行配置了,比如我现在为我的MT7620N板子进行编译的配置,在命令行执行如下命令:

Hackintosh:openwrt Diveinedu$ make menuconfig

这条命令会在终端显示一个基于ncurses的文本图形菜单,我们在菜单里作如下选择:

Target System (Ralink RT288x/RT3xxx) --->

Subtarget (MT7620n based boards) --->

其他具体的配置项这里就从略...

比如MT7620的WiFi驱动啊, USB存储驱动啊, USB的3G Modem驱动等等,

根据实际需求添加配置.此处只做配置编译过程的演示.

配置好这些合适的编译配置项目后,退出菜单保存设置.


B.此时此刻,万事具备只欠东风,东风就是最后一条编译命令:

Hackintosh:openwrt Diveinedu$ make V=s

由于是第一次编译,这一条命令的时间足够让我们睡一个午觉,如果不想睡觉,那就喝几杯咖啡吧.
如果网络条件好,那么首次编译过程中所需要下载的软件包应该不会遇到什么错误.因为我这次就非常的顺利,不过我是用的VPN番茄了的.

编译完成之后,我们可以在输出目录下查看我们的结果,那就是各种MT7620N方案的路由器板子的固件:

Hackintosh:openwrt Diveinedu$ ls -lh bin/ramips/
total 62344
-rw-r--r--  1 Diveinedu  staff   812B  9  8 20:45 md5sums
-rw-r--r--  1 Diveinedu  staff   3.5M  9  8 20:45 openwrt-ramips-mt7620n-mlw221-squashfs-sysupgrade.bin
-rw-r--r--  1 Diveinedu  staff   2.5M  9  8 20:45 openwrt-ramips-mt7620n-root.squashfs
-rw-r--r--  1 Diveinedu  staff   3.5M  9  8 20:45 openwrt-ramips-mt7620n-rt-n14u-squashfs-sysupgrade.bin
-rw-r--r--  1 Diveinedu  staff   1.0M  9  8 20:45 openwrt-ramips-mt7620n-uImage.bin
-rwxr-xr-x  1 Diveinedu  staff   2.9M  9  8 20:45 openwrt-ramips-mt7620n-vmlinux.bin
-rwxr-xr-x  1 Diveinedu  staff   3.0M  9  8 20:45 openwrt-ramips-mt7620n-vmlinux.elf
-rw-r--r--  1 Diveinedu  staff   3.5M  9  8 20:45 openwrt-ramips-mt7620n-wmr-300-squashfs-sysupgrade.bin
-rw-r--r--  1 Diveinedu  staff   3.5M  9  8 20:45 openwrt-ramips-mt7620n-wr8305rt-squashfs-sysupgrade.bin
-rw-r--r--  1 Diveinedu  staff   3.5M  9  8 20:45 openwrt-ramips-mt7620n-wrtnode-squashfs-sysupgrade.bin
-rw-r--r--  1 Diveinedu  staff   3.5M  9  8 20:45 openwrt-ramips-mt7620n-zbt-wa05-squashfs-sysupgrade.bin
drwxr-xr-x  4 Diveinedu  staff   136B  9  8 20:20 packages
Hackintosh:openwrt Diveinedu$

选择我们板子对应的固件,比如我们罗老湿的 WRTNode ,那就选择bin/ramips/openwrt-ramips-mt7620n-wrtnode-squashfs-sysupgrade.bin, 然后scp上传到路由器里或者通过TTL+TFTP的方式进行刷机测试.
如果是采用TTL+TFTP的方式,那我们还需要安装一个minicom工具.同样,在命令行运行命令:

Hackintosh:openwrt Diveinedu$ brew install minicom

安装完成之后运行minicom,设置正确的设备文件和正确的波特率:

Hackintosh:openwrt Diveinedu$ minicom -s

公司笔记本使用USB转串口的适配器在MacOSX里的设备文件的话,一般是/dev/tty.USBxxx这样的文件,像我现在家里所使用的台式机黑苹果的画,主板上的串口对应的设备文件是/dev/tty.serial1.具体看芯片的驱动是怎么样命名.

到此,在Mac OS X 10.9.4系统中进行OpenWrt智能路由器,嵌入式Linux开发环境搭建和编译的步骤就介绍完成.

标签:none

已有 3 条评论

  1. manfeel

    顶大茶!好文章,给我们开了一盏指路明灯。

  2. feiyu

    厉害啊,我觉得应该推广推广你的Blog

  3. commissar

    顶大茶!好文章,给我们开了一盏指路明灯。

添加新评论