Optware on K3-AC-ARM
From DD-WRT Wiki
Revision as of 17:18, 7 February 2014 (edit) Magick777 (Talk | contribs) (→Packages not working in DD-WRT) ← Previous diff |
Revision as of 17:37, 7 February 2014 (edit) (undo) Magick777 (Talk | contribs) (→Packages wishlist) Next diff → |
||
Line 77: | Line 77: | ||
* '''kmod-*''' - would require modules compiled for the current DD-WRT kernel version installed to /opt and ideally a mechanism for loading them on startup (though this last could be done manually via the user.) | * '''kmod-*''' - would require modules compiled for the current DD-WRT kernel version installed to /opt and ideally a mechanism for loading them on startup (though this last could be done manually via the user.) | ||
* '''unionfs-fuse''' - we have fuse support already, should not be too hard to add with a working SDK | * '''unionfs-fuse''' - we have fuse support already, should not be too hard to add with a working SDK | ||
+ | * '''webui-aria2''' - we have aria2, just not the webif for it | ||
== Recipes for package config == | == Recipes for package config == |
Revision as of 17:37, 7 February 2014
Contents |
BUILD 23460M ONWARDS
OpenWRT imx6 package repository
Quoting <Kong>, "builds >23453 will use openwrt packages". The repository now in use is the OpenWRT imx6 repository, http://downloads.openwrt.org/snapshots/trunk/imx6/packages/
Instructions
Preparing for optware install
Using USB storage
Prepare a usb flash disk with 3 partitions 512MB swap + 2 partitions ext2/ext3 or ext4. Enable USB Storage and mount one partition to /jffs, the other to /opt, by using the uuids which are shown in disk info. Note: if you use this method, you do NOT need to enable JFFS2 support in the GUI. That's for putting the JFFS partition on the internal flash.
Using JFFS storage
If you don't have USB storage attached to your router you can resort to the time-honoured method of enabling JFFS2 (from the DD-WRT GUI), which will give you ~90MB of storage under /jffs. You can then
mkdir /jffs/opt mount --bind /jffs/opt /opt
which will let you install smaller packages using JFFS alone. If you do this, you'll need to re-create the bind mount on startup.
Installing optware
Use ipkg to install opkg
ipkg update ipkg install opkg
Create opkg config file
echo "src openwrtarm http://downloads.openwrt.org/snapshots/trunk/imx6/packages/" >/jffs/etc/opkg.conf echo "dest root /opt" >> /jffs/etc/opkg.conf echo "dest ram /tmp" >> /jffs/etc/opkg.conf echo "lists_dir ext /jffs/var/opkg-lists" >> /jffs/etc/opkg.conf echo "option overlay_root /jffs/overlay" >> /jffs/etc/opkg.conf
Update opkg lists
opkg -f /jffs/etc/opkg.conf update
Install a package
opkg -f /jffs/etc/opkg.conf --force-depends install <package>
Simplify opkg command line with an alias
alias opkg="opkg -f /jffs/etc/opkg.conf --force-depends"
will add those switches for you by default, so you can just use "opkg list", "opkg install <what>". If you want to make this permanent, you can add
echo 'alias opkg="opkg -f /jffs/etc/opkg.conf --force-depends"' >>/tmp/root/.profile
to your startup commands.
Package status on DD-WRT
Please add to / edit this section as appropriate.
Packages working out of the box
- coreutils-sha512sum - seems to install and run fine
- nano - seems to install and run fine
- ncftp - sometimes refuses to work interactively, logs in OK but promptly exits. Running it by installing "screen" and using "screen ncftp" works fine. So does logging out and logging in again, so moved to apparently working.
- rsync - seems to install and run fine
- screen - seems to install and run fine
- transmission - reported working by forum users: Magnetron1.1, tibismart
Packages working with minor changes
- mrtg - installs OK, but needs paths optifying in mrtg, indexmaker, cfgmaker scripts, also see note on perl, below. Use cfgmaker to produce config file in /jffs/etc. Customise to suit. Crontab accordingly, you'll need to specify PERL5LIB and LD_LIBRARY_PATH in order for the rateup executable to work. Obviously you'll also need snmpd enabled, and lighttpd set up.
- perl - doesn't work OOTB, try PERL5LIB=/opt/usr/lib/perl5/5.10/; export PERL5LIB. You can make this more permanent by adding "echo "export PERL5LIB=/opt/usr/lib/perl5/5.10/" >>/tmp/root/.profile" to your startup commands.
- rdiff-backup - doesn't work OOTB thanks to a hard-coded path to python in the rdiff-backup script. However, you can issue a sed -i "s|#!/|#!/opt/|" /opt/usr/bin/rdiff-backup to fix the script, and rdiff-backup will then run correctly. Note that it has no onboard help and no default verbosity, so issue a -v5 as part of your command to see what is going on.
- sshfs - works, however you may need to run it in debug mode in order to accept the remote host's key, and you will need an "insmod fuse" first to load the requisite kernel module. Note that mounting very large filesystems (>4TB, I think) provokes an error from 'df': Value too large for defined data type; a 3.6TB filesystem is handled correctly but a 6.8TB filesystem is not. This does not seem to affect listing or accessing files, merely produces a bug in df output. Magick777 04:47, 2 February 2014 (CET)
Packages not working in DD-WRT
- kmod-* - kernel modules for OpenWRT, not for our DD-WRT kernel.
- nfs-kernel-server - depends on kernel modules not presently available in DD-WRT. Might yet be persuaded to work if we can have them added to DD-WRT or create a custom repository with compatible kernel modules.
- nfs-server - depends on OpenWRT basefiles / init scripts not presently available in DD-WRT.
- aoetools - requires kernel module aoe.ko
- tor - silently exits with no useful debug info. On disabling RunAsDaemon, produces a segfault.
Packages wishlist
Here we note stuff that is not available/supported via OpenWRT packages which there might be a case to add.
- kmod-* - would require modules compiled for the current DD-WRT kernel version installed to /opt and ideally a mechanism for loading them on startup (though this last could be done manually via the user.)
- unionfs-fuse - we have fuse support already, should not be too hard to add with a working SDK
- webui-aria2 - we have aria2, just not the webif for it
Recipes for package config
Put here any fixes, walkthroughs, forum posts and Wiki articles describing how to make a package work under DD-WRT.
perl
Add
echo "export PERL5LIB=/opt/usr/lib/perl5/5.10/" >>/tmp/root/.profile
to your startup commands to have perl find its libraries under /opt.
transmission
See Magnetron1.1's post at http://www.dd-wrt.com/phpBB2/viewtopic.php?t=177443&postdays=0&postorder=asc&start=585
Build your own package repository
Disclaimer: this section is a work-in-progress.
Fetch OpenWRT buildroot environment
If you need to re-compile a package, or add a new one, you can download the OpenWRT source code and build it yourself. Read the OpenWRT documentation for this, starting with http://wiki.openwrt.org/doc/howto/buildroot.exigence
Build-time notes 5 Feb 2014
- The build broke once or twice thanks to temporary network failures (e.g. git.kernel.org unreachable), resolved by simply trying again later. Suggest running with make V=s from the outset, you'll need debug info.
- Errors from 'cp' (flag -p not supported) are caused by gcp taking precedence over cp on your host system. Removing gcp should solve the problem.
- Compile of postgresql breaks for our architecture, see https://forum.openwrt.org/viewtopic.php?id=45866 for a simple fix
- Problems with glib-genmarshal when compiling glibc under OpenSuse. Wasn't able to diagnose this and switched to Ubuntu 32-bit instead.
- Problems compiling ap51-flash, it's not useful to us so disabled the package.
BUILDS OLDER THAN 23460M
Long story short: do not attempt to use Optware in builds older than 23460M.
Why didn't it just work?
The Optware Project was not designed for use with ARM processors (most builds are for mipsel architecture), and nor was it intended for DD-WRT. It has been ported to a number of DD-WRT platforms, but with varying degrees of success. Also, the project has become somewhat dated, meaning that it relies on an old version of uClibc; this causes issues with the current DD-WRT codebase. So, we need an Optware feed compiled for modern DD-WRT, and then for that to work on the K3-AC-ARM routers we need it compiled for ARM architecture. There is presently no Optware feed that meets that descripton; the mbwe-bluering repository is built for ARM, but it's not built for DD-WRT on kernel 3.x.
mbwe-bluering repository [DEPRECATED]
This page tracks the success (or failure) of using the Optware mbwe-bluering repository on newer 802.11ac routers with ARM architecture, running Kong's K3-AC-ARM builds (r23250 and later). Whilst this repository is supposedly compatible with an ARM CPU and uClibc, most of the binaries don't work on DD-WRT.
Packages not working
Most of them, by the look of it. Initially I got a bunch of the following errors:
hello: can't resolve symbol '__register_frame_info' nano: can't resolve symbol '__register_frame_info' ncftp: can't load library 'libresolv.so.0' perl: can't resolve symbol '__register_frame_info' whois: can't resolve symbol '__register_frame_info'
so I duly installed uClibc-opt; this got rid of the above errors but it still didn't persuade anything useful to work. Most things now exit silently, neither complaining nor producing any output.