How to make a Samba NAS with an OpenWrt router
This express howto describes how to create a NAS to share files inside a network out of an USB-capable OpenWrt router and an external hard drive.
 
  
 
Indice
Ingredients
- OpenWrt router with USB port (such as TP-Link WR1043ND) already flashed with OpenWrt Backfire and connected to the Internet 
- external USB hard drive with a single ext4 partition
- cables to connect and power the hardware
Steps
root@QQ:~# opkg update root@QQ:~# opkg install kmod-fs-ext4 root@QQ:~# opkg install kmod-usb-storage root@QQ:~# opkg install block-mount
- plug the disk into the router's USB port
root@QQ:~# dmesg ... SCSI subsystem initialized Initializing USB Mass Storage driver... scsi0 : SCSI emulation for USB Mass Storage devices usbcore: registered new interface driver usb-storage USB Mass Storage support registered. usb-storage: device found at 2 usb-storage: waiting for device to settle before scanning scsi 0:0:0:0: Direct-Access WD Ext HDD 1021 2021 PQ: 0 ANSI: 4 sd 0:0:0:0: [sda] 1953519616 512-byte logical blocks: (1.00 TB/931 GiB) usb-storage: device scan complete sd 0:0:0:0: [sda] Write Protect is off sd 0:0:0:0: [sda] Mode Sense: 17 00 10 08 sd 0:0:0:0: [sda] Assuming drive cache: write through sd 0:0:0:0: [sda] Assuming drive cache: write through sda: sda1 sd 0:0:0:0: [sda] Assuming drive cache: write through sd 0:0:0:0: [sda] Attached SCSI disk
- be sure that sda1 is the name of your hard disk's partition.
- edit /etc/config/fstab
config global automount
        option from_fstab 1
        option anon_mount 1
config global autoswap
        option from_fstab 1
        option anon_swap 0
config mount
        option target   /mnt                     
        option device   /dev/sda1
        option fstype   ext4   
        option options  rw,sync
        option enabled  1    
        option enabled_fsck 0
           
config swap                      
        option device   /dev/sda2
        option enabled  0- then:
root@QQ:~# /etc/init.d/fstab enable root@QQ:~# /etc/init.d/fstab start WARNING: /lib/functions/fsck not found root@QQ:~# mount ... /dev/sda1 on /mnt type ext4 (rw,sync,relatime,barrier=1,data=ordered)
- now let's samba:
root@QQ:~# mkdir /mnt/share root@QQ:~# opkg install samba3
- edit /etc/config/samba
config samba
        option 'name'                   'QQ'     
        option 'workgroup'              'openwrt'
        option 'description'    'QQ NAS' 
        option 'homes'                  '0'  
config sambashare
        option 'name'                   'share'      
        option 'path'                   '/mnt/share'
        option 'read_only'              'read'
        option 'guest_ok'               'yes'
        option 'create_mask'    '0700'
        option 'dir_mask'               '0700'
        #option 'users'                 'abc'- and enable the samba server:
root@QQ:~# /etc/init.d/samba enable root@QQ:~# /etc/init.d/samba start root@QQ:~#
- you can now put all the stuff that you want to share inside the harddisk's 'share' directory   
Troubleshooting
external hard disk not mounted
- If you cannot access the samba mount from a PC or if by issuing the mount command the drive does not show up in the list then edit /etc/init.d/fstab and add a "sleep 15" command in the start() function as follows:
start() {                                                                           
        . /lib/functions/mount.sh                                                   
                                                                                    
        sleep 15                                                                    
                                                                                    
        config_load fstab                                                           
        mkdir -p /var/lock                                                          
        lock -w /var/lock/fstab.lck && {                                            
                lock /var/lock/fstab.lck                                                                                        
                [ -e /tmp/fstab ] || {                                                                                          
                        echo '# WARNING: this is an auto generated file, please use uci to set defined filesystems' > /tmp/fstab
                }                                                                                                               
                lock -u /var/lock/fstab.lck                                                                                     
        }                                                                                                                       
        config_foreach do_swapon swap                                                                                           
        config_foreach do_mount mount                                                                                           
        config_foreach do_swapon swap  # do swap a second time so that swap on filesystems is enabled                           
}                    

 
  
 




