Try this out, and let me know how it works for you... ================================================== ==========
I. FORMATTING YOUR DISK DRIVE
================================================== ========== You must partition and format your hard disk drive somewhere other than your router. DD-WRT does not include the commands necessary to perform these functions. Use a Linux boot CD like Knoppix or Ubuntu on your computer. Restart your computer so it boots from the Linux CD. 1. After Linux boots, connect your USB hard disk drive.
2. Open a terminal window so you can issue Linux commands.
3. Use the command "sudo su -" to become root.
4. Find out what Linux named your USB disk with the command dmesg | more You're looking for a set of messages that include the name and a description of your hard disk drive. One line will say SCSI device sd? For the remainder of this text, replace sd? with the name of your disk. Here's an example of what you're looking for:
Code:
scsi0 : SCSI emulation for USB Mass Storage devices
Vendor: WD Model: 1600BEV External Rev: 1.05
Type: Direct-Access ANSI SCSI revision: 02
Attached scsi disk sdb at scsi0, channel 0, id 0, lun 0
SCSI device sdb: 312581808 512-byte hdwr sectors (160042 MB)
5. Partition the disk using the command fdisk /dev/sd? You will be creating three partitions:
5.1) sd?1 - the /opt partition, where Optware will reside.
5.2) sd?2 - the swap partition, where Linux will swap jobs.
5.3) sd?3 - the data partition, which you will share via Samba. It's important to understand everyone's disk drive configuration will be different. If your drive is 40 GB or smaller, use the smaller set of partition sizes below. If your drive is over 40 GB, you can use the larger set of partition sizes. Disk 40 GB or less
---------------------
/opt 256 megabytes
swap 32 megabytes
data remainder of the disk Disk greater than 40 GB
------------------------
/opt 512 megabytes
swap 64 megabytes
data remainder of the disk
Code:
# fdisk /dev/sd?
Command (m for help): p
Disk /dev/sd?: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-621, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-621, default 621): +256M
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (197-621, default 197):
Using default value 197
Last cylinder or +size or +sizeM or +sizeK (197-621, default 621): +32M
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (197-621, default 197):
Using default value 197
Last cylinder or +size or +sizeM or +sizeK (197-621, default 621): <ENTER>
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap)
Command (m for help): p
Disk /dev/sd?: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes
Device Boot Start End Blocks Id System
/dev/sd?1 * 1 196 395104+ 83 Linux
/dev/sd?2 197 262 133056 82 Linux swap
/dev/sd?3 263 458 395136 83 Linux
Command (m for help): w
5.4) format the opt and data partitions, and prepare the swap partition:
Code:
# mke2fs -j -m 1 -L Optware /dev/sd?1
mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Filesystem label=Optware
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
122112 inodes, 243964 blocks
12198 blocks (5.00%) reserved for the super user
First data block=0
8 block groups
32768 blocks per group, 32768 fragments per group
15264 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
# mke2fs -j -m 1 -L Shared /dev/sd?3
mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Filesystem label=Shared
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
122112 inodes, 243964 blocks
12198 blocks (5.00%) reserved for the super user
First data block=0
8 block groups
32768 blocks per group, 32768 fragments per group
15264 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
# mkswap /dev/sd?2
5.5) Now your disk drive is partitioned and formatted for Linux.
================================================== ==========
II. CONNECTING THE DRIVE TO YOUR ROUTER
================================================== ========== 1. You should have the JFFS file system enabled on your router. On the DD-WRT web GUI screen, the Administration/Management tab contains this option in an area labeled JFFS2 Support. Enable both options and reboot your router. After it reboots, the first option (JFFS2) will remain enabled and the second option (Clean JFFS2) will be disabled.
2. On the DD-WRT web GUI screen, on the Services tab enable the options for:
- Core USB support
- USB 2.0 support
- USB storage support
- ext2/ext3 File System support
2.1 From the DD-WRT web GUI screen, on the Administration/Management tab, scroll to the bottom and click on Reboot Router.
3. After a minute, start a terminal session to your router.
4. Disconnect the disk from your computer and connect it to your router.
5. In the terminal session, use the command dmesg | more to insure your disk drive is recognized. Here's what it should look like:
Code:
SCSI subsystem driver Revision: 1.00
Initializing USB Mass Storage driver...
usb.c: registered new driver usb-storage
USB Mass Storage support registered.
Journalled Block Device driver loaded
hub.c: new USB device 00:03.1-1, assigned address 2
hub.c: USB hub found
hub.c: 4 ports detected
usb.c: registered new driver usblp
printer.c: v0.13: USB Printer Device Class driver
hub.c: new USB device 00:03.1-1.3, assigned address 3
scsi0 : SCSI emulation for USB Mass Storage devices
Vendor: WD Model: 1600BEV External Rev: 1.05
Type: Direct-Access ANSI SCSI revision: 02
Attached scsi disk sda at scsi0, channel 0, id 0, lun 0
SCSI device sda: 312581808 512-byte hdwr sectors (160042 MB)
Partition check:
/dev/scsi/host0/bus0/target0/lun0: p1 p2 p3
WARNING: USB Mass Storage data integrity not assured
USB Mass Storage device found at 3
6. Change to the directory /dev/scsi/host0/bus0/target0/lun0 and list the files there. There should be one entry for the hard disk drive, and one for each of the three disk partitions.
Code:
# cd /dev/scsi/host0/bus0/target0/lun0
# ls -la
drwxr-xr-x 1 root root 0 Jan 1 00:00 .
drwxr-xr-x 1 root root 0 Jan 1 00:00 ..
brw------- 1 root root 8, 0 Jan 1 00:00 disc
brw------- 1 root root 8, 1 Jan 1 00:00 part1
brw------- 1 root root 8, 2 Jan 1 00:00 part2
brw------- 1 root root 8, 2 Jan 1 00:00 part3
7. Change to the JFFS2 directory, and create directories for mounting the disk partition:
Code:
# cd /jffs
# mkdir mnt
# mkdir mnt/disk1
8. Test mount your new opt and data partitions. In the terminal window, issue these commands:
Code:
# mount /dev/scsi/host0/bus0/target0/lun0/part1 /opt
# mount /dev/scsi/host0/bus0/target0/lun0/part3 /jffs/mnt/disk1
# mount
rootfs on / type rootfs (rw)
/dev/root on / type squashfs (ro)
none on /dev type devfs (rw)
proc on /proc type proc (rw)
ramfs on /tmp type ramfs (rw)
/dev/mtdblock/4 on /jffs type jffs2 (rw)
/dev/scsi/host0/bus0/target0/lun0/part3 on /jffs/mnt/disk1 type ext3 (rw)
/dev/scsi/host0/bus0/target0/lun0/part1 on /opt type ext3 (rw)
9. On the DD-WRT web GUI screen, on the Administration/Commands tab, click the Edit button, then enter your disk mount commands:
Code:
mount /dev/scsi/host0/bus0/target0/lun0/part1 /opt
mount /dev/scsi/host0/bus0/target0/lun0/part3 /jffs/mnt/disk1
Click on Save Startup to store the commands. Your terminal session will be disconnected.
10. From the DD-WRT web GUI screen, on the Administration/Management tab, scroll to the bottom and click on Reboot Router.
11. After a minute, restart your terminal session and issue the mount command again. You should see both of your disk partitions mounted, even after the router has rebooted.
Code:
# mount
rootfs on / type rootfs (rw)
/dev/root on / type squashfs (ro)
none on /dev type devfs (rw)
proc on /proc type proc (rw)
ramfs on /tmp type ramfs (rw)
/dev/mtdblock/4 on /jffs type jffs2 (rw)
/dev/scsi/host0/bus0/target0/lun0/part3 on /jffs/mnt/disk1 type ext3 (rw)
/dev/scsi/host0/bus0/target0/lun0/part1 on /opt type ext3 (rw)
================================================== ==========
III. INSTALLING OPTWARE ON YOUR DISK
================================================== ========== After JFFS is enabled and disk partitions are mounting, you can download and install the Optware packages that provide more Linux functionality to the router. These will be installed onto the hard disk drive, not on the router itself. Remember the /opt directory on your router actually resides on the disk drive. 1. Use the command ipkg update to update your ipkg repositories:
2. Now download the Optware installation script from the web to the /tmp directory:
3. Execute the Optware installation script you just downloaded. It will take some time to download and configure everything, so verify it starts running, then take a break and come back in ten or fifteen minutes.
4. Now install the busybox packages including links for busybox commands:
Code:
# /opt/bin/ipkg-opt install busybox-base
# /opt/bin/ipkg-opt install busybox
# /opt/bin/ipkg-opt install busybox-links
5. In your terminal session, update your default executable PATH to look for the new Optware software before the DD-WRT software:
Code:
# export PATH=/opt/bin:/opt/sbin:${PATH}
================================================== ==========
IV. ACTIVATING SWAP
================================================== ========== 0. Insure the swap partition is formatted correctly by using the Optware busybox mkswap command:
Code:
# /opt/bin/busybox mkswap /dev/scsi/host0/bus0/target0/lun0/part2
1. Test your swap partition by using the Optware busybox swapon command:
Code:
# /opt/bin/busybox swapon /dev/scsi/host0/bus0/target0/lun0/part2
2. Use the free command to verify your swap space is active:
Code:
# free
total used free shared buffers
Mem: 13048 12564 484 0 908
Swap: 72252 0 72252
Total: 85300 12564 72736
3. Using the DD-WRT web GUI screen, go to the Administration/Commands screen, and click 'Edit'. Add the busybox swapon command below everything else so swap will be enabled whenever the router reboots. Click on Save Startup to save your startup commands. Your terminal session will be disconnected.
Code:
/opt/bin/busybox swapon /dev/scsi/host0/bus0/target0/lun0/part2
4. Using the DD-WRT web GUI screen, go to the Administration/Management tab, scroll to the bottom, and click on Reboot Router
5. After a minute, restart your terminal session, and use the free command again. This verifies your swap space is activated whenever the router reboots. ================================================== ==========
V. INSTALLING SAMBA
================================================== ========== 1. Using the terminal session, use the Optware ipkg-opt command to update your repository, remove any Samba packages installed with Optware, then download and install the Samba software:
2. Samba uses a default Linux user name of nobody but DD-WRT doesn't provide this user name by default. The workaround is to add this user to the DD-WRT user/password file every time the router reboots.
3. Using the DD-WRT web GUI screen, go to the Administration/Commands screen. Add the following command to the bottom of your startup commands:
Code:
echo "nobody:*:65534:65534:nobody:/var:/bin/false" >>/tmp/etc/passwd
4. Using the DD-WRT web GUI screen, go to the Administration/Management tab, scroll to the bottom, and click on Reboot Router'
5. After a minute, restart your terminal session, and check the user/password file to insure the nobody user has been added following a reboot:
Code:
# grep nobody /tmp/etc/passwd
nobody:*:65534:65534:nobody:/var:/bin/false
6. Create a shared data directory on your hard disk drive:
Code:
# cd /jffs/mnt/disk1
# mkdir share
# chmod 777 share
7. Edit the Samba configuration file to add this share at the bottom of the file:
Code:
# cd /opt/etc/samba
# cat >>smb.conf <<EOF
[disk1]
comment = DD-WRT shared disk
path = /jffs/mnt/disk1/share
public = yes
writable = yes
printable = no
create mask = 0666
EOF
8. Edit the Samba configuration file to:
8.1) change the default workgroup name. Yours should match whatever is on all your other computers.
8.2) Define the range of IP addresses allowed
8.3) Announce itself on your network
Code:
# vi smb.conf
[global]
# workgroup = NT-Domain-Name or Workgroup-Name
workgroup = MyWorkgroupName
# server string is the equivalent of the NT Description field
server string = DD-WRT Samba Server
# This option is important for security. It allows you to restrict
# connections to machines which are on your local network.
hosts allow = 192.168.1. 127.
# Cause this host to announce itself to local subnets here
remote announce = 192.168.1.255
:wq
#
9. Test the Samba configuration by manually starting the two Samba daemons:
Code:
# /opt/sbin/nmbd -D
# /opt/sbin/smbd -D
10. From your computer, browse your network. Go to the address bar, enter two back-slashes followed by the IP address of your router and press ENTER. You should see your shared disk drive
11. If you can see the drive, create a test directory and a test file within that directory from your computer.
12. Using the DD-WRT web GUI screen, go to the Administration/Commands screen. Add the following command to the bottom of your startup commands:
Code:
/opt/etc/init.d/S80samba start
13. Using the DD-WRT web GUI screen, go to the Administration/Management tab, scroll to the bottom, and click on Reboot Router
14. After a minute, browse your network again to insure the drive is shared after the router reboots. ================================================== ==========
VI. ALL THE STARTUP COMMANDS
================================================== ========== When you're finished, your router startup commands should look something like this:
Code:
mount /dev/scsi/host0/bus0/target0/lun0/part1 /opt
mount /dev/scsi/host0/bus0/target0/lun0/part3 /jffs/mnt/disk1
/opt/bin/busybox swapon /dev/scsi/host0/bus0/target0/lun0/part2
echo "nobody:*:65534:65534:nobody:/var:/bin/false" >>/tmp/etc/passwd
/opt/etc/init.d/S80samba start
Enjoy.... 