summaryrefslogtreecommitdiff
path: root/recipes/nslu2-binary-only
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/nslu2-binary-only')
-rw-r--r--recipes/nslu2-binary-only/nslu2-linksys-firmware_2.3r63.bb18
-rw-r--r--recipes/nslu2-binary-only/nslu2-linksys-libs_2.3r63.bb18
-rw-r--r--recipes/nslu2-binary-only/nslu2-linksys-ramdisk_2.3r63.bb15
-rw-r--r--recipes/nslu2-binary-only/nslu2-linksys-sambacodepages_2.3r63.bb24
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/NOTES573
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/README177
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/create-ramdisks.patch30
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/initialise-mtab.patch8
-rwxr-xr-xrecipes/nslu2-binary-only/unslung-rootfs/ipkg-fl11
-rwxr-xr-xrecipes/nslu2-binary-only/unslung-rootfs/linuxrc106
-rwxr-xr-xrecipes/nslu2-binary-only/unslung-rootfs/mkfs.ext313
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/motd-fl11
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/motd-un4
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/mount_usbdevfs.patch10
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/nsswitch.conf6
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/rc-diversion.patch10
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/rc.1-diversion.patch19
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/rc.1-timestamp.patch8
-rwxr-xr-xrecipes/nslu2-binary-only/unslung-rootfs/rc.bootbin7
-rwxr-xr-xrecipes/nslu2-binary-only/unslung-rootfs/rc.bootdisk70
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/rc.crond-diversion.patch10
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/rc.halt-diversion.patch12
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/rc.lan-shell.patch7
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/rc.local-diversion.patch12
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/rc.modules-diversion.patch10
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/rc.modules-nls.patch10
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/rc.network-diversion.patch9
-rwxr-xr-xrecipes/nslu2-binary-only/unslung-rootfs/rc.optware-start27
-rwxr-xr-xrecipes/nslu2-binary-only/unslung-rootfs/rc.optware-stop27
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/rc.quickset-diversion.patch9
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/rc.quota-diversion.patch10
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/rc.reboot-diversion.patch12
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/rc.reset_usrgrpshare-diversion.patch8
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/rc.rstimezone-diversion.patch10
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/rc.samba-diversion.patch10
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/rc.samba-syntaxfix.patch23
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/rc.sysinit-clean_var.patch22
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/rc.sysinit-cpbug.patch19
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/rc.sysinit-diversion.patch15
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/rc.sysinit-win_share.patch15
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/rc.thttpd-diversion.patch10
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/rc.xinetd-diversion.patch10
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/remount-noatime.patch51
-rwxr-xr-xrecipes/nslu2-binary-only/unslung-rootfs/resling60
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/root-passwd.patch16
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/security-fixes.patch11
-rwxr-xr-xrecipes/nslu2-binary-only/unslung-rootfs/slingover83
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/telnet-passwd.patch22
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/telnet.htm32
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/tmp-handling.patch13
-rwxr-xr-xrecipes/nslu2-binary-only/unslung-rootfs/unsling264
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/unslung.gifbin0 -> 4854 bytes
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/upgrade.htm130
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs/wait-for-quotacheck.patch10
-rw-r--r--recipes/nslu2-binary-only/unslung-rootfs_2.3r63.bb181
55 files changed, 2308 insertions, 0 deletions
diff --git a/recipes/nslu2-binary-only/nslu2-linksys-firmware_2.3r63.bb b/recipes/nslu2-binary-only/nslu2-linksys-firmware_2.3r63.bb
new file mode 100644
index 0000000000..52af4ad273
--- /dev/null
+++ b/recipes/nslu2-binary-only/nslu2-linksys-firmware_2.3r63.bb
@@ -0,0 +1,18 @@
+SECTION = "base"
+PACKAGES = ""
+LICENSE = "GPL"
+INHIBIT_DEFAULT_DEPS = "1"
+PR = "r3"
+
+SRC_URI = "http://nslu.sf.net/downloads/${PN}-${PV}.tar.bz2"
+S = "${WORKDIR}/${PN}-${PV}"
+
+COMPATIBLE_MACHINE = "(nslu2|ixp4xx)"
+
+do_compile () {
+ install -d ${STAGING_LIBDIR}/nslu2-binaries
+ install -m 0755 ${S}/RedBoot ${STAGING_LIBDIR}/nslu2-binaries/
+ install -m 0755 ${S}/SysConf ${STAGING_LIBDIR}/nslu2-binaries/
+ install -m 0755 ${S}/vmlinuz ${STAGING_LIBDIR}/nslu2-binaries/
+ install -m 0755 ${S}/Trailer ${STAGING_LIBDIR}/nslu2-binaries/
+}
diff --git a/recipes/nslu2-binary-only/nslu2-linksys-libs_2.3r63.bb b/recipes/nslu2-binary-only/nslu2-linksys-libs_2.3r63.bb
new file mode 100644
index 0000000000..da5bdebfcd
--- /dev/null
+++ b/recipes/nslu2-binary-only/nslu2-linksys-libs_2.3r63.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Linksys NSLU2 Stock Firmware Libraries."
+PACKAGE_ARCH = "nslu2"
+SECTION = "base"
+PRIORITY = "required"
+PR = "r3"
+
+SRC_URI = "http://nslu.sf.net/downloads/nslu2-linksys-ramdisk-2.3r63-2.tar.bz2"
+
+S = "${WORKDIR}/nslu2-linksys-ramdisk-2.3r63"
+
+do_install () {
+ ( cd ${S} ; rm -rf bin dev etc home lost+found mnt proc sbin share tmp upload usr var )
+ ( cd ${S} ; tar cvf - . ) | ( cd ${D} ; tar xvf - )
+}
+
+FILES_${PN} = "/lib"
+
+COMPATIBLE_MACHINE = "nslu2"
diff --git a/recipes/nslu2-binary-only/nslu2-linksys-ramdisk_2.3r63.bb b/recipes/nslu2-binary-only/nslu2-linksys-ramdisk_2.3r63.bb
new file mode 100644
index 0000000000..ec7689488a
--- /dev/null
+++ b/recipes/nslu2-binary-only/nslu2-linksys-ramdisk_2.3r63.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "Linksys NSLU2 Stock Firmware Ramdisk."
+PACKAGE_ARCH = "nslu2"
+SECTION = "base"
+PRIORITY = "required"
+PR = "r3"
+
+SRC_URI = "http://nslu.sf.net/downloads/nslu2-linksys-ramdisk-2.3r63-2.tar.bz2"
+
+do_install () {
+ ( cd ${S} ; tar cvf - . ) | ( cd ${D} ; tar xvf - )
+}
+
+FILES_${PN} = "/"
+
+COMPATIBLE_MACHINE = "nslu2"
diff --git a/recipes/nslu2-binary-only/nslu2-linksys-sambacodepages_2.3r63.bb b/recipes/nslu2-binary-only/nslu2-linksys-sambacodepages_2.3r63.bb
new file mode 100644
index 0000000000..4da6b6981a
--- /dev/null
+++ b/recipes/nslu2-binary-only/nslu2-linksys-sambacodepages_2.3r63.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "Linksys NSLU2 Stock Firmware Samba Code Pages."
+PACKAGE_ARCH = "nslu2"
+SECTION = "base"
+PRIORITY = "required"
+PR = "r2"
+
+SRC_URI = "http://nslu.sf.net/downloads/nslu2-linksys-ramdisk-2.3r63-2.tar.bz2"
+
+S = "${WORKDIR}/nslu2-linksys-ramdisk-2.3r63"
+
+do_install () {
+ ( cd ${S} ; mkdir unslung-tmp )
+ ( cd ${S}/etc ; tar cvf - samba/codepages ) | ( cd ${S}/unslung-tmp; tar xvf - )
+ ( cd ${S} ; rm -rf bin dev etc home lib lost+found mnt proc sbin share tmp upload usr var )
+ ( cd ${S} ; mv unslung-tmp etc )
+ ( cd ${S}/etc/samba/codepages; rm -f codepage.437 unicode_map.437 )
+ ( cd ${S}/etc/samba/codepages; rm -f codepage.850 unicode_map.850 )
+ ( cd ${S}/etc/samba/codepages; rm -f unicode_map.ISO8859-1 )
+ ( cd ${S} ; tar cvf - . ) | ( cd ${D} ; tar xvf - )
+}
+
+FILES_${PN} = "/etc/samba/codepages"
+
+COMPATIBLE_MACHINE = "nslu2"
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/NOTES b/recipes/nslu2-binary-only/unslung-rootfs/NOTES
new file mode 100644
index 0000000000..801ebd918c
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/NOTES
@@ -0,0 +1,573 @@
+Unslung-6.x Family Release Notes
+
+Unslung is a replacement firmware image for the Linksys NSLU2 which is designed
+to allow you to make changes to the root filesystem (including the installation
+of downloadable packages) while still providing all the standard product
+functionality.
+
+If, at any time, you have any questions concerning the installation or
+operation of Unslung firmware, your first port of call should be the
+NSLU2-Linux wiki at:
+
+ http://www.nslu2-linux.org
+
+Specifically, check the HowTos and the Frequently Asked Questions before
+posting to the mailing list or asking a question in the IRC channel
+[#nslu2-general @ irc.freenode.net].
+
+OK! Now that that's out of the way...
+
+This file is provided to give general information and usage notes for the
+Unslung 6.x firmware. If you are looking for installation instructions, please
+stop now and go to the README file. Follow the README instructions WORD for
+WORD to keep from turning your NSLU2 into a brick. The information contained
+in this file will make more sense if you have already "unslung" your NSLU2.
+
+--------------------------------------------------------------------------------
+
+These "Notes" are divided into four sections:
+
+ 1 - GENERAL INFORMATION
+ 2 - IPKG PACKAGES
+ 3 - DIVERSION SCRIPTS
+ 4 - CHANGELOG
+
+
+GENERAL INFORMATION
+
+As stated above, Unslung firmware is a replacement firmware image for the
+Linksys NSLU2. The Unslung firmware is intended to be used for loading new
+packages (giving enhanced or additional functionality) with minimal changes
+to the standard user interface and firmware. The differences in the Unslung 6.x
+firmware from the standard Linksys 2.3R63 firmware can be found at:
+
+ http://www.nslu2-linux.org/wiki/Unslung/UnslungFeatures
+
+For more information about the Unslung firmware, including details on how to
+build it from source code yourself, look at:
+
+ http://www.nslu2-linux.org/wiki/Unslung
+
+There are several assumptions made in this Notes. One, you've successfully
+unslung your NSLU2, and can verify the basic Linksys functionality (samba
+users, groups, and shares setup with the Linksys interface). Two, that you can
+get telnet or ssh shell access to your NSLU2 from any computer on the same
+network as the NSLU2. Three, that you have read and understand the NSLU2-linux
+community rules at:
+
+ http://www.nslu2-linux.org/wiki/Main/HomePage
+
+If you understand the third assumption, then you also understand that there is
+an emphasis on using and developing the NSLU2-Linux wiki. Clarifications and
+further documentation is always welcomed on the wiki.
+
+If you are experienced with the Linux operating system, then you can make
+changes directly to the root filesystem - changes which are persistent across
+reboot. If you want to get involved, then check the NSLU2-linux wiki at:
+
+ http://www.nslu2-linux.org/wiki/Main/HowToGetInvolved
+
+
+IPKG PACKAGES
+
+Packages require you to be running Unslung firmware (as you may have already
+guessed!) In general, ipkg packages are commonly available software packages
+that have been ported to the NSLU2 - giving enhanced or additional
+functionality. If you run into problems or have specific question with a
+certain package, you should look on the Internet for the general documentation
+about the package first. If your problem is specific to the NSLU2 port, then
+check for further documentation for the corresponding package on the
+NSLU2-Linux wiki at:
+
+ http://www.nslu2-linux.org/wiki/Unslung/Packages
+
+When you "unsling" an external disk (check the README for instructions),
+downloaded packages will be installed onto that external disk. The number of
+packages that you can install is only limited by the size of the "data"
+partition on the external disk. Note that you *must* *not* install any
+packages before you have booted with an external "Unslung" disk. To do so will
+almost certainly cause your internal jffs2 flash memory become full, and cause
+you to have to reflash your NSLU2.
+
+Package Installation Details
+
+ 1) Check for network connectivity to the package repository from the NSLU2
+ first: "ping ipkg.nslu2-linux.org"
+
+ - If this does not work, then please check the NSLU2 DNS settings in
+ the web interface (under "Administration", "LAN").
+
+ 3) Update the list of available packages from new feeds: "ipkg update"
+
+ 4) Check the list of available packages for ones that you want on your
+ NSLU2: "ipkg list"
+
+ 5) Install the packages: "ipkg install <package-name>"
+
+Most packages put their startup scripts into /opt/etc/init.d - which the
+Unslung firmware automatically runs at boot. Some other packages are run from
+the cron or xinetd daemons.
+
+You can also check the ipkg command arguments simply by typing "ipkg" at the
+prompt.
+
+
+DIVERSION SCRIPTS
+
+Diversion scripts are used to start packages, set variables or function
+definitions at the time of the NSLU2 boot. The diversion mechanism allows you
+to add to, or even replace the Linksys script functionality. They "divert" the
+normal boot scripts to perform the needed action(s) and then can either "return
+1" to continue normal factory script progress or "return 0" to abort the
+diverted factory script. The diversion of startup scripts is done at the
+lowest granularity, so you can just divert the rc.xinetd script and leave all
+others unchanged. You are advised to use diversion scripts rather than editing
+system files directly (as this will allow you to upgrade the Unslung firmware
+in the future without having to make all of your changes again).
+
+ - Note: If you do need to edit the system files directly, you can use the
+ "resling" script to save and load your modified system files. See
+ the NSLU2-Linux wiki at:
+
+ http://www.nslu2-linux.org/wiki/Unslung/ReSling
+
+Diversion scripts go in the /unslung directory (you may have to create that
+directory first). Note that after you have unslung to an external disk, then
+the diversion scripts will be stored on that external disk (along with the rest
+of the root filesystem). This means that recovering from an incorrect
+diversion script is as simple as powering off, unplugging the disk, powering
+on, hot-plugging the disk (note that the diversion scripts will only run if the
+disk is attached at boot), and fix or remove the diversion script.
+
+You may divert as many or as few scripts as you like. Simply add the name of
+the standard rc script into the appropriate /unslung directory and it will be
+run.
+
+For example, I have a script /unslung/rc.local:
+
+#! /bin/sh
+/opt/bin/do_foo
+return 1
+
+That will run at the beginning of the normal /etc/rc.d/rc.local, and then
+the rest of the factory rc.local will be executed. If I do NOT want to run
+the factory rc.local, my script would be:
+
+#!/bin/sh
+/opt/bin/do_foo
+return 0
+
+That is, if the diversion script returns with something other than 0, it will
+run the rest of the factory script.
+
+Note that any variable definitions or function declarations are allowed to
+happen before the diversion script is called. This allows you to use the
+variables and functions defined by the factory script.
+
+Also not that telnet is not enabled by default - there is an openssh package
+and a dropbear package that either can replace telnet access with secure shell
+access.
+
+OpenSSH is the simplest to install:
+
+ - OpenSSH package details on NSLU2-Linux wiki at:
+ http://www.nslu2-linux.org/wiki/HowTo/UseOpenSSHForRemoteAccess
+
+Dropbear is preferred by some:
+
+ - Dropbear package details on NSLU2-Linux wiki at:
+ http://www.nslu2-linux.org/wiki/HowTo/UseDropBearForRemoteAccess
+
+The rationale behind not enabling telnet by default is ensure that an Unslung
+NSLU2 has the same network footprint as a stock NSLU2 with Linksys firmware.
+That said, if you want to enable telnet on boot, then install the xinetd
+package (which enables telnet by default).
+
+
+CHANGELOG
+
+1.11:
+
+First public release
+
+1.12:
+
+Added a symlink to slingbox for gzip. Added flashfs (as simple utility for
+preserving user files across hard disk formats during beta testing).
+
+1.13:
+
+Added LD_LIBRARY_PATH to /etc/profile (only works for telnet and ssh access,
+not for serial or diversion scripts).
+
+1.14:
+
+Added Unslung Doc link to the User Guide page.
+
+2.3:
+
+Moved development to OpenEmbedded.
+
+2.4:
+
+Updated to the latest ipk binary instead of the simple script.
+
+2.5:
+
+Added the real wget (instead of using the busybox version). This is so we can
+support .netrc files for commercial packages.
+
+2.6:
+
+Fixed the unsling script so it removes conflicting files on an upgrade.
+
+2.7:
+
+Began development of the -able variant.
+
+2.8:
+
+Added the patch for genesys enclosures.
+
+2.9:
+
+Reorganized the various variants into a more consistent scheme.
+
+2.10:
+
+Added the ext3flash-on-disk1 functionality.
+
+2.11:
+
+Added the README to /opt/doc.
+
+2.12:
+
+First public release of 2.x firmware.
+
+3.1:
+
+Added jffs2 functionality.
+
+3.2:
+
+Incorporated switchbox functionality.
+
+3.3:
+
+Added ramdisks for /dev and /var to reduce internal flash writes.
+
+3.4:
+
+Replaced flashfs script with new resling script.
+
+3.5:
+
+Added code to reinitialize /etc/mtab on boot.
+
+3.6:
+
+Mounted /dev and /var jffs2 directories as /dev.state and /var.state so that
+they can be used for persistent changes which are used to populate the ramdisks
+on the next boot.
+
+3.7:
+
+Added "Pluggable Personalities" - now runs diversion scripts from both the
+internal jffs2 area and also from an external drive attached at boot time.
+
+3.8:
+
+Enabled mounting of external drives earlier in the boot process, so that the
+rc, rc.sysinit, and rc.1 scripts can be diverted by external diversion scripts
+on an attached drive.
+
+3.9:
+
+Moved a number of -able kernel features (such as USB devfs support) into
+-standard.
+
+3.10:
+
+Added support for unslung-start and unslung-stop diversion scripts, and package
+shutdown scripts (K??foo).
+
+3.11:
+
+Added NFS kernel support (both client and server, and both V2 and V3
+protocols).
+
+3.12:
+
+Added basic maintenance mode support. If /.ramdisk exists in the jffs2
+filesystem, then the jffs2 filesystem is copied into a ramdisk on boot, and run
+from there. This allows for updating firmware using the web interface.
+
+3.13:
+
+Added recovery mode support. If a viable root filesystem cannot be found, then
+switchbox drops into a basic recovery shell, with a telnet daemon running as
+192.168.1.77 with no password. This behavior can also be forced with a
+/.recovery file in the jffs2 filesystem.
+
+3.14:
+
+Added web control of maintenance mode. You have to enable maintenance mode and
+reboot before the firmware upgrade page allows you to enter a filename for the
+new firmware.
+
+3.15:
+
+Added confirmation dialog boxes to the maintenance mode web control.
+
+3.16:
+
+First public release of 3.x firmware.
+
+3.17:
+
+Fixed syslog issue. Added FP patches.
+
+3.18:
+
+Fixed a number of minor issues regarding file permissions.
+Added support for unslinging to the data partition.
+
+4.1:
+
+Split from 3.x stream to allow parallel development.
+
+4.2:
+
+New switchbox implementation with NFS and external USB disk root filesystem
+support.
+
+4.3:
+
+Enabled devfs.
+
+4.4:
+
+Changed slingbox program locations to match those of OpenSlug so that
+we can use the same switchbox for both.
+
+4.5:
+
+Enabled RAID support modules and USB camera support modules.
+
+4.6:
+
+Merged unslung-standard and unslung-able, and created the oe feed for
+downloadable kernel modules. Updated the unsling script to support
+external rootfs.
+
+4.7:
+
+Enabled lots of traffic shaping modules. Enabled support for external
+disks on sda1, sda2, sdb1 and sdb2.
+
+4.8:
+
+Made Unslung *not* create ramdisk for /var and /dev when you've
+unslung to an external disk. Fixed nsswitch.conf. Updated the feed
+locations. Added /dev/st devices for tape drive support.
+
+4.9:
+
+Updated the unslung script to give feedback on the rootfs transfer,
+and to preserve an existing upkg database on the target disk. Added
+more device nodes to support the new downloadable kernel modules.
+
+4.10:
+
+Made Unslung wait until quota checking is complete before running
+package startup scripts. Simplified unsling to support disk1 and
+disk2 (data partitions) only.
+
+4.11:
+
+Removed /tmp ramdisk if unslung to an external disk. Now clears /tmp
+and /mnt/backup on each boot.
+
+4.12:
+
+Updated to the latest ipkg version.
+
+4.13:
+
+Added /dev/sdd and /dev/sde device nodes.
+Added support for alternate rootfs under expert user control.
+
+4.14:
+
+Added audio support to the kernel. Increased the USB disk startup
+wait to 10 seconds, and added the ability to divert rc.bootbin to the
+startup scripts.
+
+4.15:
+
+Added /dev/dsp and updated the README and NOTES files.
+
+4.16:
+
+Added the /sbin/slingover script for migrating packages from the 3.x locations.
+
+4.17:
+
+Developer-only release booting straight from jffs2 instead of using switchbox.
+
+4.18:
+
+A number of /linuxrc fixes. Removed support for alternate rootfs under expert
+user control (expert users can now just edit the /linuxrc in jffs2 directly).
+
+4.19:
+
+Removed all trace of switchbox from the firmware. This saves 128Kb of flash,
+and about 1MB of RAM.
+
+4.20:
+
+First public release of 4.x firmware.
+
+5.1:
+
+Upgraded to Linksys firmware V2.3R29, but kept telnetd.
+
+5.2:
+
+Removed the ipkg link, and made unsling put it back on an external disk.
+
+5.3:
+
+Replaced maintenance mode with code to allow entry into RedBoot Upgrade Mode.
+
+5.4:
+
+Removed all maintenance mode support, and also removed support for rootfs on
+jffs2 but packages on external disk (it's either all or nothing).
+Removed unused /mnt/sda1, /mnt/sda2, /mnt/sdb1, and /mnt/sdb2.
+Disabled the download process (superceded by upgrade mode).
+Disabled the generation of the "ourtelnetrescue" user (too insecure).
+Added disk auto-wait countdown to /linuxrc (courtesy of glc).
+
+5.5:
+
+First public release of 5.x firmware.
+
+6.0:
+
+First alpha release of 6.x Unslung firmware, based on Linksys V2.3R63 firmware.
+
+6.5:
+
+Unsling script now prompts for a root password to be used, additional sanity
+checks added to minimize the chance of an improper unsling. User feedback
+added to indicate the status (running from internal flash or booted up from
+an external drive) via /etc/motd, ipkg, as well as the main web page. Improved
+diagnostic messages from unsling. Added the Linksys custom code to the "mount"
+code in the slingbox version of mount.
+
+6.6:
+
+Changed the code that handles the ".ext3flash" functionality so that it can
+handle booting from either /dev/sda or /dev/sdb.
+Cleanup of the "telnet.htm" management page.
+Unsling now creates the wmtp and utmp files.
+Unsling now "edits" the .../conf/passwd file instead of replacing it.
+Ipkg dependencies fixed so that kernel-modules no longer need "force-install".
+Support for loopback mounting ISO images (loop.o and isofs.o are now created).
+The keyspan.o USB serial kernel-module is also created at build time.
+README file updated to reflect the new unsling script as well as the
+change in preferred port for the primary external disk.
+
+6.7:
+
+Added original "netconsole" code as a kernel module
+Fixed problem with password changing from the GUI and automatic mounting of
+drives and flash devices in port 1.
+Remove unnecessary directory /lib/modules/2.4.22-xfs/pcmcia.
+
+6.8:
+
+First beta release.
+
+6.9:
+
+Modified /etc/rc.d/rc.modules to "insmod" any nls code page modules present.
+
+Code Page 850 is now compiled into the kernel instead of a kernel module,
+and added Code Page 949 (as a module).
+
+Updated the upgrade.htm file to reflect redboot as the upgrade means.
+
+Remove the upgrade.cgi, upgrade_ui.htm, and upgrade_ui.cgi files from the
+root image as they are no longer used, and we can always use free space.
+
+Rearranged portions of the build procedure to remove the samba code pages in
+the rootfs bb, create a new package with the removed code pages in a new
+nslu2-linksys-sambacodepages.bb file (to restore the code pages, use ipkg to
+install package "nslu2-linksys-sambacodepages". Note that the rootfs and the
+sambacodepages bb files must be kept in sync regarding the samba code pages
+that are left in the image and the ones that are added to the package (and it
+is also a good idea if the kernel defconfig reflects the inclusion of NLS
+support for the code pages that are left in the image, of course).
+
+Fixed ppp-mppe.c to remove unresolved symbols when loading module.
+
+Disable the ourtelnetrescueuser account in the passwd file entirely since
+Unslung doesn't need it anymore.
+
+Include losetup with slingbox (so we have losetup in the firmware).
+
+Fix extraneous boot messages from jffs2 filesystem driver (change options
+used when building the flash jffs image).
+
+Added pl2303.c patch for TIOCMGET/MSET/MBIS/MBIC.
+Syntax fixes in prep for newer busybox:
+ - comments in rc.samba, "cp" in rc.sysinit
+
+Flash filesystem cleanup (regained space):
+ - replaced dupl 'date' utility with symlink, corrected 'killall' symlink
+ - removed 'mt', 'libexec', 'locate', 'xargs', 'updatedb' from flash
+ (TODO: strip ipkg database entries out for 'findutils' and 'cpio')
+ - adjusted 'unsling' to use common 'find' options (hope to replace soon)
+
+Upgraded slingbox to v1.1.3 busybox base; enabled 'more' command
+(note: upgrade added 3KB in size, 'more' added 4KB in size)
+
+Added network console debugging support:
+ - patched netconsole driver, added netconsole kernel module to image
+ - updated /linuxrc (& misc files) for basic support of same
+
+Added ".nodisk" flag -- presence of the ".nodisk" file on the flash root
+will force a one-time-only boot to flash. This makes for easier testing and
+maintenance; easier than plugging and unplugging disks.
+
+Empty the /etc/win_share.info file on boot (fixes problem with multiple
+identical shares appearing on a system).
+
+Upgraded slingbox to v1.2.2 busybox base; enabled fdisk.
+
+Replaced Linksys busybox with slingbox entirely.
+
+Modified "unsling" script to use tar instead of find and cpio; removed
+obsolete and untested unsling utilities (eg: resling).
+
+Replace mkfs.ext3 with a script in order to fix an obscure formatting bug
+with the Linksys GUI.
+
+Increased the bootup delay from 5 seconds to 15 seconds in linuxrc;
+required by some large disks which require additional time to become ready.
+Touching "/.fastdisk" on the flash filesystem will revert to the original
+5 second delay, which is useful to retain reasonably boot times.
+
+Added the bootdisk mechanism: at initial boot time, partitions mounted
+on the HDD mountpoints are scanned for a special directory structure
+containing startup script, which are executed. This facilitates easy
+customization of the boot for debugging purposes, or even automated
+installation and configuration processes.
+
+6.10:
+
+Second beta release.
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/README b/recipes/nslu2-binary-only/unslung-rootfs/README
new file mode 100644
index 0000000000..b5f5a23190
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/README
@@ -0,0 +1,177 @@
+ Unslung-6.10 README
+
+If at any time you have any questions concerning the installation or operation
+of Unslung firmware, your first port of call should be the NSLU2-Linux wiki at:
+
+ http://www.nslu2-linux.org
+
+Additional information, including ChangeLog information can be found in the
+associated Unslung NOTES file as well as on the NSLU2-Linux wiki.
+
+-------------------------------------------------------------------------------
+
+There are three parts to completing the installation of the Unslung firmware:
+
+ 1 - PRE-INSTALLATION CONSIDERATIONS
+ 2 - FIRMWARE INSTALLATION DETAILS
+ 3 - UNSLINGING DETAILS
+
+1) PRE-INSTALLATION CONSIDERATIONS
+
+a) You *must* confirm that you can enter "upgrade mode" using the Reset Button
+method. This is necessary because once you install Unslung, you will be unable
+to use the web GUI to reflash the device; the Reset Button technique will be
+required to install new firmware, upgrade, or recover from a bad flash:
+
+ http://www.nslu2-linux.org/wiki/HowTo/UseTheResetButtonToEnterUpgradeMode
+
+To upload the firmware, use either the Sercomm Update Utility (for Windows
+users) or the UpSlug2 Utility (for Linux and MacOS X users):
+
+ http://www.nslu2-linux.org/wiki/Main/SercommFirmwareUpdater
+ http://www.nslu2-linux.org/wiki/Main/UpSlug2
+ http://www.nslu2-linux.org/wiki/Main/UpSlug2onOSX
+
+b) You must have an external USB disk drive or an external USB flash device.
+There are a number of considerations to take into account in selecting the size
+and type of external device as well as which of the two USB ports to use:
+
+ http://www.nslu2-linux.org/wiki/Unslung/StorageBasics
+ http://www.nslu2-linux.org/wiki/Unslung/WhichUSBPortforUnslung6
+
+It is important to make sure that the device you intend to use is functional
+with the standard Linksys firmware before you attempt to use it with Unslung.
+
+c) Review any known issues and errata:
+
+ http://www.nslu2-linux.org/wiki/Unslung/KnownProblems
+
+(Hint: read the wiki pages carefully to determine the firmware release to which
+they apply; many of the pages contain information pertaining to older versions
+of Unslung, or even to other firmware entirely.)
+
+2) FIRMWARE INSTALLATION DETAILS
+
+The installation process is simple, but each step is important. The most
+common problems reported are a result of skipping one of the steps in this
+process, so be careful. In particular, having a disk or flash device plugged
+in when it shouldn't be can mean the difference between success and failure.
+
+a) Preparation
+
+- Install either the Sercomm (Windows) or the UpSlug2 (Linux and MacOS X)
+ utilities on the system you'll be using to upload the firmware.
+
+- Access the Linksys web GUI, and record your network settings.
+
+- Shutdown the NSLU2 and unplug all USB cables and devices.
+
+b) Flashing the New Firmware
+
+- Enter upgrade mode, using the Reset Button technique.
+
+- Use either the Sercomm or UpSlug2 Utility to upload the new firmware.
+
+c) Verifying the New Firmware
+
+- The NSLU2 will restart itself after the firmware in installed.
+
+- Access the Linksys web GUI. The new firmware version will be displayed on
+ the "Home" screen.
+
+3) 'UNSLINGING' DETAILS
+
+"Unslinging" is the process of copying the firmware to an external disk, and
+configuring that external disk for installation of packages. In order to
+perform this operation, you need to log in to the NSLU2 using telnet, and you
+need a suitable external disk or flash device.
+
+This procedure is made a bit more complicated because the behavior of the NSLU2
+can change depending on the presence of an external disk. Specifically, when
+an external storage device is plugged in, the NSLU2 will switch over to using
+the passwords and configuration information stored on that external disk, if
+possible. Since we don't know the root password originally written to that
+device, you must be very careful to perform the following steps in precisely
+the specified order, or you'll lock yourself out of your own device.
+
+a) Gain Telnet Access
+
+- Power up the NSLU2 without any disks connected.
+
+- Enable telnet by going to the NSLU2's web GUI and clicking on the "Manage
+ Telnet" link (right-hand side), then on the "Enable" button to turn on the
+ telnet service.
+
+- Use your telnet utility to telnet into the NSLU2, and log in using the
+ username root and password uNSLUng (upper/lower case is significant).
+
+- Do not logout before you go to the next step, or you'll have to start this
+ step over again.
+
+b) Gain Access to the External Storage
+
+- Identify the drive or flash device to which you will be unslinging, and plug
+ it in to the desired USB port.
+
+- Wait for a minute or two while the disk is mounted.
+
+- Check the web GUI to make sure that the disk has been recognized by the
+ Linksys software
+
+- If the disk has not been previously formatted on the NSLU2, then now is the
+ time to do that.
+
+- Be patient - it might take several minutes for the NSLU2 to recognize the
+ hardware, mount the partitions, and verify that the drive is correctly
+ configured to be considered "Formatted".
+
+- Do not continue if the drive is not marked as "Formatted (ext3)" in the
+ NSLU2 web GUI.
+
+c) Unsling
+
+- In the telnet session, run "unsling disk2" if your device is on the USB port
+ labeled "DISK 2", or "unsling disk1" if it's on the port marked "DISK 1".
+
+- When prompted, enter a new root password - this password will replace the
+ uNSLUng password.
+
+- When the unsling is complete, reboot the NSLU2.
+
+d) Confirm That Your NSLU2 is Unslung:
+
+- Once rebooted, open the NSLU2 web GUI in your browser.
+
+- Confirm that the text at the bottom of the page reads "uNSLUng status:
+ Unslung to disk2, /dev/sda1" (your devices may vary, of course).
+
+- Click the "Manage Telnet" link, and enable telnet as before.
+
+- Telnet to the NSLU2, and login using the root user and the new password you
+ gave when unslinging.
+
+- Confirm that the login message states that you are running in Unslung mode.
+
+e) Updating Package Lists and Installing Optware Packages
+
+(This is, strictly speaking, optional - but we expect that you installed this
+firmware so that you could add additional software.)
+
+- Telnet into the NSLU2.
+
+- Check that your NSLU2 can reach the internet by pinging www.nslu2-linux.org.
+ (if it fails, check your NSLU2 network settings (on the web GUI pages), or
+ check your router or network configuration to correct this problem.)
+
+- Enter the command "ipkg update" to update the list of software packages
+ ("optware") available for Unslung.
+
+- Install the "openssh" package with the command "ipkg install openssh".
+
+-------------------------------------------------------------------------------
+
+Congratulations! Your NSLU2 is unslung, and ready to do more than you'd
+imagine such a small device could ever do. Enjoy! If you find the Unslung
+firmware useful, you may wish to make a donation to help support the project:
+
+ http://www.nslu2-linux.org/wiki/Main/Donate
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/create-ramdisks.patch b/recipes/nslu2-binary-only/unslung-rootfs/create-ramdisks.patch
new file mode 100644
index 0000000000..5ba8bc6607
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/create-ramdisks.patch
@@ -0,0 +1,30 @@
+--- nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.sysinit.orig 2004-11-09 21:45:46.000000000 +1030
++++ nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.sysinit 2004-11-09 21:41:47.000000000 +1030
+@@ -13,7 +13,25 @@
+
+ mkdir -p /var/lock/samba >/dev/null
+-/bin/echo "Creating ramfs for /var/lock/samba:"; mount -t ramfs none /var/lock/samba -o maxsize=64
+-/bin/echo "Limit the space of log folder:"; mount -t ramfs none /var/log -o maxsize=128
++
++if ( [ ! -f /.sda1root ] && [ ! -f /.sda2root ] && [ ! -f /.sdb1root ] && [ ! -f /.sdb2root ] ) ; then
++ /bin/echo "Creating ramfs for /dev:"
++ /bin/mount -t ramfs ramfs /mnt/tmpmnt
++ /bin/cp -rp /dev/* /mnt/tmpmnt/
++ /bin/mkdir -p /dev.state
++ /bin/mount -o bind /dev /dev.state
++ /bin/mount -o bind /mnt/tmpmnt /dev
++ /bin/umount /mnt/tmpmnt
++ /bin/echo "Creating ramfs for /var:"
++ /bin/mount -t ramfs ramfs /mnt/tmpmnt -o maxsize=256
++ /bin/cp -rp /var/* /mnt/tmpmnt/
++ /bin/mkdir -p /var.state
++ /bin/mount -o bind /var /var.state
++ /bin/mount -o bind /mnt/tmpmnt /var
++ /bin/umount /mnt/tmpmnt
++ /bin/killall syslogd
++ /bin/killall klogd
++fi
++
+ mkdir -p /var/log/samba >/dev/null
+ touch /var/log/server.log >/dev/null
+ chmod 755 /var/log/samba >/dev/null
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/initialise-mtab.patch b/recipes/nslu2-binary-only/unslung-rootfs/initialise-mtab.patch
new file mode 100644
index 0000000000..fb4e1982f2
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/initialise-mtab.patch
@@ -0,0 +1,8 @@
+--- nslu2-linksys-ramdisk-2.3r25/etc/rc~ 2004-11-21 21:43:35.000000000 +1030
++++ nslu2-linksys-ramdisk-2.3r25/etc/rc 2004-11-21 21:49:54.000000000 +1030
+@@ -6,2 +6,5 @@
+ mount -t proc proc /proc
+ mount -o remount,rw /dev/root /
++
++sed -n -e '/^#/p' < /etc/fstab > /etc/mtab
++
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/ipkg-fl b/recipes/nslu2-binary-only/unslung-rootfs/ipkg-fl
new file mode 100755
index 0000000000..ade959a759
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/ipkg-fl
@@ -0,0 +1,11 @@
+#! /bin/sh
+echo
+echo "Error: The ipkg command cannot currently be used because this"
+echo "system is running from its internal flash; it is not currently"
+echo "\"unslung\" to an external disk or flash device."
+echo
+echo "Please complete the process of \"unslinging\" this system, or"
+echo "resolve the issues that did not permit it to boot from the"
+echo "external device before installing any ipkg packages or updates."
+echo
+exit 1
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/linuxrc b/recipes/nslu2-binary-only/unslung-rootfs/linuxrc
new file mode 100755
index 0000000000..1500779280
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/linuxrc
@@ -0,0 +1,106 @@
+#!/bin/sh
+
+NC_SLUGIP="192.168.1.77"
+NC_TARGIP="192.168.1.100"
+
+if ( [ -f "/.nc" ] ) ; then
+ if ( [ -z "$RERUN" ] ) ; then
+ /bin/echo " DEBUG: Starting network console from flash ..."
+ . /.nc
+ /bin/echo "Insmod ixp400"
+ /sbin/insmod ixp400.o
+ /bin/echo "Insmod ixp425"
+ /sbin/insmod ixp425_eth.o
+ /sbin/ifconfig ixp0 $NC_SLUGIP
+ /bin/echo "Insmod netconsole"
+ /sbin/insmod netconsole.o target_ipaddr=$NC_TARGIP
+ /bin/echo "Redirecting output via nc and restarting /linuxrc ..."
+ export RERUN=1
+ exec /linuxrc 2>&1 | tee /dev/console | /usr/bin/nc $NC_TARGIP 6666
+ fi
+fi
+
+# **** DO NOT EVEN THINK OF EDITING OR REMOVING THIS FILE ****
+# **** UNLESS YOU REALLY KNOW *EXACTLY* WHAT YOU ARE DOING. ****
+
+
+# Perform prepatory tasks, and determine whether an alternate rootfs is viable.
+
+/bin/mount -t proc proc /proc
+
+/bin/echo "1" > /proc/sys/kernel/panic
+
+if ( ! [ -f /.nodisk ] ) ; then
+
+ /bin/echo "Sleeping while waiting for disk..."
+ cnt=20
+ while [ $cnt -gt 0 ] ; do
+ /bin/echo -ne "\r$cnt "
+ /bin/sleep 1
+ [ -e /.sda1root -a -f /proc/hdd_sda ] && cnt=0
+ [ -e /.sdb1root -a -f /proc/hdd_sdb ] && cnt=0
+ cnt=`expr $cnt - 1`
+ done
+ /bin/echo
+
+ if [ -e /.fastdisk ] ; then
+ /bin/sleep 5
+ else
+ /bin/sleep 15
+ fi
+
+ mounted=
+
+ for prefroot in sda1 sdb1 ; do
+ if [ -z "$mounted" -a -e /.${prefroot}root ] ; then
+ if /bin/mount -rt ext3 /dev/$prefroot /mnt ; then
+ if [ -e /mnt/.${prefroot}root -a -x /mnt/bin/init ] ; then
+ /bin/echo "Root filesystem will be mounted from /dev/$prefroot ..."
+ mounted=/mnt
+ else
+ /bin/umount /mnt
+ /bin/echo "Can't find valid rootfs on /dev/$prefroot ..."
+ fi
+ fi
+ fi
+ done
+
+ if [ -z "$mounted" ] ; then
+ /bin/echo "Can't find valid rootfs, using ramdisk ..."
+ mounted=
+ fi
+
+ /bin/umount /proc
+
+ # Pivot to the desired rootfs and run the initial executable.
+
+ if [ -n "$mounted" ] ; then
+
+ cd $mounted
+
+ /bin/echo "Pivoting to external rootfs ..."
+ /sbin/pivot_root . initrd
+
+ if ( [ -z "$RERUN" ] ) ; then
+ exec /usr/sbin/chroot . /bin/init < /dev/console 1> /dev/console 2> /dev/console
+ else
+ exec /usr/sbin/chroot . /bin/init
+ fi
+ else
+
+ exec /bin/init
+
+ fi
+
+ /bin/echo "Can't pivot to external rootfs, using ramdisk ..."
+
+else
+ /bin/echo "Forced boot to internal flash ..."
+ /bin/echo "(One-time only, clearing forced boot flag file.)"
+ /bin/rm -f /.nodisk
+fi
+
+exec /bin/init
+
+# Last-resort fall-back - this should never be reached.
+/bin/sh
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/mkfs.ext3 b/recipes/nslu2-binary-only/unslung-rootfs/mkfs.ext3
new file mode 100755
index 0000000000..49a88c0e06
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/mkfs.ext3
@@ -0,0 +1,13 @@
+#!/bin/sh
+#
+# Fix obscure problem - redirect stdout iff mkfs.ext3
+# is being invoked by the Linksys GUI format utility.
+#
+u=`/bin/pidof utility.cgi`
+if [ ! -f "/tmp/Preparing" -o "x${u}" = "x" -o \
+ "y${1}" != "y-m" -o "z${2}" != "z1" ]
+then
+ /usr/bin/mke2fs -j $@
+else
+ /usr/bin/mke2fs -j $@ >/tmp/mkfs.$$.log
+fi
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/motd-fl b/recipes/nslu2-binary-only/unslung-rootfs/motd-fl
new file mode 100644
index 0000000000..aafcd21cb5
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/motd-fl
@@ -0,0 +1,11 @@
+
+Welcome to Unslung @v@
+
+ -------- NOTE: RUNNING FROM INTERNAL FLASH --------
+
+This system is currently running from the internal flash memory,
+it has NOT booted up into "unslung" mode from an external drive.
+
+In this mode, very few services are running, and available disk
+space is extremely limited. This mode is normally only used
+for initial installation, and system maintenance and recovery.
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/motd-un b/recipes/nslu2-binary-only/unslung-rootfs/motd-un
new file mode 100644
index 0000000000..5439b08be6
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/motd-un
@@ -0,0 +1,4 @@
+
+Welcome to Unslung @v@
+
+ ---------- NOTE: THIS SYSTEM IS CURRENTLY UNSLUNG ----------
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/mount_usbdevfs.patch b/recipes/nslu2-binary-only/unslung-rootfs/mount_usbdevfs.patch
new file mode 100644
index 0000000000..744636d0d9
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/mount_usbdevfs.patch
@@ -0,0 +1,10 @@
+--- nslu2-linksys-ramdisk-2.3r25/etc/rc.orig 2004-11-03 14:38:45.838082343 +1100
++++ nslu2-linksys-ramdisk-2.3r25/etc/rc 2004-11-03 16:27:08.572763797 +1100
+@@ -4,6 +4,7 @@
+
+ /usr/bin/Set_Led r_blinking &
+ mount -t proc proc /proc
++mount -t usbdevfs usbdevfs /proc/bus/usb
+ mount -o remount,rw /dev/root /
+ ifconfig lo 127.0.0.1
+ route add -net 127.0.0.0 netmask 255.255.255.0 lo
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/nsswitch.conf b/recipes/nslu2-binary-only/unslung-rootfs/nsswitch.conf
new file mode 100644
index 0000000000..4e0692b4f9
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/nsswitch.conf
@@ -0,0 +1,6 @@
+passwd: files
+group: files
+hosts: files dns
+networks: files dns
+services: files
+protocols: files
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc-diversion.patch b/recipes/nslu2-binary-only/unslung-rootfs/rc-diversion.patch
new file mode 100644
index 0000000000..34e1e795cf
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc-diversion.patch
@@ -0,0 +1,10 @@
+--- nslu2-linksys-ramdisk-2.3r25/etc/rc~ 2004-07-27 23:37:55.000000000 -0400
++++ nslu2-linksys-ramdisk-2.3r25/etc/rc 2004-09-01 21:47:47.000000000 -0400
+@@ -1,4 +1,7 @@
+ ## Simple beta script to verify csr
++
++if ( [ -f /unslung/rc ] && . /unslung/rc ) ; then return 0 ; fi
++
+ /usr/bin/Set_Led r_blinking &
+ mount -t proc proc /proc
+ mount -o remount,rw /dev/root /
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.1-diversion.patch b/recipes/nslu2-binary-only/unslung-rootfs/rc.1-diversion.patch
new file mode 100644
index 0000000000..d0d769931c
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.1-diversion.patch
@@ -0,0 +1,19 @@
+--- nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.1~ 2004-07-27 23:37:55.000000000 -0400
++++ nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.1 2004-09-01 21:56:17.000000000 -0400
+@@ -1,5 +1,7 @@
+ #!/bin/sh
+
++if ( [ -f /unslung/rc.1 ] && . /unslung/rc.1 ) ; then return 0 ; fi
++
+ #/sbin/ifconfig ixp0 hw ether 00:C0:02:01:01:04
+ /bin/echo "Starting Set CGI_ds.conf:"; /etc/rc.d/rc.bootbin; check_status
+
+@@ -17,6 +19,8 @@
+ /bin/echo "Starting Crond :"; . /etc/rc.d/rc.crond
+ /bin/echo "Starting Rest Task :"; . /etc/rc.d/rc.local
+
++/bin/echo "Starting Optware Packages:"; ( . /etc/rc.d/rc.optware-start )
++/bin/echo "Starting Bootdisk scripts:"; ( . /etc/rc.d/rc.bootdisk )
+ /usr/bin/Set_Led ready
+ /usr/bin/Set_Led beep1
+ /bin/echo "Checking disk status :"; /usr/sbin/CheckDiskFull 2 >/dev/null
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.1-timestamp.patch b/recipes/nslu2-binary-only/unslung-rootfs/rc.1-timestamp.patch
new file mode 100644
index 0000000000..c0034b27ab
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.1-timestamp.patch
@@ -0,0 +1,8 @@
+--- nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.1~ 2006-07-10 19:48:11.000000000 -0500
++++ nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.1 2006-07-10 19:48:24.000000000 -0500
+@@ -45,3 +45,5 @@
+ /usr/bin/Set_Led ready
+ /usr/bin/Set_Led beep1
+ /bin/echo "Checking disk status :"; /usr/sbin/CheckDiskFull 2 >/dev/null
++/bin/sleep 5
++/bin/date
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.bootbin b/recipes/nslu2-binary-only/unslung-rootfs/rc.bootbin
new file mode 100755
index 0000000000..42959e8b80
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.bootbin
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+if ( [ -f /unslung/rc.bootbin ] && . /unslung/rc.bootbin ) ; then return 0 ; fi
+
+/sbin/rc.bootbin
+
+return 0 \ No newline at end of file
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.bootdisk b/recipes/nslu2-binary-only/unslung-rootfs/rc.bootdisk
new file mode 100755
index 0000000000..c83881a333
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.bootdisk
@@ -0,0 +1,70 @@
+#!/bin/sh
+
+# If the nobootdisk flag is set, exit.
+if ( [ -f /.nobootdisk ] ) ; then return 0 ; fi
+
+# If we're not booting from flash, exit.
+i=`grep "/dev/root / jffs2" /proc/mounts`
+if ( [ -z "$i" ] ) ; then return 0 ; fi
+
+# Establish our identity
+linksys_hostname=`grep "^default_server_name=" /etc/CGI_ds.conf | sed s/default_server_name=//`
+real_hostname=`hostname`
+echo "====> linksys_hostname is $linksys_hostname"
+echo "====> real_hostname is $real_hostname"
+
+# but don't duplicate
+if ( [ "$linksys_hostname" = `hostname` ] ) ; then linksys_hostname= ; fi
+if ( [ "$real_hostname" = "default" ] ) ; then real_hostname= ; fi
+
+# Search all FAT/NTFS filesystem in order.
+# (heavily borrowed from the rc.start-optware script).
+
+for i in /share/*/data/HDD_* ; do
+
+ # if the value of i is the string with the wildcards, no match occurred.
+ if ( [ "$i" = '/share/*/data/HDD_*' ] ) ; then break ; fi
+
+ echo "====> searching $i..."
+
+ # Now check inside directories named for the Linksys hostname, the real
+ # hostname, and finally the name "default"...
+ for j in $linksys_hostname $real_hostname "default" ; do
+
+ echo "====> checking $i/bootdisk/$j ..."
+ if ( [ -d "$i/bootdisk/$j" ] ) ; then
+
+ # We have the correct subdirectory...
+ for k in "$i/bootdisk/$j"/S??* ; do
+
+ # Bail out if no match in that directory
+ if ( [ "$k" = "$i/bootdisk/$j"'/S??*' ] ) ; then break ; fi
+
+ echo "====> found $k ..."
+ [ ! -f "$k" ] && continue
+
+ # Check to see if we need to copy or run in-place..
+ nocopy=`grep "^#bootdisk:nocopy" "$k"`
+ if ( [ -z "$nocopy" ] ) ; then
+
+ # copy and strip the MSDOS-style line endings, then execute.
+ echo "====> running copy: /tmp/tmpscript $k $i"
+ dos2unix -u <"$k" >/tmp/tmpscript
+ /bin/sh /tmp/tmpscript "$k" "$i"
+ rm -f /tmp/tmpscript
+
+ else
+
+ # execute in place
+ echo "====> running in-place $k $k $i"
+ /bin/sh "$k" "$k" "$i"
+
+ fi
+
+ done
+
+ fi
+
+ done
+
+done
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.crond-diversion.patch b/recipes/nslu2-binary-only/unslung-rootfs/rc.crond-diversion.patch
new file mode 100644
index 0000000000..c770b2ac83
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.crond-diversion.patch
@@ -0,0 +1,10 @@
+--- nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.crond.orig 2004-07-27 23:37:55.000000000 -0400
++++ nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.crond 2004-09-01 21:56:37.000000000 -0400
+@@ -1,5 +1,7 @@
+ #!/bin/sh
+
++if ( [ -r /unslung/rc.crond ] && . /unslung/rc.crond ) ; then return 0 ; fi
++
+ if [ -n "`pidof crond`" ] ;then
+ /bin/killall crond 2>/dev/null
+ fi
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.halt-diversion.patch b/recipes/nslu2-binary-only/unslung-rootfs/rc.halt-diversion.patch
new file mode 100644
index 0000000000..3702c3d137
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.halt-diversion.patch
@@ -0,0 +1,12 @@
+--- nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.halt.orig 2004-07-27 23:37:55.000000000 -0400
++++ nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.halt 2004-09-01 21:57:01.000000000 -0400
+@@ -1,4 +1,9 @@
+ #!/bin/sh
++
++if ( [ -r /unslung/rc.halt ] && . /unslung/rc.halt ) ; then return 0 ; fi
++
++/bin/echo "Stopping Optware Packages:"; ( . /etc/rc.d/rc.optware-stop )
++
+ /bin/killall -2 upnpd &>/dev/null
+ /bin/killall nmbd &>/dev/null
+ /bin/killall smbd &>/dev/null
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.lan-shell.patch b/recipes/nslu2-binary-only/unslung-rootfs/rc.lan-shell.patch
new file mode 100644
index 0000000000..5d25788fdf
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.lan-shell.patch
@@ -0,0 +1,7 @@
+--- nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.lan.orig 2006-11-10 20:07:27.000000000 -0600
++++ nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.lan 2006-11-10 20:07:35.000000000 -0600
+@@ -1,3 +1,3 @@
+-#!/bin/bash
++#!/bin/sh
+ #echo "set network driver to operate in auto-sense mode"
+ #/sbin/insmod /lib/modules/sk98lin.o
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.local-diversion.patch b/recipes/nslu2-binary-only/unslung-rootfs/rc.local-diversion.patch
new file mode 100644
index 0000000000..335dc85835
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.local-diversion.patch
@@ -0,0 +1,12 @@
+--- nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.local.orig 2004-07-27 23:37:55.000000000 -0400
++++ nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.local 2004-09-01 21:57:17.000000000 -0400
+@@ -1,5 +1,9 @@
+ #!/bin/sh
++
+ HOSTNAME=`hostname`
++
++if ( [ -r /unslung/rc.local ] && . /unslung/rc.local ) ; then return 0 ; fi
++
+ /usr/sbin/CheckResetButton 2>/dev/null
+ /usr/sbin/CheckPowerButton 2>/dev/null
+ /usr/sbin/do_umount 2>/dev/null
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.modules-diversion.patch b/recipes/nslu2-binary-only/unslung-rootfs/rc.modules-diversion.patch
new file mode 100644
index 0000000000..d1de027f9a
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.modules-diversion.patch
@@ -0,0 +1,10 @@
+--- nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.modules.orig 2006-04-14 21:00:58.000000000 -0500
++++ nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.modules 2006-04-14 21:05:47.000000000 -0500
+@@ -1,4 +1,7 @@
+ #!/bin/sh
++
++if ( [ -f /unslung/rc.modules ] && . /unslung/rc.modules ) ; then return 0 ; fi
++
+ insmod pbuttons 2>/dev/null
+ insmod rbuttons 2>/dev/null
+ insmod x1226-rtc 2>/dev/null
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.modules-nls.patch b/recipes/nslu2-binary-only/unslung-rootfs/rc.modules-nls.patch
new file mode 100644
index 0000000000..1eb342b715
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.modules-nls.patch
@@ -0,0 +1,10 @@
+--- nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.modules.orig 2006-04-14 21:05:47.000000000 -0500
++++ nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.modules 2006-04-14 19:56:29.000000000 -0500
+@@ -6,3 +6,7 @@
+ insmod rbuttons 2>/dev/null
+ insmod x1226-rtc 2>/dev/null
+ insmod ufsd 2>/dev/null
++
++for i in /lib/modules/`/bin/uname -r`/kernel/fs/nls/nls_cp*.o ; do
++ insmod "$i" 2>/dev/null
++done
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.network-diversion.patch b/recipes/nslu2-binary-only/unslung-rootfs/rc.network-diversion.patch
new file mode 100644
index 0000000000..0cb2a66666
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.network-diversion.patch
@@ -0,0 +1,9 @@
+--- nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.network.orig 2004-07-27 23:37:55.000000000 -0400
++++ nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.network 2004-09-01 21:57:46.000000000 -0400
+@@ -1,3 +1,6 @@
+ #!/bin/sh
++
++if ( [ -f /unslung/rc.network ] && . /unslung/rc.network ) ; then return 0 ; fi
++
+ /sbin/ifup; #check_status
+ /bin/echo "call rc.network!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.optware-start b/recipes/nslu2-binary-only/unslung-rootfs/rc.optware-start
new file mode 100755
index 0000000000..53fe7e8262
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.optware-start
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+if ( [ -f /unslung/rc.optware-start ] && . /unslung/rc.optware-start ) ; then return 0 ; fi
+
+# Start all init scripts in /opt/etc/init.d
+# executing them in numerical order.
+#
+for i in /opt/etc/init.d/S??* ;do
+
+ # Ignore dangling symlinks (if any).
+ [ ! -f "$i" ] && continue
+
+ case "$i" in
+ *.sh)
+ # Source shell script for speed.
+ (
+ trap - INT QUIT TSTP
+ set start
+ . $i
+ )
+ ;;
+ *)
+ # No sh extension, so fork subprocess.
+ $i start
+ ;;
+ esac
+done
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.optware-stop b/recipes/nslu2-binary-only/unslung-rootfs/rc.optware-stop
new file mode 100755
index 0000000000..3668aaf351
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.optware-stop
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+if ( [ -f /unslung/rc.optware-stop ] && . /unslung/rc.optware-stop ) ; then return 0 ; fi
+
+# Stop all init scripts in /opt/etc/init.d
+# executing them in numerical order.
+#
+for i in /opt/etc/init.d/K??* ;do
+
+ # Ignore dangling symlinks (if any).
+ [ ! -f "$i" ] && continue
+
+ case "$i" in
+ *.sh)
+ # Source shell script for speed.
+ (
+ trap - INT QUIT TSTP
+ set stop
+ . $i
+ )
+ ;;
+ *)
+ # No sh extension, so fork subprocess.
+ $i stop
+ ;;
+ esac
+done
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.quickset-diversion.patch b/recipes/nslu2-binary-only/unslung-rootfs/rc.quickset-diversion.patch
new file mode 100644
index 0000000000..df6534daca
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.quickset-diversion.patch
@@ -0,0 +1,9 @@
+--- nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.quickset.orig 2004-07-27 23:37:55.000000000 -0400
++++ nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.quickset 2004-09-01 21:57:57.000000000 -0400
+@@ -1,3 +1,6 @@
+ #!/bin/sh
++
++if ( [ -f /unslung/rc.quickset ] && . /unslung/rc.quickset ) ; then return 0 ; fi
++
+ /usr/sbin/QuickSet; check_status
+ /usr/sbin/USB_Detect; check_status
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.quota-diversion.patch b/recipes/nslu2-binary-only/unslung-rootfs/rc.quota-diversion.patch
new file mode 100644
index 0000000000..288ef1929c
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.quota-diversion.patch
@@ -0,0 +1,10 @@
+--- nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.quota.orig 2004-07-27 23:37:55.000000000 -0400
++++ nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.quota 2004-09-01 21:58:08.000000000 -0400
+@@ -1,5 +1,7 @@
+ #!/bin/sh
+
++if ( [ -f /unslung/rc.quota ] && . /unslung/rc.quota ) ; then return 0 ; fi
++
+ # Check and turn on disk quota.
+ if [ -x "/usr/bin/quotacheck" ]
+ then
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.reboot-diversion.patch b/recipes/nslu2-binary-only/unslung-rootfs/rc.reboot-diversion.patch
new file mode 100644
index 0000000000..3e73b941c1
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.reboot-diversion.patch
@@ -0,0 +1,12 @@
+--- nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.reboot.orig 2004-07-27 23:37:55.000000000 -0400
++++ nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.reboot 2004-09-01 21:58:19.000000000 -0400
+@@ -1,4 +1,9 @@
+ #!/bin/sh
++
++if ( [ -r /unslung/rc.reboot ] && . /unslung/rc.reboot ) ; then return 0 ; fi
++
++/bin/echo "Stopping Optware Packages:"; ( . /etc/rc.d/rc.optware-stop )
++
+ /bin/killall -2 upnpd 2>/dev/null
+ sleep 4
+ /sbin/ifdown ixp0
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.reset_usrgrpshare-diversion.patch b/recipes/nslu2-binary-only/unslung-rootfs/rc.reset_usrgrpshare-diversion.patch
new file mode 100644
index 0000000000..c01804bb68
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.reset_usrgrpshare-diversion.patch
@@ -0,0 +1,8 @@
+--- nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.reset_usrgrpshare.orig 2004-07-27 23:37:55.000000000 -0400
++++ nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.reset_usrgrpshare 2004-09-01 21:58:36.000000000 -0400
+@@ -1,2 +1,5 @@
+ #!/bin/sh
++
++if ( [ -f /unslung/rc.reset_usrgrpshare ] && . /unslung/rc.reset_usrgrpshare ) ; then return 0 ; fi
++
+ /usr/sbin/reset_ugs;
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.rstimezone-diversion.patch b/recipes/nslu2-binary-only/unslung-rootfs/rc.rstimezone-diversion.patch
new file mode 100644
index 0000000000..19b020fcbc
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.rstimezone-diversion.patch
@@ -0,0 +1,10 @@
+--- nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.rstimezone.orig 2004-07-27 23:37:55.000000000 -0400
++++ nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.rstimezone 2004-09-01 21:58:47.000000000 -0400
+@@ -1,4 +1,7 @@
+ #!/bin/sh
++
++if ( [ -f /unslung/rc.rstimezone ] && . /unslung/rc.rstimezone ) ; then return 0 ; fi
++
+ #TIME=`/usr/sbin/hwclock`
+ /usr/sbin/Set_TimeZone >/dev/null
+ #/bin/date -s "$TIME"
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.samba-diversion.patch b/recipes/nslu2-binary-only/unslung-rootfs/rc.samba-diversion.patch
new file mode 100644
index 0000000000..322aa5fe33
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.samba-diversion.patch
@@ -0,0 +1,10 @@
+--- nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.samba.orig 2004-07-27 23:37:55.000000000 -0400
++++ nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.samba 2004-09-01 21:58:57.000000000 -0400
+@@ -1,4 +1,7 @@
+ #!/bin/sh
++
++if ( [ -f /unslung/rc.samba ] && . /unslung/rc.samba ) ; then return 0 ; fi
++
+ if [ -n "`pidof smbd`" ] ; then
+ killall smbd 2>/dev/null
+ fi
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.samba-syntaxfix.patch b/recipes/nslu2-binary-only/unslung-rootfs/rc.samba-syntaxfix.patch
new file mode 100644
index 0000000000..fcfc273f2b
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.samba-syntaxfix.patch
@@ -0,0 +1,23 @@
+--- nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.samba~ 2006-05-16 14:22:33.000000000 -0500
++++ nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.samba 2006-05-16 16:47:45.000000000 -0500
+@@ -5,16 +5,16 @@
+ if [ -n "`pidof smbd`" ] ; then
+ killall smbd 2>/dev/null
+ fi
+-if [ -n "`pidof smbd`" ] ; then
++#if [ -n "`pidof smbd`" ] ; then
+ # killall -9 smbd 2>/dev/null
+-fi
++#fi
+
+ if [ -n "`pidof nmbd`" ] ; then
+ killall nmbd 2>/dev/null
+ fi
+-if [ -n "`pidof nmbd`" ] ; then
++#if [ -n "`pidof nmbd`" ] ; then
+ # killall -9 nmbd 2>/dev/null
+-fi
++#fi
+ sleep 2
+ /usr/sbin/smbd -D;
+ /usr/sbin/nmbd -D;
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.sysinit-clean_var.patch b/recipes/nslu2-binary-only/unslung-rootfs/rc.sysinit-clean_var.patch
new file mode 100644
index 0000000000..17e7ebef43
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.sysinit-clean_var.patch
@@ -0,0 +1,22 @@
+--- nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.sysinit.orig 2006-03-01 17:55:20.000000000 -0600
++++ nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.sysinit 2006-03-01 18:25:06.000000000 -0600
+@@ -30,6 +30,19 @@
+ mkdir -p /var/log/samba >/dev/null
+ touch /var/log/server.log >/dev/null
+ chmod 755 /var/log/samba >/dev/null
++
++# Clean up /var/lock and /var/run (fixes bug where USB_Detect fails),
++# and empty utmp and wtmp (but do not create them if they don't exist).
++rm -f /var/run/*.pid
++rm -f /var/lock/samba/*.pid
++rm -f /var/lock/ds_diag
++if ( [ -f /var/run/utmp ] ) ; then
++ > /var/run/utmp
++fi
++if ( [ -f /var/log/wtmp ] ) ; then
++ > /var/log/wtmp
++fi
++
+ /bin/echo "Starting Hostname :"; hostname ${HOSTNAME}; check_status
+ #/bin/echo "Starting System Log :"; . /etc/rc.d/rc.syslogd
+ /bin/echo "Starting Modules :"; . /etc/rc.d/rc.modules
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.sysinit-cpbug.patch b/recipes/nslu2-binary-only/unslung-rootfs/rc.sysinit-cpbug.patch
new file mode 100644
index 0000000000..5b908851ed
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.sysinit-cpbug.patch
@@ -0,0 +1,19 @@
+--- nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.sysinit~ 2006-05-16 17:35:56.000000000 -0500
++++ nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.sysinit 2006-05-16 17:36:10.000000000 -0500
+@@ -11,14 +11,14 @@
+ if ( [ ! -f /.sda1root ] && [ ! -f /.sda2root ] && [ ! -f /.sdb1root ] && [ ! -f /.sdb2root ] ) ; then
+ /bin/echo "Creating ramfs for /dev:"
+ /bin/mount -t ramfs ramfs /mnt/tmpmnt
+- /bin/cp -rp /dev/* /mnt/tmpmnt/
++ /bin/cp -a /dev/* /mnt/tmpmnt/
+ /bin/mkdir -p /dev.state
+ /bin/mount -o bind /dev /dev.state
+ /bin/mount -o bind /mnt/tmpmnt /dev
+ /bin/umount /mnt/tmpmnt
+ /bin/echo "Creating ramfs for /var:"
+ /bin/mount -t ramfs ramfs /mnt/tmpmnt -o maxsize=256
+- /bin/cp -rp /var/* /mnt/tmpmnt/
++ /bin/cp -a /var/* /mnt/tmpmnt/
+ /bin/mkdir -p /var.state
+ /bin/mount -o bind /var /var.state
+ /bin/mount -o bind /mnt/tmpmnt /var
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.sysinit-diversion.patch b/recipes/nslu2-binary-only/unslung-rootfs/rc.sysinit-diversion.patch
new file mode 100644
index 0000000000..c929424457
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.sysinit-diversion.patch
@@ -0,0 +1,15 @@
+--- nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.sysinit.orig 2004-07-27 23:37:55.000000000 -0400
++++ nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.sysinit 2004-09-01 21:59:04.000000000 -0400
+@@ -1,7 +1,11 @@
+ #!/bin/sh
+-export PATH=/bin:/sbin:/usr/bin:/usr/sbin
++export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/opt/bin:/opt/sbin
++
+ . /etc/rc.d/rc.functions
+ . /etc/sysconfig/network
++
++if ( [ -f /unslung/rc.sysinit ] && . /unslung/rc.sysinit ) ; then return 0 ; fi
++
+ mkdir -p /var/lock/samba >/dev/null
+ /bin/echo "Creating ramfs for /var/lock/samba:"; mount -t ramfs none /var/lock/samba -o maxsize=64
+ /bin/echo "Limit the space of log folder:"; mount -t ramfs none /var/log -o maxsize=128
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.sysinit-win_share.patch b/recipes/nslu2-binary-only/unslung-rootfs/rc.sysinit-win_share.patch
new file mode 100644
index 0000000000..392a294588
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.sysinit-win_share.patch
@@ -0,0 +1,15 @@
+--- nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.sysinit.orig 2006-07-11 01:36:28.000000000 -0500
++++ nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.sysinit 2006-07-11 10:10:29.000000000 -0500
+@@ -43,6 +43,12 @@
+ > /var/log/wtmp
+ fi
+
++# Clean up /etc/win_share.info (fixes bug where shares appear
++# multiple times. Do not create the file if it doesn't exist, though.
++if ( [ -f /etc/win_share.info ] ) ; then
++ > /etc/win_share.info
++fi
++
+ /bin/echo "Starting Hostname :"; hostname ${HOSTNAME}; check_status
+ #/bin/echo "Starting System Log :"; . /etc/rc.d/rc.syslogd
+ /bin/echo "Starting Modules :"; . /etc/rc.d/rc.modules
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.thttpd-diversion.patch b/recipes/nslu2-binary-only/unslung-rootfs/rc.thttpd-diversion.patch
new file mode 100644
index 0000000000..35528ef71e
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.thttpd-diversion.patch
@@ -0,0 +1,10 @@
+--- nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.thttpd.orig 2004-07-27 23:37:55.000000000 -0400
++++ nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.thttpd 2004-09-01 21:59:13.000000000 -0400
+@@ -1,4 +1,7 @@
+ #!/bin/sh
++
++if ( [ -f /unslung/rc.thttpd ] && . /unslung/rc.thttpd ) ; then return 0 ; fi
++
+ if [ -n "`pidof thttpd`" ] ;then
+ /bin/killall thttpd 2>/dev/null
+ fi
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/rc.xinetd-diversion.patch b/recipes/nslu2-binary-only/unslung-rootfs/rc.xinetd-diversion.patch
new file mode 100644
index 0000000000..c99ed7c1ec
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/rc.xinetd-diversion.patch
@@ -0,0 +1,10 @@
+--- nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.xinetd.orig 2004-07-27 23:37:55.000000000 -0400
++++ nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.xinetd 2004-09-01 21:59:34.000000000 -0400
+@@ -1,4 +1,7 @@
+ #!/bin/sh
++
++if ( [ -f /unslung/rc.xinetd ] && . /unslung/rc.xinetd ) ; then return 0 ; fi
++
+ if [ -n "`pidof inetd`" ] ;then
+ killall inetd 2>/dev/null
+ # killall -9 inetd &>/dev/null
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/remount-noatime.patch b/recipes/nslu2-binary-only/unslung-rootfs/remount-noatime.patch
new file mode 100644
index 0000000000..a39dc678b5
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/remount-noatime.patch
@@ -0,0 +1,51 @@
+--- nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.1.orig 2006-02-24 20:48:18.000000000 -0600
++++ nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.1 2006-02-24 21:13:01.000000000 -0600
+@@ -3,6 +3,24 @@
+ #/sbin/ifconfig ixp0 hw ether 00:C0:02:01:01:04
+ /bin/echo "Starting Set CGI_ds.conf:"; /etc/rc.d/rc.bootbin; check_status
+
++if ( [ -f /.ext3flash ] ) ; then
++ dsk="nodisk"
++ /bin/grep -q "^/dev/sda1 / ext3" /proc/mounts
++ if ( [ $? -eq 0 ] ) ; then
++ dsk="sda"
++ else
++ /bin/grep -q "^/dev/sdb1 / ext3" /proc/mounts
++ if ( [ $? -eq 0 ] ) ; then
++ dsk="sdb"
++ fi
++ fi
++ /bin/echo "Remounting /dev/${dsk}1 as ext3flash:"
++ /bin/mount -o remount,rw,noatime /dev/${dsk}1
++ /bin/echo "Remounting /dev/${dsk}2 as ext3flash:"
++ /bin/mount -o remount,rw,sync,noatime /dev/${dsk}2
++ /bin/echo "Removing swap from ext3flash:"
++ /sbin/swapoff /dev/${dsk}3
++fi
+
+ /bin/echo "Restore time and timezone:"; /etc/rc.d/rc.rstimezone; check_status
+ /bin/echo "Restore usrgrpshares:"; /etc/rc.d/rc.reset_usrgrpshare; check_status
+--- nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.quota.orig 2006-02-24 20:48:31.000000000 -0600
++++ nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.quota 2006-02-24 21:12:46.000000000 -0600
+@@ -8,6 +8,21 @@
+ echo "Done."
+ fi
+
++if ( [ -f /.ext3flash ] ) ; then
++ dsk="nodisk"
++ /bin/grep -q "^/dev/sda1 / ext3" /proc/mounts
++ if ( [ $? -eq 0 ] ) ; then
++ dsk="sda"
++ else
++ /bin/grep -q "^/dev/sdb1 / ext3" /proc/mounts
++ if ( [ $? -eq 0 ] ) ; then
++ dsk="sdb"
++ fi
++ fi
++ /bin/echo "Remounting /dev/${dsk}1 as ext3flash:"
++ /bin/mount -o remount,rw,noatime /dev/${dsk}1
++fi
++
+ if [ -x "/usr/bin/quotaon" ]
+ then
+ echo "Turning on quota."
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/resling b/recipes/nslu2-binary-only/unslung-rootfs/resling
new file mode 100755
index 0000000000..07dc432ea7
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/resling
@@ -0,0 +1,60 @@
+#!/bin/sh
+#
+# Copyright (C) 2004 by Oleg I. Vdovikin <oleg@cs.msu.su>
+# Modified for Unslung by Rod Whitby
+#
+# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+
+if [ -f /share/flash/data/resling.tar.gz ] ; then
+ RESLING=/share/flash/data/resling.tar.gz
+elif [ -f /share/hdd/data/resling.tar.gz ] ; then
+ RESLING=/share/hdd/data/resling.tar.gz
+elif [ -f /share/flash/conf/resling.tar.gz ] ; then
+ RESLING=/share/flash/conf/resling.tar.gz
+elif [ -f /share/hdd/conf/resling.tar.gz ] ; then
+ RESLING=/share/hdd/conf/resling.tar.gz
+else
+ RESLING=/share/flash/data/resling.tar.gz
+fi
+
+case "$1" in
+ start)
+ if [ -f ${RESLING} ]; then
+ tar -C / -zxf ${RESLING}
+ fi
+ ;;
+ clear)
+ rm -f ${RESLING}
+ ;;
+ load)
+ tar -C / -zxvf ${RESLING}
+ ;;
+ list)
+ tar -C / -ztf ${RESLING}
+ ;;
+ save)
+ [ -f /unslung/.files ] && FILES=$(cat /unslung/.files)
+ rm -f /tmp/resling.tar.gz
+ tar -C / -zcvf /tmp/resling.tar.gz /unslung $FILES &&
+ rm -f ${RESLING} &&
+ mv /tmp/resling.tar.gz ${RESLING} &&
+ ls -l ${RESLING} &&
+ echo "Saved."
+ ;;
+ *)
+ echo "Usage: $0 start|clear|load|list|save"
+ ;;
+esac
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/root-passwd.patch b/recipes/nslu2-binary-only/unslung-rootfs/root-passwd.patch
new file mode 100644
index 0000000000..60dae459ba
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/root-passwd.patch
@@ -0,0 +1,16 @@
+--- nslu2-linksys-ramdisk-2.3r25/etc/passwd.orig 2004-07-27 23:37:55.000000000 -0400
++++ nslu2-linksys-ramdisk-2.3r25/etc/passwd 2004-08-30 09:02:51.000000000 -0400
+@@ -1,4 +1,4 @@
+-root:WeeOvKUvbQ6nI:0:0:root:/root:/bin/sh
++root:t1PLUeOinN/eI:0:0:root:/root:/bin/sh
+ bin:x:1:1:bin:/bin:
+ lp:x:4:7:lp:/share/spool:
+ mail:x:8:12:mail:/var/spool/mail:
+--- nslu2-linksys-ramdisk-2.3r25/usr/local/passwd.orig 2004-07-27 23:37:56.000000000 -0400
++++ nslu2-linksys-ramdisk-2.3r25/usr/local/passwd 2004-08-30 09:02:51.000000000 -0400
+@@ -1,4 +1,4 @@
+-root:WeeOvKUvbQ6nI:0:0:root:/root:/bin/sh
++root:t1PLUeOinN/eI:0:0:root:/root:/bin/sh
+ bin:x:1:1:bin:/bin:
+ lp:x:4:7:lp:/share/spool:
+ mail:x:8:12:mail:/var/spool/mail:
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/security-fixes.patch b/recipes/nslu2-binary-only/unslung-rootfs/security-fixes.patch
new file mode 100644
index 0000000000..8517e7d06b
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/security-fixes.patch
@@ -0,0 +1,11 @@
+--- nslu2-linksys-ramdisk-2.3r29/etc/rc.d/rc.1.orig 2005-06-12 21:43:26.940523728 +0930
++++ nslu2-linksys-ramdisk-2.3r29/etc/rc.d/rc.1 2005-06-12 21:43:36.910008136 +0930
+@@ -19,7 +19,7 @@
+ #/bin/echo "Generating telnet password:"; /usr/sbin/TelnetPassword; check_status
+ /bin/echo "Starting WEB Server:"; . /etc/rc.d/rc.thttpd;check_status
+ /bin/echo "Starting samba:"; . /etc/rc.d/rc.samba
+-/bin/echo "Starting download:"; /usr/sbin/download
++#/bin/echo "Starting download:"; /usr/sbin/download
+ /bin/echo "Starting INET Server:"; . /etc/rc.d/rc.xinetd; check_status
+ if ( [ ! -f /.sda1root ] && [ ! -f /.sda2root ] && [ ! -f /.sdb1root ] && [ ! -f /.sdb2root ] ) ; then
+ /bin/echo "Creating ramfs for /tmp:"; mount -t ramfs none /tmp -o maxsize=512
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/slingover b/recipes/nslu2-binary-only/unslung-rootfs/slingover
new file mode 100755
index 0000000000..51f03316e5
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/slingover
@@ -0,0 +1,83 @@
+#!/bin/sh
+
+usage="Usage: $0 disk1|disk2"
+
+if [ $# -gt 1 ] ; then
+ echo $usage
+ exit 1
+fi
+
+if [ $# -lt 1 ] ; then
+ echo $usage
+ exit 1
+fi
+
+if [ "$1" = "disk1" ] ; then
+ source=/share/hdd/conf
+ target=/share/hdd/data
+elif [ "$1" = "disk2" ] ; then
+ source=/share/flash/conf
+ target=/share/flash/data
+else
+ echo $usage
+ exit 1
+fi
+
+# Check it's a real mount point
+
+if grep $source /proc/mounts >/dev/null 2>&1 ; then
+ echo "Source disk is $source"
+else
+ echo "Error: $source is not a mounted disk"
+ exit 1
+fi
+
+if grep $target /proc/mounts >/dev/null 2>&1 ; then
+ echo "Target disk is $target"
+else
+ echo "Error: $target is not a mounted disk"
+ exit 1
+fi
+
+if [ -d $source/opt ] ; then
+ if [ -d $target/opt.old -a -h $target/opt ] ; then
+ echo "Reverting old /opt symlink on $target."
+ rm -f $target/opt
+ mv $target/opt.old $target/opt
+ fi
+ echo "Copying /opt directory from $source to $target."
+ ( cd $source ; tar cf - opt ) | ( cd $target ; tar xf - )
+ rm -rf $source/opt.old
+ mv $source/opt $source/opt.old
+fi
+
+if [ -d $source/usr ] ; then
+ if [ -d $target/usr/lib/ipkg.old -a -h $target/usr/lib/ipkg ] ; then
+ echo "Reverting old /usr/lib/ipkg symlink on $target."
+ rm -f $target/usr/lib/ipkg
+ mv $target/usr/lib/ipkg.old $target/usr/lib/ipkg
+ fi
+ echo "Copying /usr directory from $source to $target."
+ ( cd $source ; tar cf - usr ) | ( cd $target ; tar xf - )
+ rm -rf $source/usr.old
+ mv $source/usr $source/usr.old
+fi
+
+if [ -d $source/unslung ] ; then
+ echo "Copying /unslung directory from $source to $target."
+ ( cd $source ; tar cf - unslung ) | ( cd $target ; tar xf - )
+ rm -rf $source/unslung.old
+ mv $source/unslung $source/unslung.old
+fi
+
+if [ -f $target/opt/bin/perl ] ; then
+ echo "Replicating /usr/bin/perl symlink."
+ ln -s /opt/bin/perl $target/usr/bin/perl
+fi
+
+if [ -f $target/opt/bin/bash ] ; then
+ echo "Replicating /bin/bash symlink."
+ ln -s /opt/bin/bash $target/bin/bash
+fi
+
+exit 0
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/telnet-passwd.patch b/recipes/nslu2-binary-only/unslung-rootfs/telnet-passwd.patch
new file mode 100644
index 0000000000..9ccfcc12e9
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/telnet-passwd.patch
@@ -0,0 +1,22 @@
+--- nslu2-linksys-ramdisk-2.3r63/etc/passwd~ 2006-04-18 21:54:47.000000000 -0500
++++ nslu2-linksys-ramdisk-2.3r63/etc/passwd 2006-04-18 21:56:53.000000000 -0500
+@@ -4,7 +4,7 @@
+ mail:x:8:12:mail:/var/spool/mail:
+ ftp:x:14:50:FTP User:/:
+ nobody:x:99:99:Nobody:/:
+-ourtelnetrescueuser:sPuRQwXaya5YE:100:100::/home/user:/bin/sh
++ourtelnetrescueuser:x:100:100::/home/user:/dev/null
+ guest:xqnMpE/plEnFs:501:501::/home/user/guest:/dev/null
+ admin:cgwvsHpJSf6XU:502:501::/home/user/admin:/dev/null
+
+--- nslu2-linksys-ramdisk-2.3r63/usr/local/passwd~ 2006-04-18 21:54:47.000000000 -0500
++++ nslu2-linksys-ramdisk-2.3r63/usr/local/passwd 2006-04-18 21:57:48.000000000 -0500
+@@ -4,7 +4,7 @@
+ mail:x:8:12:mail:/var/spool/mail:
+ ftp:x:14:50:FTP User:/:
+ nobody:x:99:99:Nobody:/:
+-ourtelnetrescueuser:sPuRQwXaya5YE:100:100::/home/user:/bin/sh
++ourtelnetrescueuser:x:100:100::/home/user:/dev/null
+ guest:xqnMpE/plEnFs:501:501::/home/user/guest:/dev/null
+ admin:cgwvsHpJSf6XU:502:501::/home/user/admin:/dev/null
+
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/telnet.htm b/recipes/nslu2-binary-only/unslung-rootfs/telnet.htm
new file mode 100644
index 0000000000..c1d339777a
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/telnet.htm
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+
+ <HEAD>
+ <META HTTP-EQUIV="Expires" CONTENT="Mon, 06 Jan 1990 00:00:01 GMT">
+ <TITLE>Enable/Disable NSLU2 telnet Service</TITLE>
+ <LINK REL="stylesheet" TYPE="text/css" HREF="../ig_n.css">
+ <SCRIPT language="JavaScript" type="text/javascript" src="../stdlib.js"></SCRIPT>
+ </HEAD>
+
+ <IMG SRC="../linksys.gif">
+ <H2><P ALIGN=CENTER>Enable/Disable NSLU2 telnet Service</P></H2>
+
+ <BODY onLoad="showMsg();">
+ <CENTER>
+ <HR>
+ <P>Current telnet service status: <FONT color="ff1111">@status#</FONT></P>
+ <FORM ACTION="telnet.cgi" METHOD="post">
+ <INPUT type="submit" name="action" value="@action#">
+ <INPUT type="Hidden" name="message" value="@message#">
+ </FORM>
+ </CENTER>
+ <HR>
+ <P>NOTICE: The telnet service is inherently not secure. Among other security concerns, the login id and passwords you enter will be sent in plaintext across the network. In order to provide a slightly higher degree of security, the service will not be automatically restarted upon reboot. However, if you do not intend to reboot soon, it is recommended that you use this page to disable the service as soon as it is no longer needed.</P>
+ <P>A better solution than telnet for network terminal access to the NSLU2 is to use an SSH package, such as "openssh". This package is secure, will remove the need to use a web browser to enable access, and is less prone to inadvertent disabling than telnet. Openssh can be installed using the standard "ipkg" mechanism: "ipkg install openssh". No additional configuration is required; the installer will perform all the necessary configuration to setup openssh as a telnet replacement. <B>You are strongly encouraged to install openssh as soon as possible.</B></P>
+ <HR>
+ <CENTER>
+ <P><A HREF="/index.cgi">Back</A></P>
+ </CENTER>
+ </BODY>
+
+</HTML>
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/tmp-handling.patch b/recipes/nslu2-binary-only/unslung-rootfs/tmp-handling.patch
new file mode 100644
index 0000000000..85e1ecbf80
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/tmp-handling.patch
@@ -0,0 +1,13 @@
+--- nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.1.orig 2005-01-16 09:37:41.000000000 +1030
++++ nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.1 2005-01-16 09:42:09.000000000 +1030
+@@ -33,6 +33,10 @@
+ /bin/echo "Starting download:"; /usr/sbin/download
+ /bin/echo "Starting INET Server:"; . /etc/rc.d/rc.xinetd; check_status
++if ( [ ! -f /.sda1root ] && [ ! -f /.sda2root ] && [ ! -f /.sdb1root ] && [ ! -f /.sdb2root ] ) ; then
+ /bin/echo "Creating ramfs for /tmp:"; mount -t ramfs none /tmp -o maxsize=512
++fi
++/bin/rm -rf /tmp/* /mnt/backup/*
++/bin/chmod 1777 /tmp
+ /bin/echo "Starting QuickSet Daemon :"; . /etc/rc.d/rc.quickset
+ /bin/echo "Starting Crond :"; . /etc/rc.d/rc.crond
+ /bin/echo "Starting Rest Task :"; . /etc/rc.d/rc.local
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/unsling b/recipes/nslu2-binary-only/unslung-rootfs/unsling
new file mode 100755
index 0000000000..539a1d2b58
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/unsling
@@ -0,0 +1,264 @@
+#!/bin/sh
+
+usage="Usage: $0 [-nopw] disk1|disk2"
+
+nopw=0
+if [ $# -gt 1 ] ; then
+ if [ "$1" = "-nopw" ] ; then
+ nopw=1
+ shift
+ fi
+fi
+
+# Set target disk
+
+if [ $# -eq 1 ] ; then
+ if [ "$1" = "disk1" ] ; then
+ mtch="/dev/sdb1 /share/hdd/data ext3 rw 0 0"
+ targ=/share/hdd/data
+ targconf=/share/hdd/conf
+ flag=.sdb1root
+ htmlinfo="disk1, /dev/sdb1"
+ fixconf=0
+ elif [ "$1" = "disk2" ] ; then
+ mtch="/dev/sda1 /share/flash/data ext3 rw 0 0"
+ targ=/share/flash/data
+ targconf=/share/flash/conf
+ flag=.sda1root
+ htmlinfo="disk2, /dev/sda1"
+ fixconf=1
+ else
+ echo $usage
+ exit 1
+ fi
+else
+ echo $usage
+ exit 1
+fi
+
+# MJW - The new "tar" method of unslinging does not care if the device
+# has already been unslung. The following test has been removed.
+#
+# Check that we can unsling at all! An unsling operation creates a new
+# rootfs, but it also marks the flash rootfs (with a flag file such as
+# ".sda1root") so that subsequent boots do not create the "var.state"
+# and "dev.state" mounts. Without those mounts, though, an attempt to
+# unsling will write a new rootfs on the target with an empty /dev
+# directory, which doesnt' work really well. So this check is all about
+# making sure that we are in a state in which we are capable of
+# performing the unsling operation.
+
+#echo "Checking if able to unsling..."
+#echo
+#m1="/dev/root /dev.state jffs2 rw 0 0"
+#m2="/dev/root /var.state jffs2 rw 0 0"
+#if ! grep "$m1" /proc/mounts >/dev/null 2>&1 || ! grep "$m2" /proc/mounts >/dev/null 2>&1 ; then
+# echo "Error: This system is unable to properly unsling because certain"
+# echo "required mounts (dev.state and/or var.state) are not available."
+# echo "This is most probably because you have already unslung this system."
+# echo
+#
+# if [ -f /.sda1root ] ; then
+# rm -f /.sda1root
+# elif [ -f /.sdb1root ] ; then
+# rm -f /.sdb1root
+# elif [ -f /.sda2root ] ; then
+# rm -f /.sda2root
+# elif [ -f /.sdb2root ] ; then
+# rm -f /.sdb2root
+# else
+# echo "However, in this case, the flags that indicate an already-unslung"
+# echo "system seem to be missing. Try restarting your NSLU2 to correct,"
+# echo "but if the problem persists, try re-flashing your NSLU2."
+# exit 1
+# fi
+# echo "The flags that indicate an already-unslung system have now been"
+# echo "removed and the required mounts should now become present after"
+# echo "reboot of the NSLU2."
+# echo
+# echo "1) Please unplug all drives from the NSLU2,"
+# echo "2) reboot,"
+# echo "3) and retry the unslinging process."
+# exit 1
+#fi
+
+# Check it's a real mount point
+
+echo "Waiting for $targ ..."
+CNT=120
+while [ $CNT -gt 0 ]
+do
+ if grep "$mtch" /proc/mounts >/dev/null 2>&1 ; then
+ echo
+ echo "Target disk is $targ"
+ CNT=-1
+ else
+ echo -ne "\r$CNT "
+ sleep 1
+ CNT=`expr $CNT - 1`
+ fi
+done
+if [ $CNT -eq 0 ] ; then
+ echo
+ echo "Error: $targ ($htmlinfo) is not a mounted disk"
+ exit 1
+fi
+
+# Do a quick sanity check to make sure we're unslinging to a disk that's been
+# formatted by the Linksys code.
+
+echo "Checking that $targ has been properly formatted..."
+if ! [ -d $targ/public ] || ! [ -f $targconf/.dongle ] || ! [ -f $targconf/passwd ] ; then
+ echo
+ echo "Error: $targ does not appear to have been formatted by the"
+ echo "Linksys formatting utility. Please go to the web interface,"
+ echo "and format the drive before unslinging."
+ exit 1
+fi
+
+echo "Checking that $targ is clean..."
+if [ -f $targ/.unslung ] ; then
+ echo
+ echo "Error: $targ appears to have already been unslung to:"
+ cat $targ/.unslung
+ echo "Please go to the web interface, and format the drive before"
+ echo "unslinging."
+ echo
+ echo "(Or, if you wish to unsling without removing the current root"
+ echo "filesystem, simply remove the file $targ/.unslung and retry"
+ echo "the unsling -- but beware, you enter uncharted territory!)"
+ exit 1
+fi
+
+# Change the root password
+if [ "$nopw" -eq 0 ] ; then
+ echo
+ echo "Please enter the new root password. This will be the new root"
+ echo "password used when the NSLU2 boots up with or without disks"
+ echo
+ passwd
+ if [ $? -ne 0 ] ; then
+ echo "Error setting password."
+ exit 1
+ fi
+# Quick sanity check, something may have gone wrong while we were
+# waiting at the passwd prompt...
+ if ! [ -d $targ/public ] || ! [ -f $targconf/.dongle ] || ! [ -f $targconf/passwd ] ; then
+ echo
+ echo "Error: $targ appears to have vanished into thin air."
+ echo "This would indicate some type of problem with the USB cable,"
+ echo "the device, or the formatting of the device."
+ exit 1
+ fi
+ cp /etc/passwd /usr/local/passwd
+ grep "^root:" /etc/passwd >$targconf/passwd.new
+ grep -v "^root:" $targconf/passwd >>$targconf/passwd.new
+ mv $targconf/passwd $targconf/passwd.save
+ mv $targconf/passwd.new $targconf/passwd
+ chmod 644 $targconf/passwd
+fi
+
+# Start at the root directory
+
+cd /
+
+# Save the existing ipkg database.
+
+rm -rf $targ/usr/lib/ipkg.old
+if [ -f $targ/usr/lib/ipkg/status ] ; then
+ mv $targ/usr/lib/ipkg $targ/usr/lib/ipkg.old
+fi
+
+# Copy the complete rootfs to the target.
+
+echo
+echo "Copying the complete rootfs from / to $targ ... "
+echo " (this will take just a couple of minutes)"
+# Quick sanity check to avoid filling the flash...
+if ! [ -d $targ/public ] || ! [ -f $targconf/.dongle ] || ! [ -f $targconf/passwd ] ; then
+ echo
+ echo "Error: $targ appears to have vanished into thin air."
+ echo "This would indicate some type of problem with the USB cable,"
+ echo "the device, or the formatting of the device."
+ exit 1
+fi
+
+echo "./var/tmp" > /tmp/xfile
+echo "./dev.state" >> /tmp/xfile
+echo "./var.state" >> /tmp/xfile
+echo "./lost+found" >>/tmp/xfile
+mkdir -p /tmp/tmprootfs
+/bin/mount /dev/mtdblock4 /tmp/tmprootfs
+/bin/tar -c -C /tmp/tmprootfs -X /tmp/xfile -f - . | (cd $targ; /bin/tar -x -f -)
+/bin/umount /tmp/tmprootfs
+echo "Copy complete ..."
+echo
+
+# Copy over the existing ipkg database.
+
+if [ -f $targ/usr/lib/ipkg.old/status ] ; then
+ echo "Preserving existing ipkg database on target disk."
+ ( cd $targ/usr/lib/ipkg.old ; tar cf - . ) | ( cd $targ/usr/lib/ipkg ; tar xf - )
+fi
+
+echo "Linking /usr/bin/ipkg executable on target disk."
+rm -f $targ/usr/bin/ipkg ; ln -s /usr/bin/ipkg-cl $targ/usr/bin/ipkg
+
+echo "Linking /etc/motd to the unslung motd on target disk."
+rm -f $targ/etc/motd ; ln -s /etc/motd-un $targ/etc/motd
+
+echo "Updating /home/httpd/html/home.htm with target disk info."
+sedcommand="s#Running.from.Internal.Flash#Unslung to $htmlinfo#"
+rm -f $targ/home/httpd/html/home.htm_bak
+cp $targ/home/httpd/html/home.htm $targ/home/httpd/html/home.htm_bak
+sed "$sedcommand" $targ/home/httpd/html/home.htm_bak > $targ/home/httpd/html/home.htm
+chmod 644 $targ/home/httpd/html/home.htm
+
+# Create a few empty files that are expected to be present
+touch $targ/var/log/wtmp
+chmod 644 $targ/var/log/wtmp
+touch $targ/var/run/utmp
+chmod 644 $targ/var/run/utmp
+mkdir -p $targ/var/tmp
+chmod 777 $targ/var/tmp
+
+# The "user password" Linksys utility is hard-coded to /share/hdd; also the
+# QuickSet utility seems to have some difficulty as well. Ugly fix is to
+# add symlinks if we are unslinging to /share/flash. It might seem more
+# reasonable to point to /etc/passwd, for example, but this approach seems to
+# be more likely to avoid looping symlinks.
+
+if [ "$fixconf" -eq 1 ] ; then
+ ln -s ../../flash/conf/.htpasswd $targ/share/hdd/conf/.htpasswd
+ ln -s ../../flash/conf/backup_sh.conf $targ/share/hdd/conf/backup_sh.conf
+ ln -s ../../flash/conf/config $targ/share/hdd/conf/config
+ ln -s ../../flash/conf/group $targ/share/hdd/conf/group
+ ln -s ../../flash/conf/passwd $targ/share/hdd/conf/passwd
+ ln -s ../../flash/conf/server.log $targ/share/hdd/conf/server.log
+ ln -s ../../flash/conf/share $targ/share/hdd/conf/share
+ ln -s ../../flash/conf/share.info $targ/share/hdd/conf/share.info
+ ln -s ../../flash/conf/smb.conf $targ/share/hdd/conf/smb.conf
+ ln -s ../../flash/conf/smbpasswd $targ/share/hdd/conf/smbpasswd
+ ln -s ../../flash/conf/tmp $targ/share/hdd/conf/tmp
+ ln -s ../../flash/conf/upgrade $targ/share/hdd/conf/upgrade
+ ln -s ../../flash/conf/usrgrp.info $targ/share/hdd/conf/usrgrp.info
+fi
+
+# Create the boot flag file.
+
+rm -f /.sd??root $targ/.sd??root
+
+echo "Creating /$flag to direct switchbox to boot from $targ."
+echo > /$flag
+echo > $targ/$flag
+
+# Done
+
+echo
+echo "Unsling complete."
+echo
+echo "Leave the device $htmlinfo, plugged in and reboot (using"
+echo "either the Web GUI, or the command \"DO_Reboot\") in order to boot"
+echo "this system up into unslung mode."
+
+exit 0
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/unslung.gif b/recipes/nslu2-binary-only/unslung-rootfs/unslung.gif
new file mode 100644
index 0000000000..998beeda50
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/unslung.gif
Binary files differ
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/upgrade.htm b/recipes/nslu2-binary-only/unslung-rootfs/upgrade.htm
new file mode 100644
index 0000000000..39c65b2e7c
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/upgrade.htm
@@ -0,0 +1,130 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><title>Upgrade Firmware</title>
+<LINK REL="stylesheet" TYPE="text/css" HREF="../ig_n.css">
+<meta HTTP-EQUIV="Expires" CONTENT="Mon, 06 Jan 1990 00:00:01 GMT">
+<script language="JavaScript" type="text/javascript" src="../stdlib.js"></script>
+<script language="JavaScript" type="text/javascript" src="../message.js"></script>
+</head>
+
+<body bgcolor="white" onLoad="showMsg()" marginheight="0" marginwidth="0" leftmargin="0" topmargin="0">
+<FORM name="upgrade" method="post" action="upgrade.cgi" ENCTYPE="multipart/form-data">
+<DIV align="center">
+<table border="0" cellpadding="0" cellspacing="0" width="750" align="center">
+<tr>
+ <td width="165"><img border="0" src="../linksys.gif" width="165" height="57"></td>
+ <td width="585" colspan="2" bgcolor="#6666CC" valign="bottom" align="right"><span class="fwversion">Firmware
+ Version: &nbsp;@ds_sw_version#</span> &nbsp;&nbsp;</td>
+</tr>
+
+<tr>
+ <td colspan="3" height="11" bgcolor="black"><img src="../tborder.gif" width="750" height="11" alt="" border="0"></td>
+</tr>
+
+<TR>
+ <TD width="165" bgcolor="black" align="center"><h3>Upgrade</h3></td>
+ <td width="585" colspan="2" bgcolor="#6666cc" valign="top">
+ <table border="0" cellspacing="0" cellpadding="0" width="100%">
+ <tr>
+ <td align="right" class="pname" height="25" colspan="5">Network Storage Link for USB 2.0 Disks &nbsp; &nbsp; </td>
+ <td align="center" width="100" class="mname">NSLU2</td>
+ </tr>
+ <tr bgcolor="black">
+ <td colspan="6" height="3"><img src="TRANSPAR.GIF" width="1" height="3" alt="" border="0"></td>
+ </tr>
+ <tr>
+ <td align="center" height="1" background="../UI_06.gif"><img src="TRANSPAR.GIF" width="1" height="8" alt="" border="0"></td>
+ <td align="center" height="1" background="../UI_06.gif"><img src="TRANSPAR.GIF" width="1" height="1" alt="" border="0"></td>
+ <td align="center" height="1"><img src="TRANSPAR.GIF" width="1" height="1" alt="" border="0"></td>
+ <td align="center" height="1" background="../UI_06.gif"><img src="TRANSPAR.GIF" width="1" height="1" alt="" border="0"></td>
+ <td align="center" height="1" background="../UI_06.gif"><img src="TRANSPAR.GIF" width="1" height="1" alt="" border="0"></td>
+ <td align="center" height="1" background="../UI_06.gif"><img src="TRANSPAR.GIF" width="1" height="1" alt="" border="0"></td>
+ </tr>
+
+ <tr>
+ <td align="center" height="25" bgcolor="black" width="100"><a href="/index.cgi" class="mainmenu">Home</a></td>
+ <td align="center" height="25" bgcolor="black" width="100"><a href="/user_pass.cgi" class="mainmenu">User<br> password</a></td>
+ <td align="center" height="25" width="100"><span class="mainmenu">Administration</span></td>
+ <td align="center" height="25" bgcolor="black" width="100"><a href="/userman_fs.htm" class="mainmenu">User Guide</a></td>
+ <td align="center" height="25" bgcolor="black" width="120"><a href="http://www.linksys.com" class="mainmenu" target="new_win">Linksys Web</a></td>
+ <td align="center" height="25" bgcolor="black">&nbsp;</td>
+ </tr>
+ <tr>
+ <td height="25" width="130">&nbsp; </td>
+ <td height="25" colspan="5">
+ <a href="/Management/file_sharing.cgi?next_file=groups.htm" class="submenu">Groups</a> <span class="divider"> | </span>
+ <a href="/Management/file_sharing.cgi?next_file=shares.htm" class="submenu">Shares</a> <span class="divider"> | </span>
+ <a href="/Management/sh_backup.cgi?next_file=backup.htm" class="submenu">Backup</a> <span class="divider"> | </span>
+ <a href="/Management/disk_fs.htm" class="submenu">Disk</a> <span class="divider"> | </span>
+ <span class="tabtitle">Upgrade</span> <span class="divider"> | </span>
+ <a href="/Management/setup.cgi?next_file=lan.htm" class="submenu">Setup</a></td>
+ </tr>
+ </table>
+
+ </td>
+</tr>
+
+<tr>
+ <td colspan="3" bgcolor="#e7e7e7" height="6"><img src="TRANSPAR.GIF" width="1" height="6" alt="" border="0"></td>
+</tr>
+<tr>
+ <th width="165" height="24">Current Firmware &nbsp; </th>
+ <td width="409"><img src="TRANSPAR.GIF" width="409" height="6" alt="" border="0"></td>
+ <td width="176" bgcolor="#6666cc"><img border="0" src="../UI_05.gif" height="24" width="15"></td>
+</tr>
+<tr>
+ <td bgcolor="#e7e7e7" align="right"><img border="0" src="../UI_04.gif" width="8" hspace="0" vspace="0" height="80"></td>
+ <td width="409"><div class="std"><table border=0 cellspacing=0 cellpadding=4>
+ <tr>
+ <td nowrap>Current Firmware Version:</td>
+ <td nowrap>@ds_sw_version# </td>
+ </tr>
+ </table></div> </td>
+ <td width="176" bgcolor="#6666cc"><img border="0" src="../UI_05.gif" height="80" width="15"></td>
+</tr>
+
+<tr>
+ <th width="165" height="24">Upgrade &nbsp; </th>
+ <td width="409"><img src="TRANSPAR.GIF" width="409" height="6" alt="" border="0"></td>
+ <td width="176" bgcolor="#6666cc"><img border="0" src="../UI_05.gif" height="24" width="15"></td>
+</tr>
+<tr>
+ <td bgcolor="#e7e7e7" align="right"><img border="0" src="../UI_04.gif" width="8" hspace="0" vspace="0" height="120"></td>
+ <td width="409"><div class="std"><table border=0 cellspacing=0 cellpadding=4>
+ <tr>
+ </tr>
+ <tr>
+<td colspan="2" align="left" class="smsg">
+NOTE: You cannot use this upgrade page to install new firmware on Unslung.
+Instead, use the "reset button" method to enter upgrade mode, and use either
+the "sercomm" or the "upslug2" utility to perform the reflash operation. See
+<a href="http://www.nslu2-linux.org/wiki/HowTo/UseTheResetButtonToEnterUpgradeMode">
+"How To Use The Reset Button To Enter Upgrade Mode"</a>, and
+<a href="http://www.nslu2-linux.org/wiki/HowTo/RecoverFromABadFlash">
+"How To Recover From A Bad Flash"</a> if you need more information.
+</td>
+ </tr>
+ </table></div> </td>
+ <td width="176" bgcolor="#6666cc"><img border="0" src="../UI_05.gif" height="120" width="15"></td>
+</tr>
+
+<tr>
+ <td bgcolor="#e7e7e7" height="30" align="right"><img border="0" src="../UI_04.gif" width="8" hspace="0" vspace="0" height="30"></td>
+ <td height="30">&nbsp; </td>
+ <td rowspan="2" valign="bottom" bgcolor="#6666cc" height="64"><img src="../cisco.gif" hspace="0" vspace="0"></td>
+</tr>
+
+<tr>
+ <td bgcolor="black" height="34">&nbsp; </td>
+ <td bgcolor="#6666cc" align="right" height="33" valign="middle">
+ &nbsp; &nbsp; </td>
+</tr>
+
+</table>
+</div>
+<input type="Hidden" name="message" value="@message#">
+<input type="Hidden" name="this_file" value="upgrade.htm">
+<input type="Hidden" name="todo" value="@todo#">
+<input type="Hidden" name="finish" value="@finish#">
+</form>
+</body>
+</html>
diff --git a/recipes/nslu2-binary-only/unslung-rootfs/wait-for-quotacheck.patch b/recipes/nslu2-binary-only/unslung-rootfs/wait-for-quotacheck.patch
new file mode 100644
index 0000000000..71c8e9caec
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs/wait-for-quotacheck.patch
@@ -0,0 +1,10 @@
+--- nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.local~ 2005-04-03 10:14:51.000000000 +0930
++++ nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.local 2005-04-03 10:14:59.000000000 +0930
+@@ -14,6 +14,6 @@
+ /bin/chmod 775 /share 2>/dev/null
+ /bin/chown admin.everyone /share/hdd/ 2>/dev/null
+ /bin/chown admin.everyone /share 2>/dev/null
+-/etc/rc.d/rc.quota &>/dev/null
++/etc/rc.d/rc.quota 2>/dev/null
+ /usr/sbin/init_media 2>/dev/null
+ /bin/echo "$HOSTNAME: boot complete!"; check_status
diff --git a/recipes/nslu2-binary-only/unslung-rootfs_2.3r63.bb b/recipes/nslu2-binary-only/unslung-rootfs_2.3r63.bb
new file mode 100644
index 0000000000..0eebf7d04f
--- /dev/null
+++ b/recipes/nslu2-binary-only/unslung-rootfs_2.3r63.bb
@@ -0,0 +1,181 @@
+SECTION = "base"
+COMPATIBLE_MACHINE = "nslu2"
+
+PR = "r22"
+
+DEPENDS = "nslu2-linksys-libs nslu2-linksys-sambacodepages"
+
+SRC_URI = "http://nslu.sf.net/downloads/nslu2-linksys-ramdisk-2.3r63-2.tar.bz2 \
+ file://README \
+ file://NOTES \
+ file://ipkg-fl \
+ file://motd-fl \
+ file://motd-un \
+ file://unsling \
+# file://resling \
+# file://slingover \
+ file://linuxrc \
+ file://unslung.gif \
+ file://nsswitch.conf \
+ file://rc.bootdisk \
+ file://rc.optware-start \
+ file://rc.optware-stop \
+ file://rc-diversion.patch;patch=1 \
+ file://rc.1-diversion.patch;patch=1 \
+ file://rc.1-timestamp.patch;patch=1 \
+ file://rc.crond-diversion.patch;patch=1 \
+ file://rc.halt-diversion.patch;patch=1 \
+ file://rc.lan-shell.patch;patch=1 \
+ file://rc.local-diversion.patch;patch=1 \
+ file://rc.modules-diversion.patch;patch=1 \
+ file://rc.network-diversion.patch;patch=1 \
+ file://rc.quickset-diversion.patch;patch=1 \
+ file://rc.quota-diversion.patch;patch=1 \
+ file://rc.reboot-diversion.patch;patch=1 \
+ file://rc.reset_usrgrpshare-diversion.patch;patch=1 \
+ file://rc.rstimezone-diversion.patch;patch=1 \
+ file://rc.samba-diversion.patch;patch=1 \
+ file://rc.samba-syntaxfix.patch;patch=1 \
+ file://rc.sysinit-diversion.patch;patch=1 \
+ file://rc.thttpd-diversion.patch;patch=1 \
+ file://rc.xinetd-diversion.patch;patch=1 \
+ file://root-passwd.patch;patch=1 \
+ file://tmp-handling.patch;patch=1 \
+ file://create-ramdisks.patch;patch=1 \
+ file://remount-noatime.patch;patch=1 \
+ file://initialise-mtab.patch;patch=1 \
+ file://wait-for-quotacheck.patch;patch=1 \
+ file://mount_usbdevfs.patch;patch=1 \
+ file://security-fixes.patch;patch=1 \
+ file://rc.sysinit-clean_var.patch;patch=1 \
+ file://rc.sysinit-cpbug.patch;patch=1 \
+ file://rc.sysinit-win_share.patch;patch=1 \
+ file://rc.modules-nls.patch;patch=1 \
+ file://telnet-passwd.patch;patch=1 \
+ file://upgrade.htm \
+ file://telnet.htm \
+ file://rc.bootbin \
+ file://mkfs.ext3 \
+ "
+
+S = "${WORKDIR}/nslu2-linksys-ramdisk-2.3r63"
+
+do_compile () {
+ echo "V2.3R63-uNSLUng-${DISTRO_VERSION}" > ${S}/.unslung
+
+ install -m 644 ${WORKDIR}/unslung.gif ${S}/home/httpd/html/linksys.gif
+
+ install -m 644 ${WORKDIR}/telnet.htm ${S}/home/httpd/html/Management/telnet.htm
+
+ sed -i -e 's/@version#</@version#-uNSLUng-'${DISTRO_VERSION}'</' ${S}/home/httpd/html/home.htm
+ install -m 644 ${WORKDIR}/upgrade.htm ${S}/home/httpd/html/Management/upgrade.htm
+ sed -i -e s/@ds_sw_version#/@ds_sw_version#-uNSLUng-${DISTRO_VERSION}/ \
+ ${S}/home/httpd/html/Management/upgrade.htm
+
+ install -m 755 ${WORKDIR}/ipkg-fl ${S}/usr/bin/ipkg-fl
+ install -m 644 ${WORKDIR}/motd-fl ${S}/etc/motd-fl
+ sed -i -e s/@v@/V2.3R63-uNSLUng-${DISTRO_VERSION}/ ${S}/etc/motd-fl
+ install -m 644 ${WORKDIR}/motd-un ${S}/etc/motd-un
+ sed -i -e s/@v@/V2.3R63-uNSLUng-${DISTRO_VERSION}/ ${S}/etc/motd-un
+ rm -f ${S}/etc/motd
+ ln -s motd-fl ${S}/etc/motd
+ sed -i -e 's+@public_2#</td>+@public_2# <span class="divider"> | </span><a href="Management/telnet.cgi" class="submenu">\&nbsp; Manage Telnet</a></td>+' \
+ ${S}/home/httpd/html/home.htm
+ sed -i -e 's+<td bgcolor="#6666cc" align="right" height="33" valign="middle">&nbsp; </td>+<td bgcolor="#6666cc" fgcolor="#ffffff" align="right" height="33" valign="middle"><center><span class=mainmenu>uNSLUng status: \&nbsp; Running from Internal Flash</span></center></td>+' \
+ ${S}/home/httpd/html/home.htm
+
+ sed -i -e 's|>&nbsp;<|><a href="Unslung" class="mainmenu" target="_top">Unslung Doco</a><|' \
+ ${S}/home/httpd/html/manhead.htm
+ install -d ${S}/opt/doc
+ install -m 755 ${WORKDIR}/README ${S}/opt/doc/README
+ install -m 755 ${WORKDIR}/NOTES ${S}/opt/doc/NOTES
+ rm -f ${S}/home/httpd/html/Unslung
+ ln -s /opt/doc ${S}/home/httpd/html/Unslung
+
+ install -m 755 ${WORKDIR}/linuxrc ${S}/linuxrc
+
+ # Allow rc.bootbin to be diverted.
+ mv ${S}/etc/rc.d/rc.bootbin ${S}/sbin/rc.bootbin
+ install -m 755 ${WORKDIR}/rc.bootbin ${S}/etc/rc.d/rc.bootbin
+
+ install -d ${S}/initrd
+
+ install -m 755 ${WORKDIR}/unsling ${S}/sbin/unsling
+# install -m 755 ${WORKDIR}/resling ${S}/sbin/resling
+# install -m 755 ${WORKDIR}/slingover ${S}/sbin/slingover
+ install -m 755 ${WORKDIR}/rc.optware-start ${S}/etc/rc.d/rc.optware-start
+ install -m 755 ${WORKDIR}/rc.optware-stop ${S}/etc/rc.d/rc.optware-stop
+ install -m 755 ${WORKDIR}/rc.bootdisk ${S}/etc/rc.d/rc.bootdisk
+
+ install -m 644 ${WORKDIR}/nsswitch.conf ${S}/etc/nsswitch.conf
+
+ # Add the diversion script directory
+ install -d ${S}/unslung
+
+ # Remove the libraries, because they are in nslu2-linksys-libs now
+ rm -rf ${S}/lib
+
+ # Remove some unnecessary web stuff to free space
+ rm -f ${S}/home/httpd/html/Management/upgrade.cgi
+ rm -f ${S}/home/httpd/html/Management/upgrade_ui.htm
+ rm -f ${S}/home/httpd/html/Management/upgrade_ui.cgi
+
+ # Remove some of the Samba codepages to make space
+ # These will have to be separately packaged, like the libraries...
+ # 437 (USA) - keep
+ # 737 (Greek)
+ rm -f ${S}/etc/samba/codepages/codepage.737
+ rm -f ${S}/etc/samba/codepages/unicode_map.737
+ # 850 (Latin1) - keep
+ # 852 (Latin2)
+ rm -f ${S}/etc/samba/codepages/codepage.852
+ rm -f ${S}/etc/samba/codepages/unicode_map.852
+ # 861 (Iceland)
+ rm -f ${S}/etc/samba/codepages/codepage.861
+ rm -f ${S}/etc/samba/codepages/unicode_map.861
+ # 866 (Russian)
+ rm -f ${S}/etc/samba/codepages/codepage.866
+ rm -f ${S}/etc/samba/codepages/unicode_map.866
+ # 932 (Japanese Shift-JIS)
+ rm -f ${S}/etc/samba/codepages/codepage.932
+ rm -f ${S}/etc/samba/codepages/unicode_map.932
+ # 936 (Simplified Chinese)
+ rm -f ${S}/etc/samba/codepages/codepage.936
+ # 949 (Korean)
+ rm -f ${S}/etc/samba/codepages/codepage.949
+ # 950 (Chinese BIG-5)
+ rm -f ${S}/etc/samba/codepages/codepage.950
+ # ISO8859-1 (Latin 1) - keep
+
+ # /bin/killall and /usr/bin/killall are both symlinks to busybox. This
+ # is a problem if killall is ever replaced by slingbox or a native utility.
+ # Fix by making /bin/killall (the wrong place) a symlink to /usr/bin/killall.
+ rm -f ${S}/bin/killall
+ ln -s ../usr/bin/killall ${S}/bin/killall
+
+ # There are two identical binary copies of "date" on the image. Replace
+ # the one in /usr/sbin with a symlink to the one in /bin. This saves a
+ # bit of flash space, and makes it possible to replace the date binary with
+ # a link to busybox or slingbox at some point.
+ rm -r ${S}/usr/sbin/date
+ ln -s ../../bin/date ${S}/usr/sbin/date
+
+ # Replace the Linksys-provided /bin/busybox with a link to slingbox.
+ rm -f ${S}/bin/busybox
+ ln -s slingbox ${S}/bin/busybox
+
+ # Add in the kludge to fix the strange Linksys GUI format problem.
+ rm -f ${S}/usr/bin/mkfs.ext3
+ install -m 755 ${WORKDIR}/mkfs.ext3 ${S}/usr/bin/mkfs.ext3
+
+ # No reason not to have a home directory for root...
+ mkdir -p ${S}/root
+ chmod 755 ${S}/root
+}
+
+do_install () {
+ ( cd ${S} ; tar -c -v -f - --exclude '.pc' . ) | ( cd ${D} ; tar xvf - )
+}
+
+FILES_${PN} = "/"
+RDEPENDS_${PN} = "nslu2-linksys-libs"