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 :)

No Comments

Leave a Reply

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

* Checkbox GDPR is required

*

I agree

Software
Importing playlists to Jellyfin media server

In the following post I would like to describe a way to import music playlists to Jellyfin media server, for example in case you want to migrate them from a former Plex or Emby installation. Usually, Jellyfin is already able to detect playlist files within the media library. Unfortunately my …

Software
Jellyfin media server on Archlinux ARM

In this post, I want to share some insights on building Jellyfin media server for Archlinux ARM. The PKGBUILD for Jellyfin one can find on the AUR, is specifically made for 64 bit architectures. Nevertheless Microsoft released the dotnet runtime, which Jellyfin relies on instead of Mono, also for Linux …

Software
2
Voice control Archlinux with Amazon Alexa

I was interested to see how commercial voice recognition software would behave on an usual Linux laptop and tried to deploy an Amazon Alexa instance. There are some installation scripts and tutorials available for Ubuntu and Raspberry PI using the avs-device-sdk from Github. Even though some of them are official …