= How to make a Samba NAS with an OpenWrt router = This express howto describes how to create a [[https://secure.wikimedia.org/wikipedia/en/wiki/Network-attached_storage|NAS]] to share files inside a network out of an USB-capable OpenWrt router and an external hard drive. {{attachment:tplinknas.jpg||height=300}} {{attachment:tplinkfrombehind.jpg||height=300}} <> == 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 :D == 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 } }}} == Links == * http://wiki.openwrt.org/doc/uci/fstab * http://wiki.openwrt.org/doc/howto/cifs.server * http://wiki.openwrt.org/doc/uci/samba