MasterKit – SW 2019-03-16

Ve stavebnici je již obsažena předpřipravená karta s OS Raspbian a potřebným softwarem (včetně demo dat) pro snadné spuštění. Tato je založena na aktuálním Raspbianu verze 2018-11-13 Full.

Software z této verze není k dispozici pro stažení – ještě bude upraven a k dispozici pak bude až novější verze.

Příprava obrazu

Veškeré nastavení je potřeba provádět pod uživatelem root. Přepnout na tohoto uživatele lze v základním obrazu přes příkaz sudo.

sudo -i

Po prvním spuštění je potřeba upravit základní nastavení pomocí nástroje raspi-config. V tomto nástroji je třeba vypnout login shell na sériovém portu a zapnout tento port pro běžnou komunikaci.

raspi-config

Následně je potřeba získat aktuální Raspbian:

apt-get update
apt-get upgrade

Po aktualizaci je nutné Raspberry restartovat, jinak může dojít k problémům s instalací dalšího softwaru.

reboot

Nyní již lze zbylé nastavení ponechat na automatickém skriptu. Pouze během instalace balíčku iptables-persistent se objeví dotaz, zda chcete uložit aktuální pravidla firewallu – zvolte Yes, jinak by nedošlo k uložení již nastavené maškarády pro přístup z WiFi hotspotu (a po restartu by se automaticky znovu nenačetla).

#!/bin/sh
# Install script for MasterKit RasPI image 2019-03-16

# Check if run under root
if [ "`whoami`" != 'root' ]; then
  echo "Please, run as root!"
  exit 1;
fi

echo 'Root-check OK'


### Basic configuration
### ===================
echo
echo 'Basic configuration'

# Hostname
HOSTNAME='master-kit'

echo "Changing hostname to '$HOSTNAME' ..."
hostname "$HOSTNAME"
echo "$HOSTNAME" > /etc/hostname
echo ' DONE'

# Enable SSH server
echo "Enabling SSH server ..."
systemctl enable ssh.service
echo ' DONE'


### Basic software
### ==============
echo
echo 'Installing basic software (BashCompletion, HTop, Midnight Commander) ...'
apt-get install -y bash-completion htop mc
echo ' DONE'


### Change default password
### =======================
PASS='allcomp.cz'

echo
echo "Changing default password for user pi to '$PASS' ..."
echo "pi:$PASS" | chpasswd
echo ' DONE'


### Wireless hotspot & routing
### ==========================
echo
echo 'Setting-up hotspot & routing'

# Install SW
echo 'Installing required software ...'
apt-get install -y dnsmasq hostapd
echo ' DONE'

# Configure hostapd
echo 'Configuring hostapd ...'

echo 'interface=wlan0' > /etc/hostapd/hostapd.conf
echo 'driver=nl80211' >> /etc/hostapd/hostapd.conf
echo 'ssid=MasterKit' >> /etc/hostapd/hostapd.conf
echo 'hw_mode=g' >> /etc/hostapd/hostapd.conf
echo 'channel=7' >> /etc/hostapd/hostapd.conf
echo 'wmm_enabled=0' >> /etc/hostapd/hostapd.conf
echo 'macaddr_acl=0' >> /etc/hostapd/hostapd.conf
echo 'auth_algs=1' >> /etc/hostapd/hostapd.conf
echo 'ignore_broadcast_ssid=0' >> /etc/hostapd/hostapd.conf
echo 'wpa=2' >> /etc/hostapd/hostapd.conf
echo "wpa_passphrase=$PASS" >> /etc/hostapd/hostapd.conf
echo 'wpa_key_mgmt=WPA-PSK' >> /etc/hostapd/hostapd.conf
echo 'wpa_pairwise=TKIP' >> /etc/hostapd/hostapd.conf
echo 'rsn_pairwise=CCMP' >> /etc/hostapd/hostapd.conf

echo >> /etc/default/hostapd
echo 'DAEMON_CONF="/etc/hostapd/hostapd.conf"' >> /etc/default/hostapd

echo ' DONE'

# Configure dnsmasq
echo 'Configuring dnsmasq ...'

echo '192.168.124.1     master-kit' > /etc/dnsmasq.hosts
echo '192.168.124.1     island' >> /etc/dnsmasq.hosts

echo >> /etc/default/dnsmasq
echo 'DNSMASQ_OPTS="-h -H /etc/dnsmasq.hosts"' >> /etc/default/dnsmasq

echo 'interface=wlan0' > /etc/dnsmasq.conf
echo '	dhcp-range=192.168.124.100,192.168.124.200,255.255.255.0,24h' >> /etc/dnsmasq.conf

echo >> /etc/dhcpcd.conf
echo >> /etc/dhcpcd.conf
echo 'interface wlan0' >> /etc/dhcpcd.conf
echo '	static ip_address=192.168.124.1/24' >> /etc/dhcpcd.conf
echo '	nohook wpa_supplicant' >> /etc/dhcpcd.conf

echo ' DONE'

# Enable routing
echo 'Enabling routing ...'
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/ipv4_forward.conf
echo ' DONE'

# Reload systemd
echo 'Daemon-reloading systemd ...'
systemctl daemon-reload
echo ' DONE'

# Un-mask & enable hostapd service
echo 'Unmasking & enabling hostapd service ...'
systemctl unmask hostapd.service
systemctl enable hostapd.service
echo ' DONE'

# NAT
echo 'Setting-up NAT ...'
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo ' DONE'

# Make firewall rules persistent (e.g. auto-load current rules during boot)
echo 'Persistent firewall rules ...'
apt-get install -y iptables-persistent
echo ' DONE'


### Finish
### ======

# Enable Chromium auto-start when run in desktop image
if dpkg-query -s lxde &> /dev/null; then
	mkdir -p /home/pi/.config/lxsession/LXDE-pi
	cp /etc/xdg/lxsession/LXDE-pi/autostart /home/pi/.config/lxsession/LXDE-pi/autostart
	echo '@chromium-browser http://localhost/welcome' >> /home/pi/.config/lxsession/LXDE-pi/autostart
fi

# End
echo 'Basic installation finished successfully.'

Po dokončení je potřeba Raspberry opět restartovat, aby došlo ke spuštění všech služeb. Pokud budete nicméně instalovat další software, viz. níže, tak lze restartovat až nakonec.

reboot

Požadovaný software a knihovny

Software je složen z několika částí (viz. MasterKit pro pokročilé). Pro běh řídicího serveru a komunikace po sběrnici jsou třeba následující DEB balíčky (DB klient je třeba jen pro nahrání počátečních dat během instalace):

default-jre
libgcj15
mariadb-server
mariadb-client

Pro webovou aplikaci je pak třeba ještě webserver a PHP interpret, tj. celkově potřebuje:

apache2
mariadb-server
mariadb-client
php
php-mysql

Pokud byste chtěli SW přesunout na jinou kartu, je třeba přesunout celý adresář /opt/allcomp. Rovněž je potřeba udělat zálohu databází z MariaDB. Následně je možné pro instalaci použít skript níže.

#!/bin/sh
# Install script for MasterKit software 2019-03-16

# Check if run under root
if [ "`whoami`" != 'root' ]; then
  echo "Please, run as root!"
  exit 1;
fi

echo 'Root-check OK'


### Install SW
### ==========
echo
echo 'Install SW'

echo 'Installing required software (LAMP stack) ...'
apt-get install -y apache2 mariadb-server mariadb-client php php-mysql
echo ' DONE'

echo "Disabling Apache's default VirtualHost ..."
a2dissite 000-default
systemctl reload apache2
echo ' DONE'

echo 'Installing required software (Java runtime & library) ...'
apt-get install -y default-jre libgcj15
echo ' DONE'


### Prepare DB
### ==========
echo
echo 'Preparing DBs'

# SHS
echo 'Preparing DB (shs) - loading schema ...'
mysql < /opt/allcomp/revolution/shs/DB.sql
echo ' DONE'

echo 'Preparing DB (shs) - creating user ...'
mysql < /opt/allcomp/revolution/shs/DB-user.sql
echo ' DONE'


# Web
echo 'Preparing DB (web) - loading schema ...'
mysql < /opt/allcomp/revolution/web/DB.sql
echo ' DONE'

echo 'Preparing DB (web) - creating user ...'
mysql < /opt/allcomp/revolution/web/DB-user.sql
echo ' DONE'


### Set-up systemd services
### =======================
echo
echo 'Setting-up systemd services'

echo 'Symlinking services ...'
ln -s /opt/allcomp/revolution/shs/allnet.service /etc/systemd/system/allnet.service
ln -s /opt/allcomp/revolution/shs/shs.service /etc/systemd/system/shs.service
echo ' DONE'

# Reload systemd
echo 'Daemon-reloading systemd ...'
systemctl daemon-reload
echo ' DONE'

# Enable services
echo 'Enabling services ...'
systemctl enable shs.service
echo ' DONE'


### Set-up Web
### ==========
echo
echo "Setting-up Web"

# SHS Web
echo "Setting-up Apache's VirtualHost ..."
ln -s /opt/allcomp/revolution/web/shs.conf /etc/apache2/sites-enabled/shs.conf
systemctl reload apache2
echo ' DONE'

# Welcome page
echo "Setting-up Welcome page ..."
ln -s /opt/allcomp/master-kit/welcome.conf /etc/apache2/sites-enabled/welcome.conf
a2enmod rewrite
systemctl reload apache2
echo ' DONE'

Po jeho skončení je potřeba nahrát zálohu databáze do MariaDB a následně restartovat Raspberry.

reboot

Nastavení

Veškerý software je v adresáři /opt/allcomp. Mimo něj jsou pouze symbolické odkazy pro Apache konfiguraci a pro systemd služby. Konfigurace jsou umístěny vždy u daného SW, tj. především v souborech a adresářích níže.

/opt/allcomp/revolution/shs/config/
/opt/allcomp/revolution/web/www/config.php
/opt/allcomp/revolution/web/www/admin/config.php

Heslo pro WiFi hotspot a další nastavení jsou v souborech:

/etc/default/dnsmasq
/etc/default/hostapd
/etc/dhcpcd.conf
/etc/dnsmasq.conf
/etc/dnsmasq.hosts
/etc/hostapd/hostapd.conf
/etc/sysctl.d/ipv4_forward.conf