Copyright (c) 2014 ARRIS Group, Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
Alternatively, this software may be distributed under the terms of the
GNU General Public License ("GPL") version 2 as published by the Free
Software Foundation.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
GPLv2 license:
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
README for building the NVG510 Redistributable Open Source code.
The following instructions are known to work for a Fedora Core 10 host system.
First build the cross compiler.
1. Get the crosstool-ng package from http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.3.0.tar.bz2
Get version 1.3.0.
2. Make sure the following tools are installed:
texinfo
zlib-devel
imake
ccache
ncurses-devel
libtool
automake
texinfo
patch
bison
flex
autoconf
wget
gawk
ccache
g++/gcc
makedepend
3. Install and build the crossool-ng package. This is as simple as expanding the tar and doing:
-> ./configure
-> make
-> sudo make install
This will place the outputs in /usr/local/bin/ct-ng. You can use another location via the "--prefix="
argument to configure.
4. Create a local build directory for creating the toolchains (e.g. /home/crosstool-ng-build)
5. In the local build directory, run:
-> ct-ng menuconfig
To configure the details of the build, select the following:
Paths and misc options ---> Prefix directory: /opt/x-tools/${CT_TARGET}
Target options ---> Target Architecture: mips
Toolchain options ---> Vendor string: gcc4.2.3
Toolchain options ---> Tuple: i386-linux-gnu (Note this may not be required based on your Linux host system config)
Operating System ---> Target OS: linux
Operating System ---> Linux kernel version: 2.6.26
binutils ---> binutils version: 2.18
C compiler ---> gcc version: 4.2.3
C compiler ---> C++: enabled
C-library ---> C library: uClibc
C-library ---> uClibc version: 0.9.29
C-library ---> Configuration file: point to the local copy of config.uClibc file, which is included in the Redistribution archive (ie ~/NVG510-OSS-1.0/config.uClibc)
These are the only items set. Use the defaults for all other settings.
6. With the configuration set up, now run in the local build directory:
-> sudo ct-ng build
This will download the necessary source packages, build all the tools and place them in a directory
under /opt/x-tools/ with a unique name derived from the target, vendor string, C-library, etc.
7. Uncompress the NVG OSS Release Package
-> cd ~
-> tar jxf NVG510-OSS-1.0.tar.bz2
8. Install the Broadcom files (Assuming bcm963xx_4.06L.03_consumer_release.tar.gz is located in ~)
-> cd ~
-> mkdir brcm
-> cd brcm
-> tar zxf ../bcm963xx_4.06L.03_consumer_release.tar.gz
-> tar zxf bcm963xx_4.06L.03_consumer.tar.gz
-> cd ~/NVG510-OSS-1.0
-> ./brcm_cp.sh -p . -b ~/brcm
9. Finally, to build the NVG510 Redistributable Open Source code., type the following.
Note: If using Ubuntu, make sure /bin/sh points to /bin/bash. (Not /bin/dash)
-> make config # select all the defaults (hit enter at each prompt)
-> make linux
-> make tools
-> make lib
-> make user
-> make romfs # make sure you are in the sudoers file
The last make command will create a directory called romfs in the top level directory. That
directory will contain a linux directory structure with all the compiled objects in their
respective place. The directory structure is as follows:
romfs:
bin boot dev etc lib media proc sbin sys tftpboot tmp usr var
romfs/bin:
ash dmesg grep ip6tables luac pidof ripd sh umount
brctl dnsdomainname gunzip iptables mkdir ping rm sleep vconfig
busybox dnsmasq gzip iptables-restore mknod ping6 rmdir smbclient wget
cat echo haserl iptables-save more pppoe routef stat zcat
chmod egrep hostname kill mount pppoe-relay routel sync zebra
cp ez-ipupdate ifcfg ln mv printenv rtacct tar
c_rehash fgrep inetd ls nmblookup ps rtmon tc
date getopt ip lua ntpclient pwd sed touch
romfs/boot:
romfs/dev:
console initctl kmem mem null tty tty0 tty1 ttyS0
romfs/etc:
config.cfg fstab inetd.d passwd protocols services udev
dhcpd.conf group inittab pfslist rc shells
dhcpd.leases hosts iproute2 pfslist.default resolv.conf smb.conf
dnsmasq.conf inetd.conf modprobe.conf ppp resolv.dnsmasq TZ
romfs/etc/iproute2:
ematch_map rt_dsfield rt_protos rt_realms rt_scopes rt_tables
romfs/etc/udev:
udev.conf
romfs/lib:
ld-linux.so.2 libcrypt.so.0 libnsl.so.0 libssl.so libz.so.1.2.3
ld.so.1 libc.so.0 libpthread-0.9.29.so libssl.so.0.9.8 modules
ld-uClibc-0.9.29.so libdl-0.9.29.so libpthread.so.0 libuClibc-0.9.29.so pppd
ld-uClibc.so.0 libdl.so.0 libresolv-0.9.29.so libutil-0.9.29.so
libcrypt-0.9.29.so libm-0.9.29.so libresolv.so.0 libutil.so.0
libcrypto.so libm.so.0 librt-0.9.29.so libz.so
libcrypto.so.0.9.8 libnsl-0.9.29.so librt.so.0 libz.so.1
romfs/lib/modules:
2.6.30.10-motopia
romfs/lib/modules/2.6.30.10-motopia:
kernel modules modules.dep modules.order
romfs/lib/modules/2.6.30.10-motopia/kernel:
drivers fs lib net
romfs/lib/modules/2.6.30.10-motopia/kernel/drivers:
net scsi usb
romfs/lib/modules/2.6.30.10-motopia/kernel/drivers/net:
bsd_comp.ko ppp_async.ko ppp_deflate.ko ppp_generic.ko pppoe.ko pppox.ko slhc.ko
romfs/lib/modules/2.6.30.10-motopia/kernel/drivers/scsi:
scsi_wait_scan.ko
romfs/lib/modules/2.6.30.10-motopia/kernel/drivers/usb:
storage
romfs/lib/modules/2.6.30.10-motopia/kernel/drivers/usb/storage:
usb-storage.ko
romfs/lib/modules/2.6.30.10-motopia/kernel/fs:
cifs ext3 fat jbd lockd mbcache.ko nfs ntfs
romfs/lib/modules/2.6.30.10-motopia/kernel/fs/cifs:
cifs.ko
romfs/lib/modules/2.6.30.10-motopia/kernel/fs/ext3:
ext3.ko
romfs/lib/modules/2.6.30.10-motopia/kernel/fs/fat:
fat.ko msdos.ko vfat.ko
romfs/lib/modules/2.6.30.10-motopia/kernel/fs/jbd:
jbd.ko
romfs/lib/modules/2.6.30.10-motopia/kernel/fs/lockd:
lockd.ko
romfs/lib/modules/2.6.30.10-motopia/kernel/fs/nfs:
nfs.ko
romfs/lib/modules/2.6.30.10-motopia/kernel/fs/ntfs:
ntfs.ko
romfs/lib/modules/2.6.30.10-motopia/kernel/lib:
crc-ccitt.ko zlib_deflate
romfs/lib/modules/2.6.30.10-motopia/kernel/lib/zlib_deflate:
zlib_deflate.ko
romfs/lib/modules/2.6.30.10-motopia/kernel/net:
atm bridge ipv4 ipv6 netfilter sunrpc
romfs/lib/modules/2.6.30.10-motopia/kernel/net/atm:
atm.ko
romfs/lib/modules/2.6.30.10-motopia/kernel/net/bridge:
netfilter
romfs/lib/modules/2.6.30.10-motopia/kernel/net/bridge/netfilter:
ebtable_broute.ko
romfs/lib/modules/2.6.30.10-motopia/kernel/net/ipv4:
netfilter
romfs/lib/modules/2.6.30.10-motopia/kernel/net/ipv4/netfilter:
arptable_filter.ko arpt_mangle.ko nf_nat_ftp.ko nf_nat_pptp.ko nf_nat_sip.ko
arp_tables.ko arpt_reply.ko nf_nat_h323.ko nf_nat_proto_gre.ko nf_nat_tftp.ko
romfs/lib/modules/2.6.30.10-motopia/kernel/net/ipv6:
netfilter
romfs/lib/modules/2.6.30.10-motopia/kernel/net/ipv6/netfilter:
ip6table_filter.ko ip6table_raw.ko ip6t_ipv6header.ko ip6t_rt.ko
ip6table_mangle.ko ip6_tables.ko ip6t_LOG.ko nf_conntrack_ipv6.ko
romfs/lib/modules/2.6.30.10-motopia/kernel/net/netfilter:
nf_conntrack_ftp.ko nf_conntrack_proto_esp.ko nf_conntrack_tftp.ko xt_recent.ko xt_vlan.ko
nf_conntrack_h323.ko nf_conntrack_proto_gre.ko xt_ethproto.ko xt_SKIPLOG.ko xt_VLAN.ko
nf_conntrack_pptp.ko nf_conntrack_sip.ko xt_length.ko xt_TCPMSS.ko
romfs/lib/modules/2.6.30.10-motopia/kernel/net/sunrpc:
sunrpc.ko
romfs/lib/modules/2.6.30.10-motopia/modules:
broadcom motopia portmirror prioritytag
romfs/lib/modules/2.6.30.10-motopia/modules/broadcom:
63xx
romfs/lib/modules/2.6.30.10-motopia/modules/broadcom/63xx:
4.x
romfs/lib/modules/2.6.30.10-motopia/modules/broadcom/63xx/4.x:
xtmrt
romfs/lib/modules/2.6.30.10-motopia/modules/broadcom/63xx/4.x/xtmrt:
impl1
romfs/lib/modules/2.6.30.10-motopia/modules/broadcom/63xx/4.x/xtmrt/impl1:
bcmxtmrt.ko
romfs/lib/modules/2.6.30.10-motopia/modules/motopia:
motopia.ko
romfs/lib/modules/2.6.30.10-motopia/modules/portmirror:
portmirror.ko
romfs/lib/modules/2.6.30.10-motopia/modules/prioritytag:
prioritytag.ko
romfs/lib/pppd:
2.4.4
romfs/lib/pppd/2.4.4:
pppoa.so pppoe.so
romfs/media:
romfs/proc:
romfs/sbin:
arp depmod insmod makedevs modprobe rmmod udevd
arptables freeramdisk lsmod modinfo pivot_root udevadm udhcpc
romfs/sys:
romfs/tftpboot:
romfs/usr:
bin sbin
romfs/usr/bin:
[ basename env head logger seq telnet top traceroute6
[[ cut expr killall nslookup sort test tr uptime
arping dirname free length realpath tail tftp traceroute wc
romfs/usr/sbin:
chroot pppd telnetd
romfs/var: