Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
public:ltsp:raspberry [2015/03/23 09:33] – angelegt jankow@datenkollektiv.netpublic:ltsp:raspberry [2015/03/26 16:06] (aktuell) – [Kernel und Firmware auf die SD-Karte kopieren] jankow@datenkollektiv.net
Zeile 1: Zeile 1:
 ====== Raspberry Pi als LTSP Thinclient verwenden ====== ====== Raspberry Pi als LTSP Thinclient verwenden ======
 +
 +Der Raspberry Pi eignet sich mit einigen kleinen Einschränkungen ideal als LTSP-Client. Da der Raspberry Pi jedoch nicht über PXE booten kann, müssen die Clients ein kleines eigenes Image bekommen, das den Kernel und ggf. auch das ganze System bootet.
 +
 +Dazu gibt es zwei verschiedene Ansätze:
  
 ===== Berry Terminal ===== ===== Berry Terminal =====
  
 +Innerhalb der [[http://sourceforge.net/projects/berryboot/|Berryboot]] Umgebung, einer Möglichkeit auf einfache Weise eine Multibootumgebung für den Raspberry einzurichten, gibt es ein fertiges Image Namens [[http://berryterminal.com/doku.php|Berry-Terminal]].
 +
 +Diese stellt out of the Box einen ldm-Server bereit, der sich mit einer per dhcp aufgefundenen LTSP-Umgebung verbindet.
 +
 +Bei Berry Boot ist das komplette Image auf der SD-Karte des Raspberries, was einige Einschränkungen mit sich bringt:
 +
 +  * keine lokalen Applikationen möglich
 +  * Beim Umdate immer Update des Images nötig.
 +  * keine zentrale Konfiguration über lts.conf
  
 ===== Nativer LTSP-Client ===== ===== Nativer LTSP-Client =====
  
-http://cascadia.debian.net/trenza/Documentation/raspberrypi-ltsp-howto/+Alternativ kann auch eine LTSP-Umgebung für die armhf-Architektur wie gewohnt auf dem Server eingerichtet werdenDer einzige Unterschied ist, dass aufgrund der mangelnden PXE-Unterstützung, der Kernel auf der SD-Karte des Raspberries residieren muss.
  
-Gnupg-Keyring für LTSP-Build Environment anlegen+Vorteil dieses Verfahrens:
  
-Raspian-Gpg-Key suchen+  * Lokale Apps möglich 
 +  * zentrale Konfiguration über die lts.conf im ltsp-chroot auf dem Server 
 + 
 +==== Raspberry Pi Modelle ==== 
 + 
 +=== Version 1 === 
 + 
 +Die hier beschriebene Anleitung funktioniert so weit allein das Starten des ldm macht noch Probleme FIXME 
 + 
 +=== Version 2 === 
 + 
 +Mit dem Raspberry Pi 2 gibt es noch Probleme augrund des fehlenden aufs Modules in dem Raspberry-Standard Kernel. (vgl.: https://pi-ltsp.net/advanced/kernels.html) 
 + 
 +Hier muss ein eigener Kernel gebaut werden: 
 + 
 +  * http://rpitc.blogspot.co.uk/p/kernel-rebuild.html 
 + 
 +==== Vorbereitung und Konfiguration ==== 
 + 
 +Hinweise und Links: 
 +  * http://cascadia.debian.net/trenza/Documentation/raspberrypi-ltsp-howto/ 
 +  * https://pi-ltsp.net/ 
 +  * https://raw.githubusercontent.com/PiNet/PiNet/master/pinet 
 +  * http://pinet.org.uk 
 +  * https://wiki.debian.org/DebianEdu/LTSPArm 
 +  * https://wiki.debian.org/RaspberryPi
  
-  gpg --search-keys 90FDDD2E 
-  gpg --export 90FDDD2E >> /etc/ltsp/raspbian.public.key.gpg 
      
 Benötigte Packete: Benötigte Packete:
Zeile 19: Zeile 55:
   apt-get install ltsp-server qemu-user-static binfmt-support ldm-server   apt-get install ltsp-server qemu-user-static binfmt-support ldm-server
  
-Create an alternate configuration file, /etc/ltsp/ltsp-raspbian.conf:+Außer qemu-user-static und binfmt-support, die für die Cross-Plattform-Unterstützung nötig sind, sollte alles auf einem laufenden LTSP-Server bereits installiert sein. 
 + 
 +Jetzt brauchen wir noch den gnupg-Key der Raspian Debian Binaries und müssen diesen in einen Keyring exportieren, der von der LTSP-Build-Umgebung genutzt werden kann: 
 + 
 +Raspian-Gpg-Key suchen und importieren: 
 + 
 +  gpg --search-keys 90FDDD2E 
 +  # jetzt die Nummer des gefundenen Keys zum Importieren angeben 
 + 
 +In einen extra Keyring exportieren: 
 + 
 +  gpg --export 90FDDD2E >> /etc/ltsp/raspbian.public.key.gpg 
 + 
 +Wir benötigen noch eine eigene ltsp-Konfiguration mit Angaben für den speziellen Raspian Kernel und den Keyring: 
 + 
 +<file text /etc/ltsp/ltsp-raspbian.conf> 
 +DEBOOTSTRAP_KEYRING=/etc/ltsp/raspbian.public.key.gpg 
 +DIST=wheezy 
 +# For alternate raspbian mirrors, 
 +# see: <http://www.raspbian.org/RaspbianMirrors> 
 +MIRROR=http://archive.raspbian.org/raspbian 
 +SECURITY_MIRROR=none 
 +KERNEL_PACKAGES=linux-image-3.2.0-4-rpi 
 +</file> 
 + 
 +<WRAP center round important> 
 +Der Raspberry Pi 2 mit Quadcore hat eine andere Prozessorarchitektur als das ältere Modell. Entsprechend muss für diese Geräte ein passender Kernel ausgewählt werden: 
 + 
 +Z.B.: 
 +  KERNEL_PACKAGES=linux-image-3.18.0-trunk-rpi2 
 +</WRAP> 
 + 
 +==== Client Image bauen und ggf. konfigurieren ==== 
 + 
 +Jetzt kann das Client Image wie gewohnt für LTSP gebaut werden: 
 + 
 +  ltsp-build-client --arch armhf --config /etc/ltsp/ltsp-raspbian.conf 
 + 
 +Für den Fall, dass die ltsp-chroots per nfs exportiert werden (bei Debian Wheezy der default) und nicht squashfs-Images per nbd, liegt die ''lts.conf'' Konfiguration unter /opt/ltsp/ARCH/etc/lts.conf, wobei ARCH in diesem FAll mit armhf ersetzt werden muss. 
 + 
 +Das bedeutet, das für jede Konfiguration eine eigene lts.conf existiert. Evtl. lässt sich das durch symlinks aber auch zentralisieren. 
 + 
 +==== Kernel und Firmware auf die SD-Karte kopieren ==== 
 + 
 +Wir benötigen nun die Raspbian-Firmware Dateien. Dazu benötigen wir ein aktuelles Raspian Image, das wir als loopdevice mounten und die Firmwaredateien kopieren. 
 + 
 +  http://www.raspberrypi.org/downloads. Dieses Howto nutzt: 2015-02-16-raspbian-wheezy.zip 
 + 
 +Nach dem Download entpacken wir die Zip-Datei und Mounten Sie folgendermassen: 
 + 
 +  mkdir -p /tmp/rpi 
 +  mount -o loop,offset=$((512*8192)) 2013-02-09-wheezy-raspbian.img /tmp/rpi 
 + 
 +Jetzt benötigen wir die SD-Karte für den Raspberry und mounten sie: 
 + 
 +  mount /dev/sdX1 /mnt 
 +(sdX mit dem Device der SD-Karte ersetzen) 
 + 
 +Kopieren der Firmware-Dateien aus dem Raspberry-Image: 
 + 
 +  cp -r /tmp/rpi/* /mnt/ 
 +  umount /tmp/rpi 
 + 
 +Und jetzt kopieren wir noch den Kernel und die Initrd: 
 + 
 + cp -vb /opt/ltsp/armhf/boot/vmlinuz-3.2.0-4-rpi /mnt 
 + cp -vb /opt/ltsp/armhf/boot/initrd.img-3.2.0-4-rpi /mnt 
 + 
 +Wir müssen noch die Datei ''cmdline.txt'' editieren, damit der Kernel die richtigen Kerneloptinen bekommt. Hier muss auch die IP-Adresse des LTSP-Servers angegeben werden: 
 + 
 +Mit sed: 
 +  LTSP_SERVER=192.168.0.1 # durch eigene IP-Adresse ersetzen 
 +   
 +  sed -i -e 's,root=.*rootfstype=ext4,boot=nfs init=/sbin/init-ltsp nfsroot='$LTSP_SERVER':/opt/ltsp/armhf,g' /mnt/cmdline.txt 
 + 
 +Zuletzt editieren wir noch die config.txt, sozusagen das Bios des Raspberries, und geben hier den verwendeten Kernel und Initramdisk an (bei anderem Kernel entsprechend anpassen): 
 + 
 +  echo 'kernel=vmlinuz-3.2.0-4-rpi' >> /mnt/config.txt 
 +  echo 'ramfsfile=initrd.img-3.2.0-4-rpi' >> /mnt/config.txt 
 +  echo 'ramfsaddr=0x00800000' >> /mnt/config.txt 
 + 
 +Für das Modell 2 muss als ramfsaddr folgendes eingetragen werden: 
 + 
 +  ramfsaddr=-1 
 + 
 +(vgl. auch: https://github.com/raspberrypi/linux/issues/863)
  
- DEBOOTSTRAP_KEYRING=/etc/ltsp/raspbian.public.key.gpg +[[http://creativecommons.org/licenses/by-sa/3.0/deed.de|{{http://i.creativecommons.org/l/by-sa/3.0/88x31.png|}}]]
- DIST=wheezy +
- # For alternate raspbian mirrors, +
- # see: <http://www.raspbian.org/RaspbianMirrors> +
- MIRROR=http://archive.raspbian.org/raspbian +
- SECURITY_MIRROR=none +
- KERNEL_PACKAGES=linux-image-3.2.0-4-rpi+
  
-Build the client image:+Dieser Artikel steht unter der Creative Commons (BY-SA) Linzenz und darf unter gleichen Bedingungen weiter gegeben werden.