MachinePi Image
Allgemein
Hier wird erklärt, wie die das Betriebssystem-Image für einen MachinePi erstellt wird.
Kopieren des Grundimages
Als Grundimage wird "Raspbian Stretch Lite" vom 2018-06-27 verwendet. Ist die
Datei /var/nfs/iso-images/2018-06-27-raspbian-stretch-lite.zip
nicht vorhanden wird diese von http://www.raspberrypi.org heruntergeladen.
Anschließend wird die Datei entpackt:
unzip 2018-06-27-raspbian-stretch-lite.zip
Nun wird das entpackte Image auf eine SD-Karte kopiert:
dd if=/var/nfs/iso-images/2018-06-27-raspbian-stretch-lite.img of=/dev/sdb bs=1M
Vor dem Booten
Nach dem Kopieren das Laufwerk mit eject /dev/sdb auswerfen, den
Cardreader abziehen und neu einstecken. Unter Ubuntu werden die Partitionen auf
der SD-Karte automatisch gemountet.
Die Datei /cmdline.txt auf der Boot-Partition editieren und dort
die Zeichenketten init=/usr/lib/raspi-config/init_resize.sh und
console=serial0,115200 entfernen. Dies sorgt zum einen dafür das
die Root-Partition beim ersten Booten des Pis nicht auf die maximale Größe der
SD-Karte erweitert wird, sondern klein bleibt. Zum Anderen wird die Ausgabe der
Kernel-Nachrichten auf die serielle Konsole unterdrückt.
Die Datei /config.txt auf der Boot-Partition editieren und dort am
Ende folgende Zeile hinzufügen:
enable_uart=0
Dies sorgt dafür, das die serielle Konsole an den GPIOs 14 und 15 deaktiviert wird diese für andere Dinge verwendet werden können.
Das Keybord-Layout wird auf deutsch umgestellt, indem die Datei
/etc/default/keyboard auf der Root-Partition wie folgt editiert
wird:
XKBLAYOUT="de"
Die Dateien /etc/hostname und /etc/hosts auf der
Root-Partition anpassen und dort die Zeichenkette raspberrypi durch
machinepixx ersetzen.
Datei /etc/ssh/sshd_config auf der Root-Partition editieren und die
folgende Zeile anpassen:
PermitRootLogin yes
Danach den SSH-Dienst aktivieren:
ln -s /lib/systemd/system/ssh.service <root>/etc/systemd/system/multi-user.target.wants/ssh.service
Zeitzone setzen
rm <root>/etc/localtime ln -s /usr/share/zoneinfo/Europe/Berlin <root>/etc/localtime echo "Europe/Berlin" > <root>/etc/timezone
Pi Booten
Das Laufwerk mit eject /dev/sdb auswerfen. Die SD-Karte in einen Pi
stecken und diesen mit Bildschirm und Tastatur und Netzwerk booten. Einloggen mit Benutzer
pi und Passwort raspberry.
Die Passwörter der Benutzer pi und root mit den
Befehlen passwd bzw. sudo passwd ändern.
Die bereits installierten Pakete aktualisieren:
sudo apt update sudo apt dist-upgrade
Noch fehlende Pakete installieren:
sudo apt install wiringpi tmux pigpio
pigpiod einrichten
sudo cp /lib/systemd/system/pigpiod.service /etc/systemd/system sudo nano /etc/systemd/system/pigpiod.service sudo systemctl enable pigpiod.service
System neu starten und als root Benutzer anmelden:
sudo reboot
Docker installieren:
curl -fsSL https://get.docker.com/ | sh
Docker Daemon konfigurieren:
nano /etc/docker/daemon.json
{
"experimental": true
}
systemctl restart docker
MachinePi Tag Service einrichten (var-local-machinepi-tag.mount)
mkdir -p /var/local/machinepi/tag nano /etc/systemd/system/var-local-machinepi-tag.mount systemctl enable var-local-machinepi-tag.mount
MachinePi Update Service einrichten (update.sh, machinepi-update.service)
mkdir -p /usr/local/share/machinepi nano /usr/local/share/machinepi/update.sh chmod +x /usr/local/share/machinepi/update.sh nano /etc/systemd/system/machinepi-update.service systemctl enable machinepi-update.service
MachinePi Tunnel Service einrichten (tunnel.sh, machinepi-tunnel.service)
mkdir -p /usr/local/share/machinepi nano /usr/local/share/machinepi/tunnel.sh chmod +x /usr/local/share/machinepi/tunnel.sh nano /etc/systemd/system/machinepi-tunnel.service systemctl enable machinepi-tunnel.service
Resize der root-Partition wieder eintragen:
nano /boot/cmdline.txt
und dort am Ende der Zeile die Zeichenkette init=/usr/lib/raspi-config/init_resize.sh eintragen
Und den Pi herunterfahren
poweroff
Image erstellen
SD Karte entfernen und mit Cardreader an PC anschließen. Terminal starten und
folgende Befehle als root Benutzer ausführen
umount /dev/sdb1 umount /dev/sdb2 dd if=/dev/sdb of=2018-06-27-machinepi.img bs=1M count=2000 scp 2018-06-27-machinepi-base.img root@server02:/var/nfs/iso-images
Damit ist nun unter /var/nfs/iso-images/2018-06-27-machinepi-base.img das
Basis-Image für den MachinePi vorhanden. Produktivsysteme werden durch das
push-Skript konfiguriert.