summaryrefslogtreecommitdiff
path: root/packages/nslu2-binary-only/unslung-rootfs
diff options
context:
space:
mode:
authorRod Whitby <rod@whitby.id.au>2006-04-11 06:32:39 +0000
committerOpenEmbedded Project <openembedded-devel@lists.openembedded.org>2006-04-11 06:32:39 +0000
commit4cbd322d0f3861f9186f104d126844c5442f9a25 (patch)
tree3b537e6ded2db48e3703581d5f52124da355d357 /packages/nslu2-binary-only/unslung-rootfs
parent3b3f3f4da734d0f86331f1469c6c391dbda1368c (diff)
unslung-kernel, unslung-image: Now that 6.8-beta is released, moved mainline to R63 and dropped R29 (people can get it from SVN if they want to build old versions)
Diffstat (limited to 'packages/nslu2-binary-only/unslung-rootfs')
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs/NOTES73
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs/README272
-rwxr-xr-xpackages/nslu2-binary-only/unslung-rootfs/ipkg-fl11
-rwxr-xr-xpackages/nslu2-binary-only/unslung-rootfs/linuxrc134
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs/motd-fl11
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs/motd-un4
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs/profile2
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs/rc.modules-diversion.patch4
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs/rc.sysinit-clean_var.patch22
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs/remount-noatime.patch48
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs/security-fixes.patch9
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs/telnet.htm32
-rwxr-xr-xpackages/nslu2-binary-only/unslung-rootfs/unsling192
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs/upgrade.htm16
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs/wait-for-quotacheck.patch3
15 files changed, 547 insertions, 286 deletions
diff --git a/packages/nslu2-binary-only/unslung-rootfs/NOTES b/packages/nslu2-binary-only/unslung-rootfs/NOTES
index 8d6908c74d..ae9d7c607c 100644
--- a/packages/nslu2-binary-only/unslung-rootfs/NOTES
+++ b/packages/nslu2-binary-only/unslung-rootfs/NOTES
@@ -168,8 +168,14 @@ 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.
- - Dropbear package details on NSLU2-Linux wiki at:
+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
@@ -333,7 +339,8 @@ Split from 3.x stream to allow parallel development.
4.2:
-New switchbox implementation with NFS and external USB disk root filesystem support.
+New switchbox implementation with NFS and external USB disk root filesystem
+support.
4.3:
@@ -448,47 +455,35 @@ Added disk auto-wait countdown to /linuxrc (courtesy of glc).
First public release of 5.x firmware.
-6.1:
-
-Upgraded to Linksys firmware V2.3R63.
-
-6.1 to 6.7:
-
-"Unslung" status (i.e. Unslung to disk, or running from internal
-flash) is now displayed on the home page in the Web GUI, as well as
-displayed at login.
-
-Using "ipkg" when running from internal flash now displays a helpful
-message indicating why ipkg won't run.
-
-The unsling script now contains a number of sanity checks, and prints
-(hopefully) helpful error messages if the system will be unlikely to
-unsling correctly.
-
-The unsling script now prompts for a new root password, and sets the
-password for both booting with as well as without drives attached. (A
-new argument "-nopw" can be given to unsling to have it skip prompting
-for and setting the root password.)
-
-The "Enable Telnet" web gui page can now be reached from the home page
-in the Linksys Web GUI.
-
-The new Unslung logo is now featured in the Web GUI.
+6.0:
-The special handling for unslinging to flash devices now works for
-both USB Port 1 and 2.
+First alpha release of 6.x Unslung firmware, based on Linksys V2.3R63 firmware.
-The utmp and wtmp files are now created by unsling, and will be
-"emptied" at each boot. Additionally, the .pid files in /var/run and
-/var/log are cleaned out at boot; this avoids a number of strange and
-difficult-to-reproduce problems.
+6.5:
-The following additional kernel modules are provided: loop.o isofs.o
-keyspan.o netconsole.o
+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.
-Sundry bugfixes.
+6.6:
-6.8:
+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.
-First public release of 6.x firmware.
+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.
diff --git a/packages/nslu2-binary-only/unslung-rootfs/README b/packages/nslu2-binary-only/unslung-rootfs/README
index c750709e5f..27dddeafbf 100644
--- a/packages/nslu2-binary-only/unslung-rootfs/README
+++ b/packages/nslu2-binary-only/unslung-rootfs/README
@@ -1,8 +1,8 @@
Unslung-6.x Family Release README INSTALLATION
You must follow the steps in this README *exactly*. Do not skip any steps, and
-do not skip ahead thinking you know what you are doing and don't need to follow
-instructions step by step.
+do not skip ahead thinking you know what you are doing and that therefore you
+don't need to follow instructions step by step.
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:
@@ -10,8 +10,8 @@ of Unslung firmware, your first port of call should be the NSLU2-Linux wiki at:
http://www.nslu2-linux.org
If you are looking for further Unslung notes - including ipkg usage, diversion
-script details, or ChangeLog information, please consult the associated NOTES
-file.
+script details, or ChangeLog information, please consult the associated Unslung
+NOTES file.
-------------------------------------------------------------------------------
@@ -38,25 +38,81 @@ PRE-INSTALLATION CONSIDERATIONS
http://www.nslu2-linux.org/wiki/HowTo/RecoverFromABadFlash
-2) If you want to install any packages, then you must have an external disk.
- It is possible to make changes to the root filesystem in the internal
- flash storage, but the space is very limited. In fact, just running
- "ipkg update" on an NSLU2 which does not have an external disk attached
- will most likely render the NSLU2 unusable due to filling up the flash (if
- this happens then you will need to follow the recovery instructions in
- the previous step). So unless you are an expert, then use an external
- disk.
+2) If you want to install any packages, then you must have an external USB
+ disk drive or an external USB flash disk. It is possible to make changes
+ to the root filesystem in the internal flash storage, but the space is
+ very limited. In fact, just running the "ipkg update" operation on an
+ NSLU2 which does not have an external storage device of some sort attached
+ will most likely render the NSLU2 unusable due to filling up its internal
+ flash memory (if this happens then you will need to follow the recovery
+ instructions in the previous step.) So unless you are an expert, use
+ an external storage device. The remainder of these instructions assume
+ that you have a suitable external disk or flash disk that you will be
+ using for this purpose.
+
+ A few words on selecting which port to use:
+
+ Completely contrary to previous versions of Unslung, the preferred port
+ for the Unslung external disk as of Unslung 6.x is often port 2. This
+ will free up the far-more-flexible port number 1 for other uses.
+
+ However, this "feature" (part of the Linksys R63 firmware) may cause some
+ small consternation for users upgrading from earlier versions of Unslung.
+ But in general, swapping the drives between the two ports will likely be
+ the least painful solution. The basic challenge faced by upgraders is
+ that *something* must change: if the drive remains in port 1, then it will
+ remain mounted at "/share/hdd/..." but the drive nomenclature will change
+ from "/dev/sda" to "/dev/sdb". On the other hand, if the drive is moved
+ to port 2, then it will remain "/dev/sda" but it will then be mounted at
+ "/share/flash/...". What difference this might make depends on each
+ individual configuration; check the wiki for possible assistance for your
+ particular configuration.
+
+ For new users, the following guidelines can help:
+ - if you have only a single drive that will be formatted by the NSLU2,
+ use port 2.
+ - if you have a single drive that will be formatted by the NSLU2, and
+ all other drives or flash devices will be either FAT or NTFS, use
+ port 2.
+ - if you have two drives, and both will be formatted by the NSLU2, then
+ unsling to the drive in port 1.
+
+ If you unsling to port 2, and later add a drive in port 1 that will
+ be formatted by the NSLU2, it will work as expected -- however, the
+ drive to be added MUST be formatted by the unslung NSLU2 in question,
+ and once formatted, the drive must NOT be removed. (The Linksys code
+ will move it's "conf" datafiles to the drive in port 1 during the
+ format operation, and thus will become dependent upon the presence of
+ both drives for proper operation.)
3) The external disk that you use as the target for package installation must
- be (or have previously been) formatted by the NSLU2. It is possible to
- upgrade from all previous Unslung versions without reformatting your disk.
+ be (or have previously been) formatted by the NSLU2.
+
+ Since this point qualifies as a "frequently asked question", it is
+ worth some clarification here. It is only possible to unsling to
+ a disk that has been formatted by the NSLU2 - you cannot unsling to a
+ FAT or NTFS disk. In fact, it is not sufficient to format the disk
+ using another UNIX system -- in order to be recognized as a "Formatted
+ (ext3)" disk by the NSLU2, and hence be suitable for unslinging, the
+ disk must be specifically partitioned, formatted, and the partitions
+ must contain a specific set of configuration files created by the
+ NSLU2. So the simple rule is that if the NSLU2 web interface "Disk"
+ page does not list the disk as "Formatted (ext3)", you will be unable
+ to unsling to that disk.
+
+ For upgrading users, it is possible to upgrade from all previous Unslung
+ versions without reformatting your disk -- but not necessarily recommended.
+ See the wiki article for recommended upgrade strategies:
+
+ http://www.nslu2-linux.org/wiki/Unslung/UpgradingToUnslung6
+
The unsling script will not touch anything in /unslung or /opt on your
disk, so make sure all your file modifications are in those directories,
as you were warned in the README file in all previous Unslung versions :-)
4) If you want to use a flash disk as the target for package installation,
- ensure that it is at least 256MB, plugged into port 1, and formatted
- via the Linksys web interface.
+ ensure that it is at least 256MB, and formatted as above via the
+ Linksys web interface.
5) Please verify that any disks you are going to connect to the NSLU2 are
recognized and working properly *before* updating your firmware (including
@@ -80,44 +136,55 @@ PRE-INSTALLATION CONSIDERATIONS
FIRMWARE INSTALLATION DETAILS
1) Shutdown the NSLU2, and remove any disks that you may have plugged into the
- NSLU2.
+ NSLU2. Power back up the NSLU2.
- Firmware upgrades must always be performed with *no* hard disks or flash
disks attached. This CANNOT be emphasized enough. Are you sure you
unplugged the disks before powering up? If so, you may continue.
-2-a) If you are installing Unslung 6.x onto an NSLU2 unit with Linksys standard
- firmware already installed, flash unslung-6.x.bin as you normally would
- flash new firmware (using the web interface "Upgrade Firmware" page).
- See your NSLU2 user manual for details if you don't know how to do this.
+2) Access the Web interface. Note that you should use the username "admin" and
+ password "admin" for the web interface at this point (as no disks are
+ attached, the default username and password is the only way to access the
+ Management web pages).
+
+ 2-a) If you are installing Unslung 6.x onto an NSLU2 unit with Linksys
+ standard firmware already installed, flash unslung-6.x.bin as you
+ normally would flash new firmware (using the web interface
+ "Upgrade Firmware" page). See your NSLU2 user manual for details
+ if you don't know how to do this.
+
+ - During firmware flashing, the top LED - Ready/Status - flashes
+ red and green (approximately 5 minutes, but can be much longer).
+
+ - The NSLU2 will reboot after the flashing is complete.
+
+ 2-b) If you are installing Unslung 6.x onto an NSLU2 unit with an
+ existing version of nslu2-linux.org firmware already installed,
+ you must first put the NSLU2 into RedBoot Upgrade Mode.
- - During firmware flashing, the top LED - Ready/Status - flashes red and
- green (approximately 5 minutes, but can be much longer).
+ - The NSLU2 should still be powered off at this point. If not,
+ shut it down again before proceeding.
- - The NSLU2 will reboot after the flashing is complete.
+ - Using a paper clip, push and hold in the reset button which is
+ located on the back of the NSLU2 near the power socket.
-2-b) If you are installing Unslung 6.x onto an NSLU2 unit with an existing
- version of nslu2-linux.org firmware already installed, you must first put
- the NSLU2 into RedBoot Upgrade Mode.
+ - While holding in the reset button, press and release the power
+ button.
- - The NSLU2 should still be powered off at this point. If not, shut it
- down again before proceeding.
- - Using a paper clip, push and hold in the reset button which is located
- on the back of the NSLU2 near the power socket.
- - While holding in the reset button, press and release the power button.
- - Watch the Ready/Status LED and as soon as it turns red, then quickly
- release the reset button.
- - You should now be in upgrade mode which is indicated by the Ready/Status
- LED alternating between red and green.
- - Use either the Linux UpSlug tool or the Windows SerComm Upgrade tool to
- upload the new firmware - you can find download links at
+ - Watch the Ready/Status LED, and as soon as it turns red quickly
+ release the reset button.
+ - You should now be in upgrade mode which is indicated by the
+ Ready/Status LED alternating between red and green.
+
+ - Use either the Linux UpSlug2 tool or the Windows SerComm Upgrade
+ tool to upload the new firmware - you can find download links at
http://www.nslu2-linux.org/wiki/HowTo/InstallUnslungFirmware
- - During firmware flashing, the top LED - Ready/Status - flashes red and
- green (approximately 5 minutes, but can be much longer).
+ - During firmware flashing, the top LED - Ready/Status - flashes
+ red and green (approximately 5 minutes, but can be much longer).
- - The NSLU2 will reboot after the flashing is complete.
+ - The NSLU2 will reboot after the flashing is complete.
3) Shutdown the NSLU2 (again), attach disk(s), and power it back up.
@@ -158,15 +225,23 @@ booting in the future.
To run the unsling-script you have to be logged in as root (with a telnet
session).
-NOTE: There are two root-passwords. One is saved in a internal file called
-/usr/local/passwd (we know this one - it's "uNSLUng" and used when you boot
-without a attached harddisk) the other is stored in a external file called
+NOTE: There are two root passwords. One is saved in an internal database file
+called /usr/local/passwd (we know this one - it's "uNSLUng" and used when you
+boot without a attached harddisk) the other is stored in an external file called
/share/hdd/conf/passwd (we don't know this one - it's used when you boot with a
external harddisk attached). Later in the process you can change both of
-them. That means: Everytime you boot WITHOUT a attached harddisk you gain
+them. That means: Everytime you boot WITHOUT an attached harddisk you gain
root-access with the "uNSLUng" password. If you boot WITH an attached harddisk,
you won't have access until you change the file /share/hdd/conf/passwd.
+NOTE about the NOTE: New in Unslung 6.x is that by default the "unsling"
+script will prompt for a new password. This new password will become the
+new password used whenever the NSLU2 is booted without it's disk (replacing
+the "uNSLUng" password), and it will also be the new root password used when
+the NSLU2 boots up with it's disk. If you are upgrading, or wish to preserve
+your passwords just the way they are, use the "-nopw" option with the unsling
+script.
+
1) Power up the NSLU2 without any disks connected.
- This only has to be done when you update the firmware.
@@ -175,15 +250,18 @@ you won't have access until you change the file /share/hdd/conf/passwd.
If you powered up your NSLU2 with a disk attached, shutdown the
NSLU2, unplug the disks, and power up again.
-2) Enable telnet by going to "http://192.168.1.77/Management/telnet.cgi", and
- press the enable button.
+2) Enable telnet by going to the NSLU2's web interface and clicking on the
+ "Manage Telnet" link (right-hand side), then on the "Enable/Disable
+ NSLU2 telnet Service" page, click on the "Enable" button to turn on
+ the telnet service.
+
+ (You can browse directly to the enable/disable telnet page in your
+ browser: "http://192.168.1.77/Management/telnet.cgi".)
- - If you had previously changed the IP address of your NSLU2 from
- 192.168.1.77 to something else, then you should use that new IP
- address to enable telnet. Again note that you should use the username
- "admin" and password "admin" for the web interface at this point (as
- no disks are attached, the default username and password is the only
- way to access the Management web pages).
+ - Note that you should use the username "admin" and password "admin" for
+ the web interface at this point (as no disks are attached, the
+ default username and password is the only way to access the
+ Management web pages).
- Make sure you have **** NO DISKS ATTACHED AT THIS TIME ****
@@ -197,54 +275,39 @@ you won't have access until you change the file /share/hdd/conf/passwd.
3) OK, now that you don't have any disks attached, you can proceed and telnet
into the NSLU2 using the username root and password uNSLUng.
- - If you are upgrading from a previous release of Unslung, please read
-
- http://www.nslu2-linux.org/wiki/Unslung/UpgradingToUnslung6
-
-4) Identify which drive you wish you "unsling", and plug it in. Note that for
- Unslung 6.x it is recommended that you plug the target disk into the Disk2
- port so that you can use the Disk1 port for attaching multiple ext3 and/or
- NTFS data disks via a USB hub. For more information, see
-
- http://www.nslu2-linux.org/wiki/Unslung/WhichUSBPortforUnslung6
-
- Wait a minute or two while the disk is mounted. Check the web
- interface to make sure that the disk has been recognised by the
- Linksys software.
+4) Identify which drive you wish you "unsling", and plug it in. Wait a minute
+ or two while the disk is mounted. Check the web interface 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. Make sure that the drive is recognized in the
web interface.
-5) In the telnet session, run "/sbin/unsling disk1" or "/sbin/unsling disk2"
- (depending upon whether you want to unsling to a disk connected to the
- Disk1 port or the Disk2 port). Again, we recommend for Unslung 6.x that
- you unsling to disk2.
+ 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 interface.
+
+5) In the telnet session, run "/sbin/unsling disk2".
+ (If you've decided to unsling to a device connected to port 1, you'll run
+ "/sbin/unsling disk1", of course.)
- Once you "unsling" to an external disk on a particular port (Disk 1 or
Disk 2), it is important that you keep that disk continually plugged
into that same port whenever the NSLU2 is turned on.
- ***** Unsling will not change the password on your disk, so if you had
- previously changed the password on a disk, then your password will
- not be changed. Also note that simply editing the /etc/passwd file
- is not enough to permanently change a password. See:
+ ***** By default, unsling WILL prompt you for a new root password, and it
+ will change the password on your disk as well. If this is NOT what
+ you wish it to do, use the "-nopw" flag with the "unsling" command:
+ "/sbin/unsling -nopw disk2" for example.
+ For more information on changing passwords and all the places where
+ the NSLU2 stores passwords, please see the following wiki article:
+
http://www.nslu2-linux.org/wiki/HowTo/ChangePasswordsFromTheCommandLine
- NOTE: There are two root-passwords. One is saved in a internal
- file called /usr/local/passwd (we know this one - it's "uNSLUng"
- and used when you boot without a attached harddisk) the other is
- stored in a external file called /share/hdd/conf/passwd (we don't
- know this one - it's used when you boot with a external harddisk
- attached). That means: Everytime you boot WITHOUT a attached harddisk
- you gain root-access with the "uNSLUng" password. If you boot
- WITH an attached harddisk, you won't have access until you change
- the file /share/hdd/conf/passwd. So you should change this file
- as soon as you unsling to an external disk, before you exit the
- telnet session that you are using to unsling to the disk.
-
-6) If you wish to migrate your packages from the old Unslung 3.x location in
+6) (For those upgrading from Unslung 3.x only)
+ If you wish to migrate your packages from the old Unslung 3.x location in
the /share/hdd/conf (disk1) or /share/flash/conf (disk2) partitions to the
new Unslung 4.x, 5.x and 6.x location on the data partition, then run:
"/sbin/slingover disk1" (if your packages were previously on disk1 and you
@@ -266,19 +329,42 @@ you won't have access until you change the file /share/hdd/conf/passwd.
internal jffs2 filesystem, then you would fill the flash and cause
your NSLU2 to no longer boot and require reflashing to recover.
-8) Wait for the NSLU2 to boot, telnet in, and confirm that the root filesystem
- is being loaded from the external disk.
+8) Confirm that your NSLU2 is unslung:
+
+ You can verify that your NSLU2 is unslung by checking the NSLU2 web admin
+ GUI - you are unslung if the text at the bottom reads something like:
+ "uNSLUng status: Unslung to disk2, /dev/sda1"
+
+ Also, when you login to the NSLU2, the login message printed will clearly
+ indicate if you are unslung, or if something went awry and you are still
+ running on the internal flash.
-***** Congratulations, you're now Unslung! *****
+ If your NSLU2 does not indicate that it is Unslung, rather it says that it
+ is running from internal flash, then the first thing to check is:
+ - Did you miss step 7 above (reboot)?
+
+9) Verify that you can log into the NSLU2 by going to the web GUI "Manage Telnet"
+ page, enable the telnet service, then telnet in as the root user, with the
+ password you entered when you performed the "unsling" operation.
Make sure you add an entry to the "The Unslung 6.x" table in the Yahoo group.
Just use the next free integer for your Unslung number.
+http://groups.yahoo.com/group/nslu2-linux/database?method=reportRows&tbl=12
+
+
If you make no further changes, your NSLU2 will continue to operate normally.
But to customize things, you'll be downloading packages and adding stuff to the
/unslung directory using diversion scripts.
-Read the NOTES file to expand the capabilities of your Unslung NSLU2!
+http://www.nslu2-linux.org/wiki/Unslung/Packages
+http://www.nslu2-linux.org/wiki/Unslung/DiversionScripts
-Enjoy!
+(One of the first packages you should consider installing is the OpenSSH
+package, which will provide you a secure and more usable replacement for the
+standard telnet service on the NSLU2.)
+
+Read the NOTES file (normally in /opt/doc/NOTES on your unslung NSLU2) to expand
+the capabilities of your Unslung NSLU2!
+Enjoy!
diff --git a/packages/nslu2-binary-only/unslung-rootfs/ipkg-fl b/packages/nslu2-binary-only/unslung-rootfs/ipkg-fl
new file mode 100755
index 0000000000..ade959a759
--- /dev/null
+++ b/packages/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/packages/nslu2-binary-only/unslung-rootfs/linuxrc b/packages/nslu2-binary-only/unslung-rootfs/linuxrc
index af694bc68d..d8a0e5d06c 100755
--- a/packages/nslu2-binary-only/unslung-rootfs/linuxrc
+++ b/packages/nslu2-binary-only/unslung-rootfs/linuxrc
@@ -4,101 +4,46 @@
# **** UNLESS YOU REALLY KNOW *EXACTLY* WHAT YOU ARE DOING. ****
-# Determine the desired rootfs based on user flag files.
-
-if [ -f /.sda1root ] ; then
- /bin/echo "Preferred root device is /dev/sda1 (disk 1)"
- mounted=/mnt
- prefroot=sda1
-elif [ -f /.sda2root ] ; then
- /bin/echo "Preferred root device is /dev/sda2 (disk 1)"
- mounted=/mnt
- prefroot=sda2
-elif [ -f /.sdb1root ] ; then
- /bin/echo "Preferred root device is /dev/sdb1 (disk 2)"
- mounted=/mnt
- prefroot=sdb1
-elif [ -f /.sdb2root ] ; then
- /bin/echo "Preferred root device is /dev/sdb2 (disk 2)"
- mounted=/mnt
- prefroot=sdb2
-elif [ -f /.nfsroot ] ; then
- /bin/echo "Preferred root device is NFS"
- mounted=/mnt
- prefroot=nfsroot
-else
- /bin/echo "Preferred root device is jffs2"
- mounted=
- prefroot=jffs2
-fi
-
-
-# Perform prepatory tasks, and determine whether the desired rootfs is viable.
+# Perform prepatory tasks, and determine whether an alternate rootfs is viable.
/bin/mount -t proc proc /proc
-if [ $prefroot = "sda1" -o $prefroot = "sda2" -o $prefroot = "sdb1" -o $prefroot = "sdb2" ] ; then
- /bin/echo "Sleeping while waiting for disk..."
- cnt=20
- while [ $cnt -gt 0 ] ; do
- echo -ne "\r$cnt "
- sleep 1
- [ $prefroot = "sda1" ] && [ -f /proc/hd_conn ] && cnt=0
- [ $prefroot = "sda2" ] && [ -f /proc/hd_conn ] && cnt=0
- [ $prefroot = "sdb1" ] && [ -f /proc/hd2_conn ] && cnt=0
- [ $prefroot = "sdb2" ] && [ -f /proc/hd2_conn ] && cnt=0
- cnt=`expr $cnt - 1`
- done
- echo
- /bin/mount -rt ext3 /dev/$prefroot /mnt
- if [ -L /mnt/sbin/init -o -x /mnt/sbin/init -o \
- -L /mnt/bin/init -o -x /mnt/bin/init ] ; then
- /bin/echo "Root filesystem will be mounted from /dev/$prefroot ..."
- else
- /bin/umount /mnt
- /bin/echo "Can't find valid rootfs on /dev/$prefroot, using jffs2 ..."
- mounted=
- prefroot=jffs2
+echo "1" > /proc/sys/kernel/panic
+
+/bin/echo "Sleeping while waiting for disk..."
+cnt=20
+while [ $cnt -gt 0 ] ; do
+ echo -ne "\r$cnt "
+ 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
+echo
+
+sleep 5
+
+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
-
-if [ $prefroot = "nfsroot" ] ; then
-
- sysconflen=`/bin/dd if=/dev/mtd1 bs=4 count=1 2>/dev/null | /usr/bin/hexdump -n 6 -e '"%02d"'`
- ipaddr=`/bin/dd if=/dev/mtd1 bs=1 count=$sysconflen skip=4 2>/dev/null | grep ip_addr | sed -e s/ip_addr=//`
- netmask=`/bin/dd if=/dev/mtd1 bs=1 count=$sysconflen skip=4 2>/dev/null | grep netmask | sed -e s/netmask=//`
- gateway=`/bin/dd if=/dev/mtd1 bs=1 count=$sysconflen skip=4 2>/dev/null | grep gateway | sed -e s/gateway=//`
-
- /sbin/insmod ixp400
- /sbin/insmod ixp425_eth
- /sbin/ifconfig ixp0 up $ipaddr netmask $netmask
- /sbin/route add default gw $gateway
-
- /sbin/ifconfig lo up 127.0.0.1
+ fi
+done
- # The nfsrootloc and nfsrootopts vars can be overridden here.
- . /.nfsroot
-
- /bin/mount $nfsrootopts $nfsrootloc /mnt
-
- if [ -L /mnt/sbin/init -o -x /mnt/sbin/init -o \
- -L /mnt/bin/init -o -x /mnt/bin/init ] ; then
- /bin/echo "Root filesystem will be mounted from an NFS root ..."
- mounted=/mnt
- else
- /bin/umount /mnt
- /bin/echo "Can't find valid NFS rootfs, using jffs2 ..."
- mounted=
- prefroot=jffs2
- fi
-fi
-
-if [ $prefroot = "jffs2" ] ; then
- /bin/echo "Root filesystem will be mounted from /dev/mtdblock4 ..."
- mounted=
+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.
@@ -107,17 +52,10 @@ if [ -n "$mounted" ] ; then
cd $mounted
- if [ -x ./sbin/init -o -L ./sbin/init ] ; then
- runboot=/sbin/init
- elif [ -x ./bin/init -o -L ./bin/init ] ; then
- runboot=/bin/init
- else
- runboot=/bin/sh
- fi
-
+ /bin/echo "Pivoting to external rootfs ..."
/sbin/pivot_root . initrd
- exec /usr/sbin/chroot . $runboot < /dev/console 1> /dev/console 2> /dev/console
+ exec /usr/sbin/chroot . /bin/init < /dev/console 1> /dev/console 2> /dev/console
else
@@ -125,7 +63,7 @@ else
fi
-/bin/echo "Can't chroot to $prefroot, using jffs2 ..."
+/bin/echo "Can't pivot to external rootfs, using ramdisk ..."
exec /bin/init
# Last-resort fall-back - this should never be reached.
diff --git a/packages/nslu2-binary-only/unslung-rootfs/motd-fl b/packages/nslu2-binary-only/unslung-rootfs/motd-fl
new file mode 100644
index 0000000000..aafcd21cb5
--- /dev/null
+++ b/packages/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/packages/nslu2-binary-only/unslung-rootfs/motd-un b/packages/nslu2-binary-only/unslung-rootfs/motd-un
new file mode 100644
index 0000000000..5439b08be6
--- /dev/null
+++ b/packages/nslu2-binary-only/unslung-rootfs/motd-un
@@ -0,0 +1,4 @@
+
+Welcome to Unslung @v@
+
+ ---------- NOTE: THIS SYSTEM IS CURRENTLY UNSLUNG ----------
diff --git a/packages/nslu2-binary-only/unslung-rootfs/profile b/packages/nslu2-binary-only/unslung-rootfs/profile
deleted file mode 100644
index a8009daf39..0000000000
--- a/packages/nslu2-binary-only/unslung-rootfs/profile
+++ /dev/null
@@ -1,2 +0,0 @@
-export PATH=$PATH:/opt/bin:/opt/sbin:/opt/usr/bin:/opt/usr/sbin
-export LD_LIBRARY_PATH=/opt/lib
diff --git a/packages/nslu2-binary-only/unslung-rootfs/rc.modules-diversion.patch b/packages/nslu2-binary-only/unslung-rootfs/rc.modules-diversion.patch
index a2bfb1545c..fa7532401d 100644
--- a/packages/nslu2-binary-only/unslung-rootfs/rc.modules-diversion.patch
+++ b/packages/nslu2-binary-only/unslung-rootfs/rc.modules-diversion.patch
@@ -1,10 +1,8 @@
--- nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.modules.orig 2004-07-27 23:37:55.000000000 -0400
+++ nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.modules 2004-09-01 21:57:34.000000000 -0400
-@@ -1,4 +1,7 @@
- #!/bin/sh
+@@ -1,2 +1,5 @@
+
+if ( [ -f /unslung/rc.modules ] && . /unslung/rc.modules ) ; then return 0 ; fi
+
- insmod pbuttons &>/dev/null
insmod rbuttons &>/dev/null
insmod x1226-rtc &>/dev/null
diff --git a/packages/nslu2-binary-only/unslung-rootfs/rc.sysinit-clean_var.patch b/packages/nslu2-binary-only/unslung-rootfs/rc.sysinit-clean_var.patch
new file mode 100644
index 0000000000..17e7ebef43
--- /dev/null
+++ b/packages/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/packages/nslu2-binary-only/unslung-rootfs/remount-noatime.patch b/packages/nslu2-binary-only/unslung-rootfs/remount-noatime.patch
index e728657ffa..a39dc678b5 100644
--- a/packages/nslu2-binary-only/unslung-rootfs/remount-noatime.patch
+++ b/packages/nslu2-binary-only/unslung-rootfs/remount-noatime.patch
@@ -1,29 +1,49 @@
---- nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.1~ 2004-11-09 21:45:52.000000000 +1030
-+++ nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.1 2004-11-09 21:44:27.000000000 +1030
-@@ -27,6 +27,14 @@
+--- 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
-+ /bin/echo "Remounting /dev/sda1 as ext3flash:"
-+ /bin/mount -o remount,rw,noatime /dev/sda1
-+ /bin/echo "Remounting /dev/sda2 as ext3flash:"
-+ /bin/mount -o remount,rw,noatime /dev/sda2
++ 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/sda3
++ /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.3r25/etc/rc.d/rc.quota~ 2004-11-11 00:05:21.000000000 +1030
-+++ nslu2-linksys-ramdisk-2.3r25/etc/rc.d/rc.quota 2004-11-11 00:04:52.000000000 +1030
-@@ -14,6 +14,11 @@
+--- 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
-+ /bin/echo "Remounting /dev/sda1 as ext3flash:"
-+ /bin/mount -o remount,rw,noatime /dev/sda1
++ 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" ]
diff --git a/packages/nslu2-binary-only/unslung-rootfs/security-fixes.patch b/packages/nslu2-binary-only/unslung-rootfs/security-fixes.patch
index aeed5980f8..8517e7d06b 100644
--- a/packages/nslu2-binary-only/unslung-rootfs/security-fixes.patch
+++ b/packages/nslu2-binary-only/unslung-rootfs/security-fixes.patch
@@ -1,12 +1,7 @@
--- 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
-@@ -16,11 +16,11 @@
-
- /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
--/bin/echo "Generating telnet password:"; /usr/sbin/TelnetPassword; check_status
-+#/bin/echo "Generating telnet password:"; /usr/sbin/TelnetPassword; check_status
- #/bin/echo "Restore time and timezone:"; /etc/rc.d/rc.rstimezone; check_status
+@@ -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
diff --git a/packages/nslu2-binary-only/unslung-rootfs/telnet.htm b/packages/nslu2-binary-only/unslung-rootfs/telnet.htm
new file mode 100644
index 0000000000..7807f228a2
--- /dev/null
+++ b/packages/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" or "dropbear". These packages are secure, and will not require any special steps to enable once installed. Openssh can be installed using the standard "ipkg" mechanism: "ipkg install openssh".</P>
+ <HR>
+ <CENTER>
+ <P><A HREF="/index.cgi">Back</A></P>
+ </CENTER>
+ </BODY>
+
+</HTML>
diff --git a/packages/nslu2-binary-only/unslung-rootfs/unsling b/packages/nslu2-binary-only/unslung-rootfs/unsling
index c78bb7bbfe..c8b3dc8662 100755
--- a/packages/nslu2-binary-only/unslung-rootfs/unsling
+++ b/packages/nslu2-binary-only/unslung-rootfs/unsling
@@ -1,33 +1,32 @@
#!/bin/sh
-usage="Usage: $0 disk1|disk2"
-
-# Set target disk
+usage="Usage: $0 [-nopw] disk1|disk2"
+nopw=0
if [ $# -gt 1 ] ; then
- echo $usage
- exit 1
+ 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
- elif [ "$1" = "hdd-data" ] ; then
- targ=/share/hdd/data
- flag=.sdb1root
- elif [ "$1" = "hdd-conf" ] ; then
- targ=/share/hdd/conf
- flag=.sdb2root
- elif [ "$1" = "flash-data" ] ; then
- targ=/share/flash/data
- flag=.sda1root
- elif [ "$1" = "flash-conf" ] ; then
- targ=/share/flash/conf
- flag=.sda2root
+ htmlinfo="disk2, /dev/sda1"
+ fixconf=1
else
echo $usage
exit 1
@@ -37,15 +36,117 @@ else
exit 1
fi
+# 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
-if grep $targ /proc/mounts >/dev/null 2>&1 ; then
- echo "Target disk is $targ"
-else
- echo "Error: $targ is not a mounted disk"
+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
+ cp /etc/passwd /usr/local/passwd
+# cp /etc/passwd $targconf/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 /
@@ -59,7 +160,8 @@ fi
# Copy the complete rootfs to the target.
-echo "Copying the complete rootfs from / to $targ."
+echo
+echo "Copying the complete rootfs from / to $targ ..."
/usr/bin/find / -print0 -mount | /usr/bin/cpio -p -0 -d -m -u $targ
rm -rf $targ/dev ; mv $targ/dev.state $targ/dev
rm -rf $targ/var ; mv $targ/var.state $targ/var
@@ -74,6 +176,44 @@ 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
+
+# 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
@@ -82,4 +222,12 @@ 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"
+echo "in order to boot this system up into unslung mode."
+
exit 0
diff --git a/packages/nslu2-binary-only/unslung-rootfs/upgrade.htm b/packages/nslu2-binary-only/unslung-rootfs/upgrade.htm
index cdb611dfd2..88644e305e 100644
--- a/packages/nslu2-binary-only/unslung-rootfs/upgrade.htm
+++ b/packages/nslu2-binary-only/unslung-rootfs/upgrade.htm
@@ -70,8 +70,8 @@ function checkUpgrade()
<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>
- <a href="/Management/setup.cgi?next_file=lan.htm" class="submenu">Setup</a>
- </td>
+ <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>
@@ -94,11 +94,14 @@ function checkUpgrade()
<tr>
<td nowrap>Current Firmware Version:</td>
<td nowrap>@ds_sw_version# </td></tr>
+ <tr><td>
+ <div align="left"><a href="http://www.linksys.com" target="new_win"><img src="button_checkupdate.jpg" width="107" height="20" alt="" border="0"></a></div>
+ </td>
+ </tr>
</table></div> </td>
<td width="176" bgcolor="#6666cc"><img border="0" src="../UI_05.gif" height="80" 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>
@@ -107,10 +110,9 @@ function checkUpgrade()
<tr>
<td bgcolor="black" height="34">&nbsp; </td>
- <td bgcolor="#6666cc" align="right" height="33" valign="middle">
-<a class="textbutton" href="javascript:checkUpgrade();" style="{padding:3px}">&nbsp; Enter Upgrade Mode </a>
-&nbsp;
-<a class="textbutton" href="javascript:openHelpWin('help/util_upg.htm')" style="{padding:3px}">&nbsp; Help &nbsp;</a> &nbsp; &nbsp; </td>
+ <td bgcolor="#6666cc" align="right" height="33" valign="middle"><a class="textbutton" href="javascript:checkUpgrade();" style="{padding:3px}">&nbsp;
+ Enter Upgrade Mode&nbsp;</a>&nbsp; <a class="textbutton" href="javascript:openHelpWin('help/util_upg.htm')" style="{padding:3px}">
+ Help &nbsp;</a> &nbsp; &nbsp; </td>
</tr>
diff --git a/packages/nslu2-binary-only/unslung-rootfs/wait-for-quotacheck.patch b/packages/nslu2-binary-only/unslung-rootfs/wait-for-quotacheck.patch
index ffdda1b88b..71c8e9caec 100644
--- a/packages/nslu2-binary-only/unslung-rootfs/wait-for-quotacheck.patch
+++ b/packages/nslu2-binary-only/unslung-rootfs/wait-for-quotacheck.patch
@@ -1,9 +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,5 +14,5 @@
+@@ -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