How to add a second drive with multiple partitions to R63/Unslung6
This is an extension of the description of a non-native disk mount at
NonNativeDiskMount. It is also related to CustomSizedPartitions.
Due to the odd behavior of rc.bootbin as discussed in R63DiskBehaviour,'''it is
not advisable to use two natively-formatted disks in R63 or Unslung6!''' It is possible to
partition, format and add a second drive manually without complications.
This method creates three partitions -- one NTFS, one ext3 and one swap.
Following WhichUSBPortforUnslung6 recommendations, root will be installed on the NSLU disk port 2 (/dev/sda) and the hard disk in port 1 (/dev/sdb). The instructions will use a memory stick for the root device.
Start with a fresh NSLU2, and have access to a Windows machine.
- Ensure that the memory stick does not have a old Unslung partitions on it. Repartition and reformat if required.
- Flash Unslung 6.x following the Readme. When instructed to format the disk (memory stick), ensure that you put it in the Disk 2 port....unsling to disk 2, reboot, install ssh, etc. Then turn off the slug. Do not attempt to install shares or users yet.
- Prepare the hard drive. Connect it to a Window machine. Start Menu-->My Computer-->Manage. In the computer management application, use the "Storage-->Disk Management" application to add a primary partition taking up all but about 10 GB of the disk (or however much you want to leave for the ext3 partitions). I recommend that you let the Window machine entirely format the new partition to NTFS -- not using quick format. (Also, see the note below).
- Connect the hard disk to the slug and restart.
- Establish a telnet or ssh connection to the slug and log in as root.
- Access the fdisk command to manage the disk: /bin/busybox fdisk /dev/sdb
- Add the first new partition. You can accept the default starting cylinder. For the end cylinder use less than the default to leave some for the third partition (see the note below).
- Add the last new partition, accepting the defaults for start and end cylinders to use up the remainder of the device.
- Change the partition type for the swap partition (swap is type 82).
- Exit fdisk by writing (not quiting). I received an error message at this point, but with no noticable effect.
- Format the second new partition to ext3: mkfs.ext3 /dev/sdb2
- Prepare the swap space: mkswap /dev/sdb3
- Now create a diversion script to mount the new partitions and turn on the swap space at boot time. Create file /unslung/rc.samba with the following contents (also see note below):
# Under Linksys R63, this first mount command
# is not needed if the first partition is NTFS
# (or FAT?)
# mount /dev/sdb1 /share/hdd/data
mount /dev/sdb /share/hdd/conf
NOTE: My [R63] slug auto-mounts the NTFS partition that is the first one on the disk. During my first attempt, I put a couple dummy partitions on the drive before adding the NTFS one, so it ended up third on the disk. I might be recalling incorrectly, but I don't think it was auto-mounted later.
NOTE: After some time and unknown events...possibly due to temporarily swapping the disk drive to a Windows machine, the automount of the NTFS partition stopped working. When that occurred I had to uncomment the first mount command in the above script (and change some scripts towards the new mount point).
NOTE: Regarding the size of a swap partition. Probably best to make sure it is at least as large as the slug's memory (32MB), better twice the memory (though that might be a bit overkill on a slug). If you do the command p (print) in fdisk, you'll see that a cylinder is about 8 MB. I used 25 cylinders in my swap and have around 200 MB available.
After rebooting, you should be able to see the new partitions
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/sda1 1718400 125468 1575476 7% /
/dev/mtdblock4 6528 6204 324 95% /initrd
/dev/sda1 1718400 125468 1575476 7% /share/flash/data
/dev/sda2 122963 4149 117545 3% /share/flash/conf
/dev/sdb1 302078192 111448992 190629200 37% /share/hdd/data/HDD_1_1_1
/dev/sdb2 10128084 57916 9555688 1% /share/hdd/conf
total used free shared buffers
Mem: 30516 29856 660 0 12548
Swap: 200804 4840 195964
Total: 231320 34696 196624
# swapoff /dev/sdb3
total used free shared buffers
Mem: 30516 29608 908 0 480
Swap: 0 0 0
Total: 30516 29608 908
That free output was from a baseline slug with only mt-daapd added. As the second free shows, if the swap is removed it just uses up the buffers. The point is, if it has swap available, the slug is going to tend to use it for some things.
CAUTION: I do not believe this is related, but mentioning it just in case. At some point after doing this, my slug started booting slowly, was not available via the web server and after about one out of ten boots the ssh daemon would not start and I couldn't log in.
Looking into /var/log/messages, I discovered warnings about Out of Memory conditions and killing of processes. The first such message was the first message after the system time had been updated. And that message was alway about killing the thttpd process.
I went so far as to remove the third partition (swap space) describe on this page, but that did not solve the problem. (Re-created it later).
The situation appears to be fixed by adding a diversion script that turned on the new swap space before attempting to start the thttpd process, /unslung/rc.thttpd