>> Artikelansicht

08.07.2016 /He [Druckansicht]

Raspberry Pi 3 von USB SSD booten- auch ohne SD-Karte

...Erste Schritte

Raspberry Pi 3 Model B mit SSD unten befestigt Die Verwendung einer SSD(Solid State Disk) für den Raspberry Pi bringt einige Vorteile, unter Anderem durch den Preisverfall eine relativ günstige Speicherplatzaufrüstung jenseits der 128GB einer MicroSD-Karte, wo sich der Preisunterschied richtig bemerkbar macht(Stand 08/2016). Auch kann ich nicht sagen, ob überhaupt mehr als 64GB MicroSD-Karten erkannt werden, mangels Testobjekt. Nach einigen Tests auch mit "normalen" Festplatten hat sich der 4,572cm (1.8") Formfaktor für den Raspberry am geeignetsten herausgestellt. Hierfür wurde nun auch ein Universalhalter entworfen, der sich oben sowie unten am RPI einfach aufstecken lässt(gehalten von 4x Hexagonal M2.5,5.0mm Abstandshülsen). Auch kann die SSD auf unterschiedliche Arten eingeschoben werden. Der Universalhalter soll später auch eine Stromversorgung und weitere Zusatzhardware aufnehmen können, die Datei im STL-Format kann am Ende des Beitrags heruntergeladen und mit einem 3D-Drucker ausgedruckt werden.


Motivation

Wie schon beschrieben, soll eine SSD an den Raspberry Pi über USB angeschlossen werden, die SSD wird über einen Universaladapter einfach von oben oder Unten auf den Raspberry gesteckt und mit einem Kabel mit USB-Stecker oder wer sich die Mühe machen möchte, über Pfostenstecker an den PI angeschlossen. Das ganze ist bis hier noch nichts besonderes aber vor gut 2 Wochen haben die Entwickler des Raspberry Pi eine Softwareerweiterung vorgestellt,mit der es möglich ist, den PI ohne SD-Karte direkt von SSD oder aktuell über Netzwerk zu booten. Darauf haben sicher schon viele gewartet.Hier der Link [https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/]
Derzeit ist die Erweiterung als Experimentell eingstuft und somit noch nicht in der aktuellen Version von Rapsbian enthalten, wie man nun das Ganze erweiter und auf SSD bringt, wird in den nächsten Abschnitten erklärt.Es wird vermutlich nicht lange dauern, bis die Boot Funktion in der regulären Version von Raspien enthalten sein wird, dann kann man diese Anleitung um einiges verkürzen. Doch wer neugierig ist und den Aufwandt nicht scheut, kann das mit dieser Anleitung schon jetzt tun.Vielleicht gibt es auch noch eine elegantere Lösung, aber wie es so schön heisst, wer war zuerst da, die Henne oder das Ei:)Auch ist der Schritt, die eingebaute WiFi-Funktion zu konfigurieren optional.

(1.0) Download und Installation von Raspbian Jessie Lite

Hinweis: Die Anleitung ist für Linux-Systeme.
Vorbereitung:
Speicherkarte MicroSD >=4 GB in Kartrtenleser einlegen.
Annahme: die Speicherkarte kann unter /dev/sdc angesprochen werden.
Wichtig: Falls die Speicherkarte vom Betriebssystem automatisch eingehängt(gemountet) wird, "umount /dev/sdc" in der Konsole eingeben.

(1.1) Download von raspbian-jessie-lite.zip

Download unter:
[https://www.raspberrypi.org/downloads/raspbian/]
Version: May 2016
Release date: 2016-05-27
Dateiname:
2016-05-27-raspbian-jessie-lite.zip

Datei entpacken und auf Speicherkarte kopieren
  1. unzip ./2016-05-27-raspbian-jessie-lite.zip
  2. #unbedingt noch einmal überprüfen, dass /dev/sdc auch die Speicherkarte ist!
  3. dd bs=4M if=2016-05-27-raspbian-jessie-lite.img of=/dev/sdc
Den nächsten Schritt kann man weglassen, wenn man den PI über ein Netzwerkkabel anschließt.

(1.2) Optional / WiFi mit wpa_supplicant konfigurieren

Als nächster Schritt wird das Board eigene WiFi mit einem vorhandenen Wlan-Router konfiguriert.Somit sollte gleich nach dem Start des Raspberry Pi 3 eine Verbindung aufgebaut werden und man kann direkt im Heimnetz auf den Pi 3 zugreifen. Eine wirklich feine Sache!

Speicherkarte einhängen(mounten) und Konfigurationsdateien anpassen
  1. # /dev/sdc2 mounten ( /mnt/sd Mountpoint muss existieren, wenn nicht mit mkdir /mnt/sd erzeugen)
  2. mount /dev/sdc2 /mnt/sd
/etc/network/interfaces anpassen
  1. # /etc/network/interfaces anpassen
  2. nano /mnt/sd/etc/network/interfaces
Datei /etc/network/interfaces
  1. #
  2. # interfaces(5) file used by ifup(8) and ifdown(8)
  3. # Please note that this file is written to be used with dhcpcd
  4. # For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'
  5. # Include files from /etc/network/interfaces.d:
  6. source-directory /etc/network/interfaces.d
  7. auto lo
  8. auto wlan0
  9. iface lo inet loopback
  10. #iface eth0 inet manual
  11. iface eth0 inet dhcp
  12. allow-hotplug wlan0
  13. #iface wlan0 inet manual
  14. iface wlan0 inet dhcp
  15. wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
  16. allow-hotplug wlan1
  17. iface wlan1 inet manual
  18. wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
/etc/wpa_supplicant/wpa_supplicant.conf anpassen
  1. # /etc/wpa_supplicant/wpa_supplicant.conf anpassen
  2. nano /mnt/sd/etc/wpa_supplicant/wpa_supplicant.conf
Datei /etc/wpa_supplicant/wpa_supplicant.conf
  1. ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
  2. update_config=1
  3. network={
  4. ssid="WLAN_NAME"
  5. psk="WLAN_KEY"
  6. proto=RSN
  7. key_mgmt=WPA-PSK
  8. pairwise=CCMP
  9. auth_alg=OPEN
  10. }

WLAN_NAME: Hier trägt man die SSID des eigenen Wlan-Routers ein.
WLAN_KEY: Hier trägt man den WLAN-Netzwerkschlüssel des eigenen Wlan-Routers ein.

Die restlichen Parameter kurz aufgezählt:
proto: RSN (WPA2) oder WPA (WPA1)
key_mgmt: WPA-PSK (Default) oder WPA-EAP ("Enterprise Netzwerke")
pairwise: CCMP (WPA2) oder TKIP (WPA1)
auth_alg: OPEN, LEAP oder SHARED

Speicherkarte wieder aushängen(umount)
  1. umount /mnt/sd

Raspberry PI 3 mit SSD unten eingebaut vor Aktivierung des Bootladers noch mit MicroSD-Karte Raspberry PI 3 mit SSD(nicht angeschlossen) unten eingebaut vor Aktivierung des Bootladers noch mit MicroSD-Karte










(1.3) USB-Boot Aktivieren

Speicherkarte einhängen(mounten) und Konfigurationsdateien anpassen
  1. # /dev/sdc2 mounten ( /mnt/sd Mountpoint muss existieren, wenn nicht mit mkdir /mnt/sd erzeugen)
  2. mount /dev/sdc1 /mnt/sd

Hier wird der neue Bootmodus eingeschaltet.Weiter wird noch die Autoresize-Funktion ausgeschaltet. Diese maximiert den Speicherplatz nach dem 1. Booten der MicroSD-Karte, das ist hier aber unerwünscht, außer man verwendet eine kleine SD-Karte (4GB) da wir zu Schluss die MicroSD-Karte auf die SSD partionsweise kopieren, was schon bei 16GB sehr lange dauert und eigentlich keinen Sinn macht, da keine Daten kopiert werden sondern nur ungenutzter Karten-Speicherplatz.Auch hat die Autoresize-Funktion derzeit noch einen "Fehler", sie erkennt die SSD nicht und bricht mit einer Fehlermeldung ab, dass die SSD keine SD-Speicherkarte ist.

  1. #boot von usb aktivieren
  2. sudo echo program_usb_boot_mode=1 | sudo tee -a /mnt/sd/config.txt
  3. #kopie von cmdline erstellen
  4. sudo cp /mnt/sd/cmdline.txt /mnt/sd/cmdline.txt_old
  5. sudo nano /mnt/sd/cmdline.txt
  6. #Autoresize(Automatisches Maximieren des ext4-Dateisystems)
  7. #beim 1. Start von SD-Karte ausschalten -> Zeile ab init= alles löschen
  8. dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh
  9. #sollte nun so aussehen
  10. dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet
Speicherkarte wieder aushängen(umount)
  1. umount /mnt/sd

Jetzt kann die Speicherkarte dem Rechner entnommen und in den Raspberry Pi 3 eingesetzt werden.

USB2.0 nach 1.8 MicroSATA eingebaut USB; Kabel entfernt








USB2.0 nach 1.8 Micro-SATA Adapter eingebaut in Universalhalter, USB Kabel wurde entfernt.

(2.0) Vorbereitung der SSD

Vorbereitung:
SSD mit dem Rechner über einen geeigneten USB Adapter verbinden, hier wird angenommen, dass sich die SSD unter /dev/sdc ansprechen lässt.

(2.1) SSD mit Raspbian initialisieren

Raspbian auf SSD kopieren
  1. #unbedingt noch einmal überprüfen, dass /dev/sdc auch die SSD ist!
  2. dd bs=4M if=2016-05-27-raspbian-jessie-lite.img of=/dev/sdc

Hier sind wir auch schon fertig. Lediglich die passenden Partitionen wurden auf der SSD angelegt. Es ist keine Konfiguration notwendig, da wir die Partitionen der MicroSD-Karte direkt von Raspberry Pi auf die SSD kopieren werden.

(3.0) Raspberry Pi über MicroSD-Karte booten, im Netzwerk finden und per ssh verbinden

Die SSD nun vom Rechner trennen aber noch nicht am Raspberry Pi anschließen, sondern von der eingelegter MicroSD-Karte booten.

Hinweis 192.168.178.0/24 ist die Heimnetzwerkadresse des Wlan-Routers
  1. nmap -sL 192.168.178.0/24 | grep -i raspberrypi
  2. > Nmap scan report for raspberrypi.fritz.box (192.168.178.79)
  3. #Verbindung per ssh zum Pi 3 herstellen (Passwort: raspberry)
  4. ssh -p22 pi@192.168.178.79

Der wichtigste Schritt - die experimentelle Software einspielen um den Bootmode zu Aktivieren.

  1. #prüfen ob bootloader-mode für usb aktiviert ist
  2. #(sollte noch nicht aktiviert sein, da in Version 2016-05-27 noch nicht möglich)
  3. vcgencmd otp_dump | grep 17:
  4. #aktiv -> 17:3020000a
  5. #nicht aktiv -> 17:1020000a
  6. #update system
  7. sudo apt-get install screen
  8. sudo apt-get update
  9. sudo apt-get install rpi-update
  10. #um Platz zu schaffen, werden alle alten Module gelöscht
  11. sudo rm -r /lib/modules/*
  12. #nun wird die "Experimentelle" Software eingespielt
  13. #die ein Booten von USB ermöglicht
  14. sudo BRANCH=next rpi-update
  1. #raspberry neu starten und wieder einloggen
  2. sudo reboot
  3. #prüfen ob bootloader-mode für usb aktiviert ist
  4. #sollte nun aktiviert sein
  5. vcgencmd otp_dump | grep 17:
  6. #aktiv -> 17:3020000a
  • TIP:
    Diese MicroSD-Karte kann nun zum Aktivieren von weiteren Raspberry PI 3 Modellen verwendet werden.

(3.2) SSD anschließen und die beiden MicroSD Partitionen auf SSD kopieren

Nun kann man die SSD über den USB-Adaper an den Raspberry Pi anschließen.Der PI muss nicht neu gestartet werden, er sollte die SSD sofort erkennen und im "Normalfall", wenn keine weiteren USB-Speicher Geräte angeschlossen sind unter /dev/sda ansprechbar sein.

USB2.0 nach 1.8 MicroSATA Platine mit USB Kabel ; SunplusIT SPIF301











USB2.0 nach 1.8 MicroSATA Platine(Gehäuse wurde entfernt) mit USB Kabel / Chipset: SunplusIT SPIF301 - HL23X / LQFP 48

  1. #SSD an USB Anschließen und Partitionen auf SSD kopieren
  2. sudo dd bs=4M if=/dev/mmcblk0p1 of=/dev/sda1
  3. #hier sieht man nun den Vorteil, es müssen "nur" 1.3GB kopiert werden
  4. sudo dd bs=4M if=/dev/mmcblk0p2 of=/dev/sda2
  5. #Mount-Verzeichnis erzeugen
  6. sudo mkdir -p /mnt/sd
  7. #Bootspeichermedium Anpassen
  8. sudo mount /dev/sda1 /mnt/sd
  9. sudo sed -i "s,root=/dev/mmcblk0p2,root=/dev/sda2," /mnt/sd/cmdline.txt
  10. #Datei /mnt/sd/config.txt letzte Zeile (program_usb_boot_mode=1) auskommentieren und Datei speichern
  11. sudo nano /mnt/sd/config.txt
  12. #program_usb_boot_mode=1
  13. umount /mnt/sd
  14. #Datei fstab das Speichermedium anpassen
  15. sudo mount /dev/sda2 /mnt/sd
  16. sudo sed -i "s,/dev/mmcblk0p,/dev/sda," /mnt/sd/etc/fstab
  17. umount /mnt/sd
  18. #optional
  19. sudo e2fsck -f /dev/sda2
  20. #Raspberry herunterfahren
  21. sudo poweroff
  22. #Raspberry von Stromversorgung trennen und MicroSD-Karte entfernen, nun kann direkt von SSD gebootet werden

(4.0) Verwendete Hardware

Der Artikel bezieht sich auf eine Konfiguration aus:

  • Raspberry Pi 3 Model B
  • SanDisk Z400s Solid-State-Disk 32 GB intern mSATA (SD8SFAT-032G)
  • Kingston Interne mSATA SSD 60 GB SSDNow mS200 SMS200S3/60G mSATA / externe 5V Versorgung
  • Festplatte Kabel USB 2.0 Zu 4,572cm (1.8") Micro SATA II HDD Konverter Adapter
  • Mini PCIe PCI-e mSATA SSD auf 4,572cm (1.8") Micro SATA 52pol. Laufwerk Adapter
  • Universalhalter - Eigenentwurf 3D-Gedruckter Prototype
  • 4x Hexagonal M2.5,5.0mm A/F / L>=10mm Abstandshülsen

Controller im USB Adapter

Chipset: SunplusIT SPIF301 - HL23X / LQFP 48
Type: USB to Serial - ATAController

USB2.0 nach 1.8 MicroSATA Platine *Diese Angaben deinen nur, um genau die Konfiguration wiederzugeben, die in diesem Artikel verwendet wurde.Man kann eigentlich alle Speichermedien (SSD/HDD) die sich über einen USB-Adapter an einen PC anschließen lassen, auch am Raspberry Pi verwenden. Die Ansprechzeit nach dem Einschalten sollte aber <=2 Sekunden sein, sonst ist das Booten nicht möglich. Bei größeren SSD's oder HDD's sollten man jedoch nur die Datenleitungen(D+/D- und GND) an den USB-Bus des Paspberry anschließen und eine getrennte (ausreichend dimensionierte) Stromversorgung für Raspberry und die Festplatte mit den USB-Adapter verwenden. Wer nicht löten möchte, betreibt den Adapter über einen USB-Hub mit externer Stromversorgung. Auch sollte man unbedingt zuvor den folgenden Artikel lesen, bevor man Dinge an den USB-Port des Raspberry Pi 3 anschließt.
Link zum Artikel [https://www.raspberrypi.org/documentation/hardware/raspberrypi/usb/README.md]



Raspberry PI 3 mit SSD oben eingebaut Eine weitere Montagemöglichkeit der SSD mit dem Universalhalter.








(5.0) Performance

Noch ein Wort zur Performance von SD-Karten: [http://elinux.org/RPi_SD_cards#SD_card_performance]

Als Anhaltspunkt, das Kopieren der 1.3GB Partition von MicroSD-Karte auf SSD
sudo dd bs=4M if=/dev/mmcblk0p2 of=/dev/sda2
314+0 records in
314+0 records out
1317011456 bytes (1.3 GB) copied, 62.1758 s, 21.2 MB/s

Bisher wurden keine Performance Tests unternommen.

Links für weitere Informationen

Homepage Raspberry Pi

[https://www.raspberrypi.org/]

[https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/]

[https://www.raspberrypi.org/documentation/hardware/raspberrypi/usb/README.md]

Download: raspberry_pi3_ssd_case.stl

raspberry_pi3_ssd_case.stl | 28K
oder
wget http://www.messtechniklabor.de/downloads/h0011/raspberry_pi3_ssd_case.stl

Download von Thingiverse thing:1710576

[http://www.thingiverse.com/thing:1710576]

nächster Artikel