Benutzer-Werkzeuge

Webseiten-Werkzeuge


howto:raspberry_pi_mit_externer_usb_festplatte_betreiben

RaspberryPi von USB-SSD booten

In diesem Artikel zeige ich die Schritte, um einen Raspberry Pi mit einer externen (SSD) Festplatte zu betreiben. Der Pi kann leider nur von einer SD-Karte booten. Deshalb habe ich eine 16GB SSD per USB angeschlossen (von der ich nur 8GB nutze). Das Ziel wird es sein, dass zwar von der SD-Karte gebootet wird, alle weiteren Dateien jedoch auf der SSD liegen. Die SD-Karte enthält zwei Partitionen. Eine Boot-Partition und eine Daten Partition. In meinem Fall ist es eine 8GB Karte.

Wer statt einer USB-SSD-Platte eine normale USB-Festplatte anschließen will, sollte den max. USB-Strom den der USB-Port liefern kann erhöhen. Dazu unter /boot/ die Datei config.txt editieren und am Ende der Datei den Eintrag 'max_usb_current=1' (ohne die Anführungsstriche) einfügen. Danach neu booten. Jetzt kann der USB-Port 1,2A liefern, ein entsprechend starkes Netzteil (2,5 - 3 A ) vorausgesetzt.

Ein „df -h“ ertellt mir diese Auflistung.

Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
rootfs7,2G3,7G3,3G54%/
/dev/root7,2G3,7G3,3G54%/
devtmpfs235M0235M0%/dev
tmpfs49M400K49M1%/run
tmpfs5,0M05,0M0%/run/lock
tmpfs98M4,0K98M1%/run/shm
/dev/mmcblk0p156M19M38M34%/boot

Das rootfs zeigt eigentlich auf /dev/mmcblk0p2, was die zweite Partition der SD-Karte ist.

Ein Backup fertige ich wöchentlich nach dieser Anleitung an: http://www.linux-tips-and-tricks.de/raspiBackup Prinzipiell würde es auch reichen, nur die root Partition (die Große, auf der die Daten liegen) Wiederherzustellen. Ich habe jedoch der Einfachheit halber das gesammte Backup genommen.

Restore auf der SSD

Das Restore habe ich mit diesem Befehl durchgeführt:

sudo dd if=/mnt/BackupOnNAS/RaspberryPi/raspberrypi/raspberrypi-dd-backup-20140106-175539 of=/dev/sda bs=4M

Ein „sudo fdisk -l“ liefert nun diese Ausgabe:

Disk /dev/mmcblk0: 7948 MB, 7948206080 bytes
4 heads, 16 sectors/track, 242560 cylinders, total 15523840 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00017b69

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            8192      122879       57344    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          122880    15523839     7700480   83  Linux

Disk /dev/sda: 16.0 GB, 15999336448 bytes
64 heads, 32 sectors/track, 15258 cylinders, total 31248704 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00017b69

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            8192      122879       57344    c  W95 FAT32 (LBA)
/dev/sda2          122880    15523839     7700480   83  Linux

Somit haben wir ein Abbild der SD-Karte auf der SSD Erstellt. D.h. auch, dass die zweite Partition die Datenpartition ist! Nach dem Restore wird noch geprüft, ob die Root Partition in Ordnung ist. „sudo e2fsck /dev/sda2“ liefert

e2fsck 1.42.5 (29-Jul-2012)
/dev/sda2: sauber, 134179/483328 Dateien, 1029190/1925120 Blöcke

Einhängen der SSD

sudo mkdir /mnt/ssd“ erstellt ein Verzeichnis, in das wir per „sudo mount /dev/sda2 /mnt/ssd“ die Root-Partition der SSD mounten. Mit „cd /mnt/ssd“ und „ls“ sehen wir nun die Inhalte der SSD.

Ändern der Mount-Punkte

Wird später von der Root-Partition der SSD gebootet, sollte diese auch auf sich selbst und nicht die SD-Karte zugreifen. Dafür müssen wir den Eintrag per fstab Ändern. „sudo nano /mnt/ssd/etc/fstab“ listet die Einträge auf:

proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults          0       2
/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1

Anstatt mmcblk0p2 wollen wir /dev/sda2 nutzen. Daher ist der Eintrag entsprechend abzuändern:

proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults          0       2
/dev/sda2       /               ext4    defaults,noatime  0       1

[Ctrl]+[o] speichert und [Ctrl] + [x] verlässt den Editor wieder…

Bevor wir weitermachen, wird die SSD wieder entladen: „sudo umount /dev/sda2“ (kommt die Meldung „umount: /mnt/ssd: device is busy.“, so müsst ihr mit „cd ..“ ein Verzeichnis nach oben gehen. Danach klappt es)

In der Boot-Partition der SD-Karte tragen wir nun die Root-Partition der SSD ein. „sudo nano /boot/cmdline.txt“ bringt den Editor:

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

Wir möchten anstatt der SD-Karte, die SSD nutzen:

dwc_otg.lpm_enable=0 console=tty1 root=/dev/sda2 rootfstype=ext4 elevator=deadline rootwait
sda2 ist wieder die zweite/Root-Partition der SSD

Fertig?

Die Spannung steigt. Ein Reboot mit „sudo reboot“… Kommt der PI wieder hoch? … … Ja! Er ist wieder da. Ich kann mich per ssh einloggen.

Wie finde ich jetzt heraus ob wirklich die SSD angesprochen wird? Vorhin habe ich das Verzeichnis /mnt/ssd angelegt. Dieses existiert unter /mnt nicht. D.h. die SSD läuft!

Quellen

howto/raspberry_pi_mit_externer_usb_festplatte_betreiben.txt · Zuletzt geändert: 2015/11/23 14:06 von udo1