Posterous
Czar is using Posterous to post everything online. Shouldn't you?
Smallworlds_thumb
 

Czarism.com

The Posterous of @Czarphanguye

Got the router upgraded. Going to move snort and apache to it...

Filed under  //   dd-wrt   image   Linux   optware   router   wl-520gu  
Posted September 23, 2009 by Czar Phanguye 
// 2 Comments

Following... Asus WL-520gU DD-WRT w/ Optware & USB mass storage guide

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:

Code:
# ipkg update 
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/Packages ...
Connecting to ipkg.nslu2-linux.org[140.211.166.82]:80 
Packages             100% |**********************************************|   259 KB 00:00:00 ETA
Done.
Updated list of available packages in //jffs/usr/lib/ipkg/lists/optware
2. Now download the Optware installation script from the web to the /tmp directory:
Code:
# wget http://www.3iii.dk/linux/optware/optware-install-ddwrt.sh -O - | tr -d '\r' > /tmp/optware-install.sh
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.
Code:
# sh /tmp/optware-install.sh
Checking system config ...
 Using 192.168.1.1 as default gateway.
 Using the following nameserver(s):
 nameserver 192.168.1.30
 Warning: local nameserver is different than gateway!
 Check config or enter:
   sed -i s/192.168.*/192.168.1.1/ /tmp/resolv.conf
 to correct this.
 Installing package uclibc-opt_0.9.28-13_mipsel.ipk ...
 Connecting to ipkg.nslu2-linux.org[140.211.166.82]:80
 uclibc-opt_0.9.28-12 100% |***********************************************|   832 KB 00:00:00 ETA
 Updating /opt/etc/ld.so.cache
 /opt/sbin/ldconfig: can't create /opt/etc/ld.so.cache~ (No such file or directory)
 Installing package ipkg-opt_0.99.163-9_mipsel.ipk ...
 Connecting to ipkg.nslu2-linux.org[140.211.166.82]:80
 ipkg-opt_0.99.163-9_ 100% |***********************************************| 75896    00:00:00 ETA
 Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/Packages.gz
 Inflating http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/Packages.gz
 Updated list of available packages in /opt/lib/ipkg/lists/optware
 Successfully terminated.
 Installing uclibc-opt (0.9.28-12) to /opt/...
 Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/uclibc-opt_0.9.28-12_mipsel.ipk
 package uclibc-opt suggests installing ipkg-opt
 Configuring uclibc-opt
 Updating /opt/etc/ld.so.cache
 Successfully terminated.
 Installing ipkg-opt (0.99.163-9) to /opt/...
 Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/ipkg-opt_0.99.163-9_mipsel.ipk
 Configuring ipkg-opt
 Successfully terminated.
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:

Code:
# /opt/bin/ipkg-opt update 
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/Packages.gz
Inflating http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/Packages.gz
Updated list of available packages in /opt/lib/ipkg/lists/optware
Successfully terminated.

# /opt/bin/ipkg-opt remove samba
# /opt/bin/ipkg-opt install samba2
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
Code:
\\192.168.1.1
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....

 

Filed under  //   dd-wrt   Linux   optware   router  
Posted September 23, 2009 by Czar Phanguye 
// 0 Comments