MachinePi Image

Aus piCastle
Zur Navigation springen Zur Suche springen

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.