Archlinux/Raspberry Pi - Der erste User

Arch Linux auf dem Raspberry Pi installieren

Benötigt:

  • Raspberry Pi
  • Eine SD-Card passend zum Raspberry Pi Modell

Durch die ersten Schritte hilft uns Jan Karres (Seinen Blog kann ich nur empfehlen, zum Thema Raspberry Pi findet man unglaublich viele tolle Anleitungen)

Installation Archlinux

(Schritte 1-8; Schritte 9-11 optional)

Weitere Quellen

Neuen User anlegen

Um nicht immer mit dem root User arbeiten zu müssen, sollte ein neuer User angelegt werden.

User hinzufügen
useradd -m -g group -s /bin/bash username

# -m erstellt ein Home Verzeichnis /home/username
# -g legt die initiale Gruppe des Users fest
#    (gute default Gruppe: users)
# -s legt die beim Login auszuführende Shell fest
Password setzen
passwd username

Quelle ArchWiki - User & Groups

Rootrechte/ Sudoers für neuen User

Da wir in Zukunft den angelegten User auch mit root Rechten verwenden wollen, müssen wir ihm ermöglichen den Befehl sudo auszuführen. Hierzu muss die Datei /etc/sudoers angepasst werden. Zur Sicherheit wird dies über ein Programm gemacht, welches nach dem Editieren die Syntax prüft. Aber zunächst muss sudo noch installiert werden….

Installation sudo
pacman -Syu sudo

Nun geht es weiter: Bearbeitung /etc/sudoers

EDITOR=nano visudo

Setzen des Editors ist optional, wenn man mit vi klar kommt

Um einem User nun in dieser Datei die Rechte einzuräumen, braucht man nur folgendes hinzufügen:

USER_NAME ALL=(ALL) ALL
Siehe auch Archlinux Wiki Sudo

Archlinux/Raspberry Pi - Wifi connection

WLAN connection with EDiMAX EW-7811Un

Installation

#Installation Stick
pacman -Sy dkms-8192cu

#Verbindung herstellen
wpa_passphrase SSID PASSWORD > /etc/wpa_supplicant/wpa_supplicant.conf
wpa_supplicant -i wlan0 -D wext -c /etc/wpa_supplicant/wpa_supplicant.conf -B

#Aktiviere DHCP Client
dhcpcd wlan0

Kill connection:

killall wpa_supplicant

Quellen

Archlinux/Raspberry Pi - Systemd create a service unit

General example

/etc/systemd/system/testunit.service
[Unit]
Description=Start Pi Router
[Install]
WantedBy=multi-user.target
[Service]
Type=simple
ExecStart=/sbin/testscript.sh start
ExecStop=/sbin/testscript.sh stop
/sbin/testscript.sh
#!/bin/sh

echo $(date "+%Y.%m.%d-%H.%M.%S") $*>>/var/log/test_tmp.log
/sbin/testscript2.sh
#!/bin/sh

echo $(date "+%Y.%m.%d-%H.%M.%S") $*>>/var/log/test_tmp.log

Example script for starting access point & PPP & NAT:

/etc/systemd/system/pirouter.service
[Unit]
Description=Start Pi Router
[Install]
WantedBy=multi-user.target
[Service]
Type=simple
ExecStart=/sbin/testscript.sh start
ExecStop=/sbin/testscript.sh stop

Download: pirouter.service

/sbin/testscript.sh
#!/bin/sh
#=== Start Function ===
function start {
    echo "Starte AP..."
    hostapd -B /etc/hostapd/hostapd.conf
    echo "ERROR-CODE: $?"
    echo "Vergebe IP an wlan0 interface"
    ip addr add 192.168.0.1/16 dev wlan0
    echo "ERROR-CODE: $?"
    sleep 5
    echo "Starte DHCP Server..."
    dnsmasq
    echo "ERROR-CODE: $?"
    sleep 5
    echo "Aktiviere ip_forward..."
    echo 1 > /proc/sys/net/ipv4/ip_forward
    echo "ERROR-CODE: $?"
    echo "Aktiviere IPTables Nat Routing..."
    iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
    echo "ERROR-CODE: $?"
    echo "USB_modeswitch for usb device..."
    usb_modeswitch -c /etc/usb_modeswitch.d/1c9e:f000
    echo "ERROR-CODE: $?"
    echo "Start ppp Connection..."
    sakis3g --sudo  "connect" OTHER="USBMODEM" USBMODEM="1c9e:9605" APN="surfo2" SIM_PIN="PINCODE"
    echo "ERROR-CODE: $?"
    echo "pirouter started"
    exit 0
}
#=== Stop Function ===
function stop {
    echo "Stop DNS Server..."
    sudo killall dnsmasq
    echo "Stop AP..."
    sudo killall hostapd
    echo "Disconnect ppp Connection..."
    sakis3g --sudo "disconnect"
    exit 0
}
#=== MAIN ===
#echo $(date "+%Y.%m.%d-%H.%M.%S") $*>>/var/log/test_tmp.log
echo "Execute piroute.sh $*"
case $1 in
  start) start ;;
  stop) stop ;;
  *) echo "Unbekanntes Kommando $1" ;;
esac
exit 0

Download: pirouter.sh

Quellen:

Archlinux/Raspberry Pi - Einrichtung UMTS Stick XS Stick P10

Am einfachsten können wir ein Script benutzen, dass nahezu alle UMTS Sticks unterstützt, so auch den XS Stick P10 von Callmobile (Amazon 10-15€).

USB_SWITCHMODE

Wenn der Stick angesteckt ist, schauen wir zunächst ob er erkannt wurde

lsusb
    Bus 001 Device 005: ID 7392:7811 Edimax ...
    Bus 001 Device 004: ID 1c9e:f000 OMEGA TECHNOLOGY
    Bus 001 Device 004: ID 046d:c52b Logitech, ...
    Bus 001 Device 003: ID 0424:ec00 Standard ...
    Bus 001 Device 002: ID 0424:9514 Standard ...
    Bus 001 Device 001: ID 1d6b:0002 Linux ...

Es geht um den Eintrag 1c9e:f000 OMEGA TECHNOLOGY das ist der UMTS-Stick, jedoch nicht so wie wir ihn haben wollen. Der Stick wird als Massenspeicher erkannt, dies müssen wir anpassen. Dazu installieren wir das Tool usb_modeswitch:

pacman -S usb_modeswitch

Damit usb_modeswitch erkennt was es tun soll, fügen wir unseren Stick den Konfigurationen hinzu, folgendes muss der Datei /lib/udev/rules.d/40-usb_modeswitch.rules hinzugefügt werden:

nano /lib/udev/rules.d/40-usb_modeswitch.rules
 # XS Stick P10
ATTR{idVendor}=="1c9e", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '%b/%k'"

Durch erneutes Einstecken des Sticks wird der Stick nun richtig erkannt.

lsusb
    Bus 001 Device 005: ID 7392:7811 Edimax ...
    Bus 001 Device 004: ID 1c9e:9605 OMEGA TECHNOLOGY
    Bus 001 Device 004: ID 046d:c52b Logitech, ...
    Bus 001 Device 003: ID 0424:ec00 Standard ...
    Bus 001 Device 002: ID 0424:9514 Standard ...
    Bus 001 Device 001: ID 1d6b:0002 Linux ...
Sollte der Stick nicht richtig erkannt worden sein, schaut euch diese Beschreibung an, ich kann mich leider nicht mehr erinnern, warum ich zwei Anleitungen hatte.

Quellen

Linux and Life - Make USB 3G work

Sakis3g

Nun können wir uns der eigentlichen Aufgabe stellen, der ppp Verbindung. Hierzu benutzen wir das Script Sakis3g.

Installation
pacman -S ppp
#download sakis3g
sudo wget "http://www.sakis3g.com/downloads/sakis3g.tar.gz" -O sakis3g.tar.gz
#untar sakis3g
tar -xzvf sakis3g.tar.gz
#move script to /sbin
mv files/fgsvmqk3jv8ajq2673u21hkbh4/targz/sakis3g /sbin/sakis3g
#clean directory
rm -rf files sakis3g.tar.gz
#make sakis3g executable
chmod +x /sbin/sakis3g

Nun können wir das Skript benutzen und uns durch die interaktive “Oberfläche” schlängeln…

sakis3g --interactive

Damit ist eine Verbindung hergestellt. Diese Eingaben können auch über einen Inlinecall erfolgen:

#sakis3g muss mit rootrechten ausgeführt werden, da es ansonsten nicht agieren kann.
sakis3g --sudo  "connect" OTHER="USBMODEM" USBMODEM="1c9e:9605" APN="surfo2" SIM_PIN="PINCODE"

Falls andere Einstellungen benutzt werden sollen, hilft sakis3g bei einem Commandlinecall nach, wenn eine Information fehlt. Gerne selber testen…

Quellen: http://www.sakis3g.com/


Einrichtung NAT zwischen AccessPoint und UMTS Stick

Hier brauchen wir nicht mehr viel tun, als die vorbereiteten Verbindungen aneinander zu hängen:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Quellen: ArchWiki - Sharing PPP Connection

Archlinux/Raspberry Pi - Network Bridge

Setup a network bridge under archlinux

Archlinux Wiki - Network Bridge

#Connects eth0 and eth1 to a bridge
sudo brctl addbr br0
sudo brctl addif br0 eth0
sudo brctl addif br0 eth1
brctl show
sudo ip link set up dev br0

Attention: the network connection from the used devices will stop working. do not setup bridge from remote

This is creation of a network bridge works with wired interfaces. every wireless connection breaks after a few minutes. Don’t know the specific reason.