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.