Raspberry PI & Festplatte

Raspberry PI von Festplatte Booten.

Um einen Raspberry PI von einer externen Festplatte booten zu lassen benötigen wir einen Raspberry PI , eine 2.5 Zoll Festplatte , eine Stromversorgung die den dafür benötigten Strom zur
verfügung stellt.

Verbaute Komponenten:

  • Raspberry PI 3
  • Festplatte 2.5 Zoll Samsung mit einer Kapazität von 320GB.
  • Externe Stromversorgung, Schaltnetzteil MEANWELL RS-25-5, 5 V-/5 A
  • USB Sata Adapter (muß ein USB 2.0 Adapter sein mit Y-USB Kabel)

Der USB Sata Adapter muß 2.0 sein. Da der Raspberry PI 3 keine
USB 3.0 hat und diese mehr Anschlußpins besitzt ist das wegen der Stromversorgung problematisch.

Der USB 2.0 Port liefert zudem nicht den benötigten Strom und es kann zu beschädigungen der Festplatte
kommen.

Vorbereitung:

Der Raspberry PI sollte schon betriebsbereit sein. Im Netz gibt es genug anleitungen wie man
ein Linux Image unter MacOS  aufspielt, darauf möchte ich jetzt nicht näher eingehen.
Die Festplatte sollte nun mit dem Raspberry PI verbunden werden. Hierzu wird das Y-Kabel eingesteckt,
und der Raspberry PI gestartet.

Nachdem der Raspberry PI mit dem Booten fertig ist loggen wir uns entweder direct ein, oder man
geht über ssh auf die Console.

Als erstes schauen wir mit dem befehlt lsusb nach ob die Festplatte korrekt erkannt wir:

pi@Octoprint:/ $ lsusb
Bus 001 Device 004: ID 1bcf:0c31 Sunplus Innovation Technology Inc. SPIF30x Serial-ATA bridge
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Im Verzeichniss /dev/ sollte die Festplatte mit sda eingetragen sein:

pi@Octoprint:/ $ ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2

 

Festplatte Partitionieren und Formatieren.

Um die Festplatte zu Partitionieren gibt es ebenfalls mehrere möglichkeiten.
Ich beschreibe die variante mit cfdisk (ist etwas übersichtlicher).

pi@Octoprint:/ $ sudo cfdisk

Falls die Festplatte noch alte Partitionen besitzt, werden diese zuerst alle gelöscht.
Im Anschluss legen wir 2 Neue Patitionen an.
Die erste (/dev/sda1) ist die SWAP Partition (grösse 4GB) und die zweite (/dev/sda2) die eigentliche rootpartition.
Im Anschluss schreiben wir die Partitionstabelle auf die Festplatte und beenden cfdisk.

Danach müssen beide Paritionen noch formatiert werden.
Die Swap Partition aktivieren wir mit dem befehl:

pi@Octoprint:/ $ sudo mkswap /dev/sda1

Die Rootpartition wird mit:

pi@Octoprint:/ $ sudo mkfs.ext4 /dev/sda2

Formatiert.
Damit ist die Festplatte nun vorbereitet.

Im Internet gibt es mehrere Varianten um das Aktuelle Image auf die Festplatte zu Installieren. Ich nutze die schnellere Variante.

pi@Octoprint:/ $ sudo dd if=/dev/mmcblk0p2 of=/dev/sda2 bs=4M

mit dieser Eingabe wird nun die Root Partition von der SD-Karte auf die 2. Partition der Festplatte geschrieben (das dauert etwas).
Ist der Raspberry PI fertig, wird die Festplatte erst gemounted, da hier noch ein paar eintragungen gemacht werden müssen.

pi@Octoprint:/ $ sudo mount /dev/sda2 /mnt

danach wird die Datei mit fstab editiert.

pi@Octoprint:/ $ sudo nano /mnt/etc/fstab

Der Inhalt sollte so abgeändert werden.
proc                /proc           proc    defaults          0       0
/dev/mmcblk0p1      /boot           vfat    defaults          0       2
/dev/sda2           /               ext4    defaults,noatime  0       1
/dev/sda1                    none   swap    sw                0       0
#/dev/mmcblk0p2     /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that


Danach speichern wir die Datei ab und beenden nano.Die Festplatte ist jetzt soweit vorbereitet.Jetzt muß nur noch dafür gesorgt werden,
das der Raspberry PI von dieser auch booten kann.Dazu wechseln wir auf das Root Verzeichnis der SD-Karte und ändern die cmdline.txt
so ab:

pi@Octoprint:/ $ sudo nano /boot/cmdline.txt

die Zeile sollte dann so aussehen:

dwc_otg.lpm_enable=0 dcw_otg.speed=0 console=serial0,115200 console=tty1 root=/dev/sda2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

Danach speichern wir die Datei und beenden nano.

 

Die Swap Datei der SD-Karte wird mit:

pi@Octoprint:/ $ sudo service dphys-swapfile stop

Entfernt, da jetzt die Swap Partition der Festplatte automatisch eingebunden und verwendet wird.

Jetzt solltet ihr den Raspberry PI neu starten.
Wenn alles geklappt hat, sollte lediglich noch die root Partition vergrössert werden:

pi@Octoprint:/ $ sudo resize2fs /dev/sda2

Zum Schluss habe ich noch das überprüfen der Festplatte bei jedem Start / Neustart aktiviert.

pi@Octoprint:/ $ sudo tune2fs -c 1 /dev/sda2