EXT4-USB-Storage sharing mit OpenWRT auf WL-600g

Um dauerhaft Speicherplatz und einen Drucker im Netzwerk freizugeben, ohne einen umfangreicheren Server einzusetzen, habe ich mich entschieden bei Ebay, für gerade mal ~15€, einen Asus WL-600g ADSL-Wifi-Router zu ersteigern. Gerade auch deshalb, um OpenWRT als offene Firmware darauf zu installieren, die es ermöglicht auch EXT4-Dateisysteme in Form einer angeschlossenen externen Festplatte einzubinden und freizugeben.
Angenommen, man hat gleich zu beginn den Router mit einer fehlerhaften Firmware-Version gebrickt, kann man relativ einfach im “Recieve-Mode” des Routers weiterhin unterschiedliche Images zum flashen ausprobieren.
Dazu hält man den Resetknopf des Routers wärend des anschalten eine Weile gedrückt, bis die Power-LED anfängt zu blinken. Mit einem per LAN angeschlossenen PC lassen sich dann folgende Befehle ausführen:

sudo ifconfig eth0 192.168.1.3
atftp 192.168.1.1
tftp>put openwrt-96348GW-generic-squashfs-cfe.bin
tftp>quit

In diesem Beispiel muss sich das Image openwrt-96348GW-generic-squashfs-cfe.bin von Backfire 10.03.1-rc4 im selben Ort befinden, in dem auch der atftp-Client ausgeführt wird.
Laut den gängigen Tutorials sollte man nun ca. 5 min. warten, bis das Image in den Flash-Speicher geschrieben wurde, danach kann man den Router neustarten und erreicht diesen nach kurzer Zeit auch über Telnet:

telnet 192.168.1.1
BusyBox v1.15.3 (2010-11-11 23:54:31 PST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 Backfire (10.03.1-rc4, r24045) --------------------
  * 1/3 shot Kahlua    In a shot glass, layer Kahlua 
  * 1/3 shot Bailey's  on the bottom, then Bailey's, 
  * 1/3 shot Vodka     then Vodka.
 ---------------------------------------------------
root@OpenWrt:~# passwd root
Changing password for root
New password:
Retype password:
Password for root changed by root
exit

Als nächstes kann man sämtliche notwendige USB-Module installieren, nachdem der Internetzugang für das Gerät konfiguriert ist:

ssh root@192.168.1.1
root@OpenWrt:~# vi /etc/config/network
# in dieser Datei kann folgender Abschnitt wie folgt angepasst werden:
#config interface lan
#        option type     bridge
#        option ifname   eth1
#        option proto    static
#        option ipaddr   192.168.1.2
#        option netmask  255.255.255.0
#        option gateway  192.168.1.1
#        option nat      1
root@OpenWrt:~# echo "192.168.1.1 DSLMODEM" >> /etc/hosts
# der nameserver wird gesetzt, dazu sollte man auch noch ein startup-script anlegen!
root@OpenWrt:~# echo "nameserver 192.168.1.1" > /etc/resolv.conf
# ohne reboot schonmal routing setzen:
root@OpenWrt:~# route add default gw 192.168.1.1
root@OpenWrt:~# ifconfig br-lan 192.168.1.2

Trying to ping google …

ssh root@192.168.1.2
root@OpenWrt:~# ping google.com
PING google.com (209.85.148.104): 56 data bytes
64 bytes from 209.85.148.104: seq=0 ttl=56 time=46.284 ms
64 bytes from 209.85.148.104: seq=1 ttl=56 time=46.569 ms
^C
--- google.com ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 46.284/46.426/46.569 ms
# jetzt Paketquellen aktualisieren!
root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install kmod-usb2 kmod-usb-storage kmode-fs-ext4
# Sollte sich alles problemlos installiert haben, sollte in dmesg die Festplatte beim anschließen erkannt worden sein!
# Folgender Befehl sollte auch die ext4-Partition auflisten:
root@OpenWrt:~# fdisk -l
root@OpenWrt:~# mkdir /mnt/externe
root@OpenWrt:~# mount /dev/sda1 /mnt/externe
root@OpenWrt:~# ls -la /mnt/externe
# done! :)

Für die Installation des Samba-Servers hatte der Asus-Router selbst keinen Speicherplatz mehr, deswegen richten wir nun einen Platz für die Samba-Installation auf der externen Festplatte ein:

root@OpenWrt:~# mkdir /mnt/externe/openwrt
root@OpenWrt:~# echo "dest externe /mnt/externe/openwrt" >> /etc/opkg.conf
opkg -d externe -V2 install samba-common samba-server samba3
# nun müssen wir die externe Installation in unser Root-FS linken, dafür gibt es ein Script!:
root@OpenWrt:~# cd /bin
root@OpenWrt:~# wget http://onny.project-insanity.org/files/opkg-link
root@OpenWrt:~# chmod a+x opkg-link
root@OpenWrt:~# opkg-link add samba-server
root@OpenWrt:~# /etc/init.d/samba start
# done! ;)

Es kann vorkommen, dass sich opkg aus unerklärlichen Gründen “killed”, in dem Fall kann man die Pakete samt dessen abhängigkeiten auch manuell laden und installieren: http://downloads.openwrt.org/backfire/10.03.1-rc4/brcm63xx/packages/.
Und so sieht meine Samba-Konfigurationsdatei aus, wenn die komplette Festplatte mit Lese- und Schreibrechten für Gäste freigegeben werden soll:

root@OpenWrt:~# cat /etc/samba/smb.conf 
[global]
 syslog = 0
 syslog only = yes
 workgroup = LAN
 server string = OpenWrtServer
 security = share
 encrypt passwords = yes
 guest account = nobody
 local master = yes
 name resolve order = lmhosts hosts bcast
 unix charset = UTF-8
[externe]
 comment = /mnt/externe
 path = /mnt/externe
 browseable = yes
 public = yes
 writeable = yes

Es kann aber auch ein Benutzer angelegt werden, der sich bei der Samba-Freigabe authentifizieren muss:

root@OpenWrt:~# smbpasswd samba password
# die Freigabe in der Samba-Konfiguration würde dann so aussehen:
[externe]
  users = samba
 comment = /mnt/externe
 path = /mnt/externe
 browseable = yes
 writeable = yes
# Die Änderungen werden dann übernommen mit:
root@OpenWrt:~# /etc/init.d/samba restart

Soweit so gut. Mal sehen ob ich diese Konfiguration, sobald sie sich im dauerhaften Einsatz bewährt, statisch eintrage, d.h. fstab-Eintrag anlegen und ein Startup-Script für opkg-link sowie den Samba-Daemon.
Aber als nächstes erstmal USB-Druckerfreigabe mit Cups, Blogeintrag folgt :)

💬 Are you interested in our work or have some questions? Join us in our public Signal chat pi crew 👋
🪙 If you like our work or want to supprot us, you can donate MobileCoins to our address.

Leave a Reply

Your email address will not be published. Required fields are marked *